瀏覽代碼

step2: scalars + MC64 backend — SymTab, MGen emitter, 25/25 tests green; fix bit_in operand order

Eric Streit 1 月之前
父節點
當前提交
d08ce94970
共有 4 個文件被更改,包括 5 次插入 和 3 次删除
  1. 5 3
      Interpreter.mod
  2. 二進制
      Interpreter.o
  3. 二進制
      mc64
  4. 二進制
      mcint

+ 5 - 3
Interpreter.mod

@@ -691,10 +691,12 @@ BEGIN
     | 0E6H :  (* bit_or *)
         b := Pop () ; a := Pop () ;
         Push (BitOp (a, b, 1)) ;
-    | 0E7H :  (* bit_in *)
+    | 0E7H :  (* bit_in : stack [element, set] (set on top),
+                 per spec §11.8 and the original MCode
+                 "op := Pop(); Push(Pop() IN BITSET(op))" *)
         b := Pop () ; a := Pop () ;
-        IF b < 64 THEN
-          PushBool (BitOp (a, Shl64 (1, VAL (CARDINAL, b)), 0) # 0) ;
+        IF a < 64 THEN
+          PushBool (BitOp (b, Shl64 (1, VAL (CARDINAL, a)), 0) # 0) ;
         ELSE
           Push (0) ;
         END ;

二進制
Interpreter.o


二進制
mc64


二進制
mcint