Browse Source

Bugfix: vmcompiler: correct conditionals compilation

master
Denis Tereshkin 4 years ago
parent
commit
fef22a80da
  1. 7
      src/Nand2Tetris/VM.hs

7
src/Nand2Tetris/VM.hs

@ -259,7 +259,8 @@ compileInstruction instr = do
labDone <- nextLabelId labDone <- nextLabelId
let rest = [ let rest = [
Code (A (Label "SP")), 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 (A (Label labEq)),
Code (C [] (SReg RegD) jumpType), Code (C [] (SReg RegD) jumpType),
Code (A (Label "SP")), Code (A (Label "SP")),
@ -330,13 +331,13 @@ compileInstruction instr = do
Code (C [RegD] (SReg RegA) JNone), Code (C [RegD] (SReg RegA) JNone),
Code (A (Label regName)), Code (A (Label regName)),
Code (C [RegD] SDPlusM JNone), Code (C [RegD] SDPlusM JNone),
Code (A (Label "R15")), Code (A (Imm 15)),
Code (C [RegM] (SReg RegD) JNone), Code (C [RegM] (SReg RegD) JNone),
Code (A (Label "SP")), Code (A (Label "SP")),
Code (C [RegA] (SReg RegM) JNone), Code (C [RegA] (SReg RegM) JNone),
Code (C [RegD] (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 [RegA] (SReg RegM) JNone),
Code (C [RegM] (SReg RegD) JNone) Code (C [RegM] (SReg RegD) JNone)
] ]

Loading…
Cancel
Save