在 MIPS 中使用带链表的系统调用 9

Using syscall 9 with linked list in MIPS

我正在尝试在 MIPS 中实现一个链表,我还需要为其分配内存。在我看到的每个例子中,他们都假设列表中的第一个元素在某个寄存器上,但他们实际上并没有解释如何实际地做到这一点。

我试过了,但是它说 "store address not aligned on word boundary 0x10040319"

# Allocate memory with syscall 9
li $v0, 9
addi $a0, $zero, 8  # Reserve 8 bytes, 4 for int data, 4 for pointer to next
syscall
# Make $t0 point to the beginning of the reserved memory?
add $t0, $v0, $zero
# Create linked list node
addi $t1, $zero, 10   # $t1 has the int data
sw $t1, 0($t0)      # $t1 is now node->data
sw $zero, 4($t0)      # node->next is NULL

所以我这里有两个问题,但它们是相互关联的。一个是如何使用系统调用 9 正确分配内存,另一个是如何引用它以便它可以在链表中使用(我实际上需要使用链表实现排序算法,因为我需要能够排序任意数量的元素(不是固定数量),这是步骤 -1 哈哈)。谢谢

天哪,原来是他们为作业上传的模拟器。 我从官方网站下载了最新版本的 Mars MIPS,它运行良好。好吧,这很尴尬。