jvm 将“let static 2 =参数1”转换为VM代码

2eafrhcq  于 2022-11-23  发布在  其他
关注(0)|答案(2)|浏览(98)

将“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

的所有数据

zpqajqem

zpqajqem1#

不确定为什么要弹出太局部的2。在jack中,let语句也可以用于字段变量,而不必用于局部变量。
压入参数1会将参数段中索引1的值放在堆栈顶部,即12。
然后将栈顶的值弹出到图片中突出显示的static 2中

5cnsuln7

5cnsuln72#

伪代码语句let x=y中的关键字let向读者指示将要发生名称/值绑定,但let本身不是变量。
如果愿意,您可以将其读作imagine x=yassume x=y,而不是let x=y

相关问题