Selaa lähdekoodia

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

Eric Streit 3 viikkoa sitten
vanhempi
commit
d08ce94970
4 muutettua tiedostoa jossa 5 lisäystä ja 3 poistoa
  1. 5 3
      Interpreter.mod
  2. BIN
      Interpreter.o
  3. BIN
      mc64
  4. BIN
      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 ;

BIN
Interpreter.o


BIN
mc64


BIN
mcint