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 @@ -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 @@ -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)
]

Loading…
Cancel
Save