From f9f419af71a89740448a54f765b89d20e5519d58 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sat, 8 May 2021 21:16:23 -0700 Subject: support checking overflow flag everywhere --- subx_opcodes | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'subx_opcodes') diff --git a/subx_opcodes b/subx_opcodes index f8bdc045..19fa1dbd 100644 --- a/subx_opcodes +++ b/subx_opcodes @@ -51,6 +51,8 @@ Opcodes currently supported by SubX: 5f: pop top of stack to EDI (pop) 68: push imm32 to stack (push) 69: multiply rm32 by imm32 and store result in r32 (imul) + 70: jump disp8 bytes away if OF is set (jcc/jo) + 71: jump disp8 bytes away if OF is unset (jcc/jno) 72: jump disp8 bytes away if lesser (addr, float), if CF is set (jcc/jb/jnae) 73: jump disp8 bytes away if greater or equal (addr, float), if CF is unset (jcc/jae/jnb) 74: jump disp8 bytes away if equal, if ZF is set (jcc/jz/je) @@ -91,6 +93,8 @@ Opcodes currently supported by SubX: f7: negate/multiply/divide rm32 (with EAX and EDX if necessary) depending on subop (neg/mul/idiv) ff: increment/decrement/jump/push/call rm32 based on subop (inc/dec/jmp/push/call) 0f 2f: compare: set CF if x32 < xm32 (comiss) + 0f 80: jump disp32 bytes away if OF is set (jcc/jo) + 0f 81: jump disp32 bytes away if OF is unset (jcc/jno) 0f 82: jump disp32 bytes away if lesser (addr, float), if CF is set (jcc/jb/jnae) 0f 83: jump disp32 bytes away if greater or equal (addr, float), if CF is unset (jcc/jae/jnb) 0f 84: jump disp32 bytes away if equal, if ZF is set (jcc/jz/je) -- cgit 1.4.1-2-gfad0