在 Hack 汇编代码中初始化一个数组

Initializing an array in Hack Assembly Code

声明初始化数据的语法是什么,如:

例如。整数 [] arr = {1, 2, 3, 4, 5}

“你好world\n”

Hack 汇编语言没有直接执行此操作的工具,因为它仅汇编程序指令,并且程序内存是 read-only 并且 Hack 机器指令不可读,除了负载的退化情况持续运行。

因此,您要做的是使用一系列加载 constant/store 操作编写初始化 ram 的代码。这变得有点棘手,因为您只能加载 15 位常量。

当我遇到这个问题时,我写了一个python脚本来生成我需要的汇编代码。这是一个 python 代码片段,它生成代码以将任意值“word”存储到可能对您有帮助的内存位置“base”中。

if word >= 32768:
    if word == 65535:
        print "\t@" + "{:05}".format(base) + "\t\t// " + str(word)
        print "\tM = -1"
    else:
        print "\tD = -1\t\t// " + str(word)
        print "\t@" + "{:05}".format(65535-word)
        print "\tD = D - A"
        print "\t@" + "{:05}".format(base)
        print "\tM = D"
else:
    if word == 0:
        print "\t@" + "{:05}".format(base) + "\t\t// " + str(word)
        print "\tM = 0"
    else:
        print "\t@" + "{:05}".format(word) + "\t\t// " + str(word)
        print "\tD = A"
        print "\t@" + "{:05}".format(base)
        print "\tM = D"

base += 1