diff options
author | iximeow <me@iximeow.net> | 2020-02-16 02:02:32 -0800 |
---|---|---|
committer | iximeow <me@iximeow.net> | 2020-02-16 02:02:32 -0800 |
commit | 78d0c21c475fce65c36e64a36c26c689bee0faae (patch) | |
tree | b08d6b077e799e7e42902645bcd289aa22be5649 | |
parent | fb41b5261b49f67e67e87e3a7401d748781d6c29 (diff) |
embarassingly had OperandSpec variants for modrm displacement == 0 backwards
-rw-r--r-- | src/long_mode/mod.rs | 8 | ||||
-rw-r--r-- | test/test.rs | 1 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs index d74ebe4..954ae95 100644 --- a/src/long_mode/mod.rs +++ b/src/long_mode/mod.rs @@ -4457,16 +4457,16 @@ fn read_sib<T: Iterator<Item=u8>>(bytes_iter: &mut T, instr: &mut Instruction, m if disp == 0 { if modbits == 0 { - OperandSpec::RegScaleDisp + OperandSpec::RegScale } else { - OperandSpec::RegIndexBaseScaleDisp + OperandSpec::RegIndexBaseScale } } else { instr.disp = disp as i64 as u64; if modbits == 0 { - OperandSpec::RegScale + OperandSpec::RegScaleDisp } else { - OperandSpec::RegIndexBaseScale + OperandSpec::RegIndexBaseScaleDisp } } } diff --git a/test/test.rs b/test/test.rs index 896ffaa..1bac590 100644 --- a/test/test.rs +++ b/test/test.rs @@ -476,6 +476,7 @@ fn test_control_flow() { test_display(&[0x0f, 0x86, 0x8b, 0x01, 0x00, 0x00], "jna 0x18b"); test_display(&[0x74, 0x47], "jz 0x47"); test_display(&[0xff, 0x15, 0x7e, 0x72, 0x24, 0x00], "call [rip + 0x24727e]"); + test_display(&[0xff, 0x24, 0xcd, 0x70, 0xa0, 0xbc, 0x01], "jmp [rcx * 8 + 0x1bca070]"); test_display(&[0xc3], "ret"); } |