about summary refs log tree commit diff stats
path: root/subx_opcodes
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-03-11 18:11:27 -0700
committerKartik Agaram <vc@akkartik.com>2020-03-11 18:16:56 -0700
commit15655a12461c0a46c0a50af7e6143cd4258c89af (patch)
treeb3f32e62d3e540db0cc4739581b4ac013e2a1a2a /subx_opcodes
parent39eb1e4963731816e28ffa910098e2de622d8de0 (diff)
downloadmu-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_opcodes21
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).