MIPS汇编指针数组

时间:2015-04-01 17:01:44

标签: assembly mips

我试图创建一个与名称列表对应的指针数组,以及另一个跟踪这些名称显示次数的并行数组。我没有找到显示它们的方法,我只想知道如何加载指针数组,然后加载另一个以所有0开头的整数数组。我在一个空终止字符串列表中定义名称,然后为我的数组留出一些内存,但我不知道如何将这些名称的地址放入该数组中。这就是我所拥有的:

.data
.space 5000
Listofnames:
.asciiz "   Jones \n"
.asciiz "   Smith \n"
.asciiz "   Johnson \n"
.asciiz "   Davis \n"
.asciiz "   Reid \n"
.asciiz "   Foster \n"
.asciiz "#"             # indicates end of name list, which can grow in size


.space 400
.align 2 # should this be 2? I thought it should be word aligned
pointer_array:

.space 400
.align 2 # should this be 2? I thought it should be word aligned
parallel_array:

1 个答案:

答案 0 :(得分:0)

正如@Jester建议的那样,您可以使用标签让汇编程序计算每个名称的地址,并使用此标签来定义数组中的内容。

另一种可能性是为每个名称留出相同数量的空间,以便可以计算每个名称的位置。这可以使用.ascii来完成,指定字符串中的空终止符,然后在此之后添加足够的字符,以便填充到所需的长度。这需要更多空间,但是不需要指向每个单独名称的指针数组。

如果你必须生成一个指向名称的指针数组,并且不能使用标签,那么你必须遍历{{1}中的字符每次找到一个空字符(表示名称的结尾)时,下一个位置都会启动下一个名称(除非它包含一个Listofnames,在这种情况下你就完成了。)