将“让静态 2 = 参数 1”翻译为 VM 代码
Posted
技术标签:
【中文标题】将“让静态 2 = 参数 1”翻译为 VM 代码【英文标题】:Translate "let static 2 = argument 1" to VM code 【发布时间】:2019-07-29 20:18:58 【问题描述】:将“let static 2 = argument 1”翻译成 VM 代码。
VM 代码(答案):
推送参数 1
弹奏静态2
我的问题
我们不是忘了let
。我们不应该将另一个参数 1 推入堆栈,然后也将其弹出到本地 2 吗?为了保留“本地类型”。
https://www.coursera.org/learn/nand2tetris2/lecture/z1wbL/unit-1-3-vm-abstraction-memory-segments
【问题讨论】:
【参考方案1】:不知道为什么要弹出太局部 2. 在 jack 中,let 语句也可以用于字段变量,而不必一定用于局部变量。
推送参数 1 会将索引 1 中的值放入堆栈顶部的参数段中,即 12。
然后您将堆栈中的顶部值弹出到静态 2 中,该值在您的图片中突出显示
【讨论】:
以上是关于将“让静态 2 = 参数 1”翻译为 VM 代码的主要内容,如果未能解决你的问题,请参考以下文章