Jelajahi Sumber

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

Eric Streit 3 minggu lalu
induk
melakukan
d08ce94970
4 mengubah file dengan 5 tambahan dan 3 penghapusan
  1. 5 3
      Interpreter.mod
  2. TEMPAT SAMPAH
      Interpreter.o
  3. TEMPAT SAMPAH
      mc64
  4. TEMPAT SAMPAH
      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 ;

TEMPAT SAMPAH
Interpreter.o


TEMPAT SAMPAH
mc64


TEMPAT SAMPAH
mcint