diff options
Diffstat (limited to 'snug-clean/src/Snug/Compile/Simulate.icl')
-rw-r--r-- | snug-clean/src/Snug/Compile/Simulate.icl | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/snug-clean/src/Snug/Compile/Simulate.icl b/snug-clean/src/Snug/Compile/Simulate.icl index 57f249c..ab13cde 100644 --- a/snug-clean/src/Snug/Compile/Simulate.icl +++ b/snug-clean/src/Snug/Compile/Simulate.icl @@ -59,32 +59,32 @@ storeStackValue (SVImmediate (Immediate i)) doffset dreg [ StoreWord R0 doffset dreg ] | 0 <= i && i < 0x10000 = add - [ OrImmediate TempImm R0 (Immediate i) - , StoreWord TempImm doffset dreg + [ OrImmediate (TempImm 0) R0 (Immediate i) + , StoreWord (TempImm 0) doffset dreg ] | 0 > i && i >= -0x8000 = add - [ AddImmediate Signed TempImm R0 (Immediate i) - , StoreWord TempImm doffset dreg + [ AddImmediate Signed (TempImm 0) R0 (Immediate i) + , StoreWord (TempImm 0) doffset dreg ] | otherwise = add - [ LoadUpperImmediate TempImm (Immediate (i >> 16)) - , OrImmediate TempImm TempImm (Immediate (i bitand 0xffff)) - , StoreWord TempImm doffset dreg + [ LoadUpperImmediate (TempImm 0) (Immediate (i >> 16)) + , OrImmediate (TempImm 0) (TempImm 0) (Immediate (i bitand 0xffff)) + , StoreWord (TempImm 0) doffset dreg ] storeStackValue (SVImmediate imm=:(Address _ _)) doffset dreg = add - [ LoadAddress TempImm imm - , StoreWord TempImm doffset dreg + [ LoadAddress (TempImm 0) imm + , StoreWord (TempImm 0) doffset dreg ] storeStackValue (SVRegOffset reg 0) doffset dreg = add [ StoreWord reg doffset dreg ] storeStackValue (SVRegOffset reg offset) doffset dreg = add - [ AddImmediate Signed TempImm reg (Immediate offset) - , StoreWord TempImm doffset dreg + [ AddImmediate Signed (TempImm 0) reg (Immediate offset) + , StoreWord (TempImm 0) doffset dreg ] storeStackValue (SVIndirect offset reg) doffset dreg = add - [ LoadWord TempImm offset reg - , StoreWord TempImm doffset dreg + [ LoadWord (TempImm 0) offset reg + , StoreWord (TempImm 0) doffset dreg ] buildCons :: !Label !Int -> Simulator () @@ -126,8 +126,8 @@ indirectAndEval = SVRegOffset HeapPtr offset -> add // Build indirection - [ LoadAddress TempImm (Address 0 (functionLabel "" NodeEntry "indir")) - , StoreWord TempImm 0 FrontEvalPtr + [ LoadAddress (TempImm 0) (Address 0 (functionLabel "" NodeEntry "indir")) + , StoreWord (TempImm 0) 0 FrontEvalPtr ] >>| storeStackValue sv 4 FrontEvalPtr >>| getState >>= \{hp_offset} -> @@ -141,8 +141,8 @@ indirectAndEval = // We only need to overwrite the descriptor with an indirection getState >>= \{hp_offset} -> add - [ LoadAddress TempImm (Address 0 (functionLabel "" NodeEntry "indir")) - , StoreWord TempImm 0 FrontEvalPtr + [ LoadAddress (TempImm 0) (Address 0 (functionLabel "" NodeEntry "indir")) + , StoreWord (TempImm 0) 0 FrontEvalPtr , Jump NoLink (Direct (Address 0 "eval")) , AddImmediate Signed HeapPtr HeapPtr (Immediate hp_offset) ] |