about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--amd64.e18
1 files changed, 11 insertions, 7 deletions
diff --git a/amd64.e b/amd64.e
index e76f33a..a6503f0 100644
--- a/amd64.e
+++ b/amd64.e
@@ -497,8 +497,9 @@ s" :cc-greater" keyword
     ~ (equality result, output point)
     ~ If the R/M register was rsp, we need an SIB byte; otherwise, skip it.
     swap {
-      0 4 :rsp reg64 sib
+      0 4 :rsp reg64
       ~ : drop-subitem
+      sib
     } if
     exit
   } if
@@ -515,8 +516,9 @@ s" :cc-greater" keyword
   reg64 1 3unroll modrm
   ~ If the R/M register was rsp, we need an SIB byte; otherwise, skip it.
   3roll {
-    0 4 :rsp reg64 sib
+    0 4 :rsp reg64
     ~ : drop-subitem
+    sib
   } if
 
   ~ The displacement byte.
@@ -549,8 +551,9 @@ s" :cc-greater" keyword
   reg64 2 3unroll modrm
   ~ If the R/M register was rsp, we need an SIB byte; otherwise, skip it.
   3roll {
-    0 4 :rsp reg64 sib
+    0 4 :rsp reg64
     ~ : drop-subitem
+    sib
   } if
 
   ~   The displacement value. This is subject to the same considerations as in
@@ -644,10 +647,10 @@ s" :cc-greater" keyword
 
 ~ (output point, target register -- output point)
 : pop-reg64
-  ~ : 1 # pop-reg64
+  ~ : 0 # pop-reg64
   reg64 0x58 opcodereg ;
 : pop-extrareg64
-  ~ : 2 # pop-extrareg64
+  ~ : 0 # pop-extrareg64
   swap rex-b swap extrareg64 0x58 opcodereg ;
   ~   Note the use of the B rex bit here; this instruction puts the register
   ~ number in the opcode field, so it uses Table 3-1.
@@ -728,16 +731,17 @@ s" :cc-greater" keyword
 
 ~ (output point, source register, target register -- output point)
 : mov-reg64-reg64
-  ~ : 1 # # mov-reg64-reg64
+  ~ : 1 #swap # # mov-reg64-reg64
   3roll rex-w 0x89 pack8 3unroll
   swap reg64 swap addressing-reg64 ;
 : mov-indirect-reg64-reg64
-  ~ : 1 # # mov-indirect-reg64-reg64
+  ~ : 1 #swap # # mov-indirect-reg64-reg64
   3roll rex-w 0x89 pack8 3unroll
   swap reg64 swap addressing-indirect-reg64 ;
 
 ~ (output point, source register, target register, target displacement value
 ~  -- output point)
+~ TODO IAK this is where the verification is up to
 : mov-disp8-reg64-reg64
   ~ : 1 # # # mov-disp8-reg64-reg64
   4 roll rex-w 0x89 pack8 4 unroll