diff options
Diffstat (limited to 'subx/opcodes')
-rw-r--r-- | subx/opcodes | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/subx/opcodes b/subx/opcodes index d8e38a43..bebf3052 100644 --- a/subx/opcodes +++ b/subx/opcodes @@ -89,12 +89,16 @@ Opcodes currently supported by SubX: f4: halt (hlt) 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 82: jump disp32 bytes away if lesser (unsigned), if CF is set (jcc/jb/jnae) + 0f 83: jump disp32 bytes away if greater or equal (unsigned), if CF is unset (jcc/jae/jnb) 0f 84: jump disp32 bytes away if equal, if ZF is set (jcc/jz/je) 0f 85: jump disp32 bytes away if not equal, if ZF is not set (jcc/jnz/jne) - 0f 8c: jump disp32 bytes away if lesser, if SF != OF (jcc/jl/jnge) - 0f 8d: jump disp32 bytes away if greater or equal, if SF == OF (jcc/jge/jnl) - 0f 8e: jump disp32 bytes away if lesser or equal, if ZF is set or SF != OF (jcc/jle/jng) - 0f 8f: jump disp32 bytes away if greater, if ZF is unset and SF == OF (jcc/jg/jnle) + 0f 86: jump disp8 bytes away if lesser or equal (unsigned), if ZF is set or CF is set (jcc/jbe/jna) + 0f 87: jump disp32 bytes away if greater (unsigned), if ZF is unset and CF is unset (jcc/ja/jnbe) + 0f 8c: jump disp32 bytes away if lesser (signed), if SF != OF (jcc/jl/jnge) + 0f 8d: jump disp32 bytes away if greater or equal (signed), if SF == OF (jcc/jge/jnl) + 0f 8e: jump disp32 bytes away if lesser or equal (signed), if ZF is set or SF != OF (jcc/jle/jng) + 0f 8f: jump disp32 bytes away if greater (signed), if ZF is unset and SF == OF (jcc/jg/jnle) 0f af: multiply rm32 into r32 (imul) Run `subx help instructions` for details on words like 'r32' and 'disp8'. For complete details on these instructions, consult the IA-32 manual (volume 2). |