diff options
| author | iximeow <me@iximeow.net> | 2024-04-02 00:42:29 -0700 | 
|---|---|---|
| committer | iximeow <me@iximeow.net> | 2024-04-02 00:42:32 -0700 | 
| commit | 27c0d462eec5200be1e4cc5a24353a66b97c159c (patch) | |
| tree | 596c9aedf55686153e6d7e1d10500b1c20421c1b | |
| parent | bbdf78c061b6e685d1992dcdeac692fc2f8f0d34 (diff) | |
swap test order for segment override applicability
it is almost always the case that self.prefixes.segment == Segment::DS,
meaning testing for it first avoids checking
`self.operands[op].is_memory()` later. this overall avoids a few
instructions in the typical path, rather than checking `is_memory()`
first (which would always be true in the places this function is called
from)
| -rw-r--r-- | src/long_mode/mod.rs | 4 | 
1 files changed, 2 insertions, 2 deletions
diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs index f58976a..5bdd786 100644 --- a/src/long_mode/mod.rs +++ b/src/long_mode/mod.rs @@ -4400,8 +4400,8 @@ impl Instruction {              },              _ => {                  // most operands are pretty simple: -                if self.operands[op as usize].is_memory() && -                    self.prefixes.segment != Segment::DS { +                if self.prefixes.segment != Segment::DS && +                    self.operands[op as usize].is_memory() {                      Some(self.prefixes.segment)                  } else {                      None  | 
