diff --git a/src/Nand2Tetris/VM.hs b/src/Nand2Tetris/VM.hs index 06b24ed..30a0d34 100644 --- a/src/Nand2Tetris/VM.hs +++ b/src/Nand2Tetris/VM.hs @@ -259,7 +259,8 @@ compileInstruction instr = do labDone <- nextLabelId let rest = [ Code (A (Label "SP")), - Code (C [RegD] (SRegMinus1 RegM) JNone), + Code (C [RegA] (SRegMinus1 RegM) JNone), + Code (C [RegD] (SReg RegM) JNone), Code (A (Label labEq)), Code (C [] (SReg RegD) jumpType), Code (A (Label "SP")), @@ -330,13 +331,13 @@ compileInstruction instr = do Code (C [RegD] (SReg RegA) JNone), Code (A (Label regName)), Code (C [RegD] SDPlusM JNone), - Code (A (Label "R15")), + Code (A (Imm 15)), Code (C [RegM] (SReg RegD) JNone), Code (A (Label "SP")), Code (C [RegA] (SReg RegM) JNone), Code (C [RegD] (SReg RegM) JNone), - Code (A (Label "R15")), + Code (A (Imm 15)), Code (C [RegA] (SReg RegM) JNone), Code (C [RegM] (SReg RegD) JNone) ]