将“let static 2 =参数1”转换为VM代码。
VM代码(答案):
推送参数1
pop静态2
"我的问题"
我们是不是忘记了let
。我们是不是应该把另一个参数1推到堆栈,然后把它也弹出到local 2?为了保留“local类型”。
https://www.coursera.org/learn/nand2tetris2/lecture/z1wbL/unit-1-3-vm-abstraction-memory-segments
的所有数据
将“let static 2 =参数1”转换为VM代码。
VM代码(答案):
推送参数1
pop静态2
"我的问题"
我们是不是忘记了let
。我们是不是应该把另一个参数1推到堆栈,然后把它也弹出到local 2?为了保留“local类型”。
https://www.coursera.org/learn/nand2tetris2/lecture/z1wbL/unit-1-3-vm-abstraction-memory-segments
的所有数据
2条答案
按热度按时间zpqajqem1#
不确定为什么要弹出太局部的2。在jack中,let语句也可以用于字段变量,而不必用于局部变量。
压入参数1会将参数段中索引1的值放在堆栈顶部,即12。
然后将栈顶的值弹出到图片中突出显示的static 2中
5cnsuln72#
伪代码语句
let x=y
中的关键字let
向读者指示将要发生名称/值绑定,但let
本身不是变量。如果愿意,您可以将其读作
imagine x=y
或assume x=y
,而不是let x=y
。