HACK机器及其组装商

时间:2015-06-22 16:07:19

标签: assembly computer-architecture

无法获得有关虚拟寄存器的更多信息。 我所知道的是R0到R15,地址0到15是预先定义的。

虚拟注册=虚拟机吗? 那么什么是Hack机器及其汇编程序中的虚拟寄存器?

1 个答案:

答案 0 :(得分:1)

我之前从未听说过HACK机器,所以我在Google上找了它并找到了官方页面,阅读了几张PDF并做了一个简单的测试。所有这一切只是说:我有5分钟准备这个主题:)

虚拟注册只是符号,是数字的名称。 R2只是写2的另一种方式。

Assembled @R2 and @2 instructions

手册说明

  

为简化装配编程,符号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 前缀命名字符串变量,并且对汇编程序本身没有意义。