diff options
author | iximeow <me@iximeow.net> | 2024-06-23 15:15:50 -0700 |
---|---|---|
committer | iximeow <me@iximeow.net> | 2024-06-23 15:15:50 -0700 |
commit | 2002347272391dc6a70d83fe8293f2ce35ed26ee (patch) | |
tree | 2afdfc0e24a07237752377f2cd30d243c465488b /src/long_mode/mod.rs | |
parent | 2ac46a98585b93f62961fdd82a1f2d1266761305 (diff) |
add additional `call` test cases
fix 32-bit 66-prefixed ff /2 call not having 16-bit operands
fix momentary regression in rendering `call` instructions to string
Diffstat (limited to 'src/long_mode/mod.rs')
-rw-r--r-- | src/long_mode/mod.rs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs index fab8fde..3c25506 100644 --- a/src/long_mode/mod.rs +++ b/src/long_mode/mod.rs @@ -7660,6 +7660,8 @@ fn read_operands< .with_id(modrm_start - 8) ); if instruction.operands[0] == OperandSpec::RegMMM { + // in 64-bit mode, operand size overrides do not actually shink the operand for + // `call`/`jmp`. if opcode == Opcode::CALL || opcode == Opcode::JMP { instruction.regs[1].bank = RegisterBank::Q; if opcode == Opcode::CALL { |