diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-03-11 18:11:27 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-03-11 18:16:56 -0700 |
commit | 15655a12461c0a46c0a50af7e6143cd4258c89af (patch) | |
tree | b3f32e62d3e540db0cc4739581b4ac013e2a1a2a /subx_opcodes | |
parent | 39eb1e4963731816e28ffa910098e2de622d8de0 (diff) | |
download | mu-15655a12461c0a46c0a50af7e6143cd4258c89af.tar.gz |
6126 - support 8-byte register names
Using these is quite unsafe. But what isn't, here?
Diffstat (limited to 'subx_opcodes')
-rw-r--r-- | subx_opcodes | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/subx_opcodes b/subx_opcodes index 688a6e26..6706a695 100644 --- a/subx_opcodes +++ b/subx_opcodes @@ -50,6 +50,7 @@ Opcodes currently supported by SubX: 5e: pop top of stack to ESI (pop) 5f: pop top of stack to EDI (pop) 68: push imm32 to stack (push) + 69: multiply rm32 by imm32 and store result in r32 72: jump disp8 bytes away if lesser (unsigned), if CF is set (jcc/jb/jnae) 73: jump disp8 bytes away if greater or equal (unsigned), if CF is unset (jcc/jae/jnb) 74: jump disp8 bytes away if equal, if ZF is set (jcc/jz/je) @@ -99,16 +100,16 @@ Opcodes currently supported by SubX: 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 92: set rm32 to 1 if lesser (unsigned), if CF is set, 0 otherwise (setcc/setb/setnae) - 0f 93: set rm32 to 1 if greater or equal (unsigned), if CF is unset, 0 otherwise (setcc/setae/setnb) - 0f 94: set rm32 to 1 if equal, if ZF is set, 0 otherwise (setcc/setz/sete) - 0f 95: set rm32 to 1 if not equal, if ZF is not set, 0 otherwise (setcc/setnz/setne) - 0f 96: set rm32 to 1 if lesser or equal (unsigned), if ZF is set or CF is set, 0 otherwise (setcc/setbe/setna) - 0f 97: set rm32 to 1 if greater (unsigned), if ZF is unset and CF is unset, 0 otherwise (setcc/seta/setnbe) - 0f 9c: set rm32 to 1 if lesser (signed), if SF != OF, 0 otherwise (setcc/setl/setnge) - 0f 9d: set rm32 to 1 if greater or equal (signed), if SF == OF, 0 otherwise (setcc/setge/setnl) - 0f 9e: set rm32 to 1 if lesser or equal (signed), if ZF is set or SF != OF, 0 otherwise (setcc/setle/setng) - 0f 9f: set rm32 to 1 if greater (signed), if ZF is unset and SF == OF, 0 otherwise (setcc/setg/setnle) + 0f 92: set r8/m8-at-rm32 to 1 if lesser (unsigned), if CF is set, 0 otherwise (setcc/setb/setnae) + 0f 93: set r8/m8-at-rm32 to 1 if greater or equal (unsigned), if CF is unset, 0 otherwise (setcc/setae/setnb) + 0f 94: set r8/m8-at-rm32 to 1 if equal, if ZF is set, 0 otherwise (setcc/setz/sete) + 0f 95: set r8/m8-at-rm32 to 1 if not equal, if ZF is not set, 0 otherwise (setcc/setnz/setne) + 0f 96: set r8/m8-at-rm32 to 1 if lesser or equal (unsigned), if ZF is set or CF is set, 0 otherwise (setcc/setbe/setna) + 0f 97: set r8/m8-at-rm32 to 1 if greater (unsigned), if ZF is unset and CF is unset, 0 otherwise (setcc/seta/setnbe) + 0f 9c: set r8/m8-at-rm32 to 1 if lesser (signed), if SF != OF, 0 otherwise (setcc/setl/setnge) + 0f 9d: set r8/m8-at-rm32 to 1 if greater or equal (signed), if SF == OF, 0 otherwise (setcc/setge/setnl) + 0f 9e: set r8/m8-at-rm32 to 1 if lesser or equal (signed), if ZF is set or SF != OF, 0 otherwise (setcc/setle/setng) + 0f 9f: set r8/m8-at-rm32 to 1 if greater (signed), if ZF is unset and SF == OF, 0 otherwise (setcc/setg/setnle) 0f af: multiply rm32 into r32 (imul) Run `bootstrap help instructions` for details on words like 'r32' and 'disp8'. For complete details on these instructions, consult the IA-32 manual (volume 2). |