subx: now starting on subtraction instructions.
This commit is contained in:
Kartik K. Agaram 2017-10-12 22:28:06 -07:00
parent 763396e533
commit ed3c266e2d
2 changed files with 18 additions and 2 deletions

View File

@ -83,7 +83,7 @@ End_of_program = 0;
+load: 4 -> 0c
+load: 5 -> 0d
+run: add imm32 0x0d0c0b0a to reg EAX
+reg: storing 0x0d0c0b0a in reg EAX
+run: storing 0x0d0c0b0a
:(code)
// helper for tests: load a program into memory from a textual representation
@ -107,7 +107,6 @@ void run_one_instruction() {
int32_t arg2 = imm32();
trace(2, "run") << "add imm32 0x" << HEXWORD << arg2 << " to reg EAX" << end();
BINARY_ARITHMETIC_OP(+, Reg[EAX].i, arg2);
trace(98, "reg") << "storing 0x" << HEXWORD << Reg[EAX].i << " in reg EAX" << end();
break;
}
// End Single-Byte Opcodes

View File

@ -118,3 +118,20 @@ case 0x03: { // add r/m32 to r32
BINARY_ARITHMETIC_OP(+, Reg[arg1].i, *arg2);
break;
}
//:
:(scenario sub_imm32_from_eax)
% Reg[EAX].i = 0x0d0c0baa;
# op ModR/M SIB displacement immediate
2d 0a 0b 0c 0d # subtract 0x0d0c0b0a from EAX (reg 0)
+run: subtract imm32 0x0d0c0b0a from reg EAX
+run: storing 0x000000a0
:(before "End Single-Byte Opcodes")
case 0x2d: { // subtract imm32 from EAX
int32_t arg2 = imm32();
trace(2, "run") << "subtract imm32 0x" << HEXWORD << arg2 << " from reg EAX" << end();
BINARY_ARITHMETIC_OP(-, Reg[EAX].i, arg2);
break;
}