NAND2Tetris VM 翻译器

NAND2Tetris VM Translator

如果指向堆栈中下一个位置的指针在Ram[SP]/[0]中被破坏,我如何在hack中指示计算机打开该位置? 我试过了

@0
D=M
@D

但它没有打开存储在 Ram[0] 中的地址 如何让它访问存储在 Ram[0] 中的 ram 地址 谢谢

您使用 A/M 寄存器间接通过 ram 位置。

@SP  // loads the A register with the value SP (SP predefined to 0)
A=M  // loads the A register with the contents of MEM[0] (the stack pointer)
D=M  // loads D with the contents of MEM[Stack]

@D 会将符号位置 D 的内容加载到 A 寄存器,该位置将由汇编程序自动分配。 @D(地址)和 D(寄存器)不是一回事,因此,使用@D 不是一个好主意。