无法获得有关虚拟寄存器的更多信息。 我所知道的是R0到R15,地址0到15是预先定义的。
虚拟注册=虚拟机吗? 那么什么是Hack机器及其汇编程序中的虚拟寄存器?
答案 0 :(得分:1)
我之前从未听说过HACK机器,所以我在Google上找了它并找到了官方页面,阅读了几张PDF并做了一个简单的测试。所有这一切只是说:我有5分钟准备这个主题:)
虚拟注册只是符号,是数字的名称。 R2
只是写2
的另一种方式。
手册说明
为简化装配编程,符号R0至R15为 预定义分别指代RAM地址0到15。
我最初认为您可以像R3=D-1
甚至R3=R2+R3
一样使用它们。在HACK机器中访问内存非常冗长,因为你只能通过使用A
寄存器间接寻址它,所以我认为虚拟寄存器可以用来自动生成更复杂的代码,比如组装{{1进入
R3=R1+R2
但情况并非如此,您只能将它们与
@1
D=M
@2
D=D+M
@3
M=D
指令一起使用,而我不知道这将如何简化装配。
如果您坚持仅通过使用标签将内存位置加载到@
的约定,它们可以使其更强可读,这样如果您看到A
已知/期望@R10
加载了一个地址,并且当您看到(等效)A
时,您知道/期望@10
包含算术计算的值(例如向{{添加10} 1}})。
这只是纯粹的语义,但是,如何使用汇编程序,比如使用 str 前缀命名字符串变量,并且对汇编程序本身没有意义。