0

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

  • 在 hack 汇编语言中初始化一个全局数组?

前任。int [] arr = {1, 2, 3, 4, 5}

  • 初始化字符串文字?

“你好世界\n”

4

1 回答 1

0

Hack 汇编语言无法直接执行此操作,因为它只汇编程序指令,并且程序存储器是只读的,Hack 机器指令不能读取,除了加载常量操作的退化情况。

因此,您需要做的是编写代码来初始化您的 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
于 2020-10-28T18:10:46.970 回答