在 Hack 汇编代码中初始化一个数组
Initializing an array in Hack Assembly Code
声明初始化数据的语法是什么,如:
- 正在用 hack 汇编语言初始化一个全局数组?
例如。整数 [] 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
声明初始化数据的语法是什么,如:
- 正在用 hack 汇编语言初始化一个全局数组?
例如。整数 [] 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