首页 文章

MIPS:获取链接列表中的节点值

提问于
浏览
0

我有一个通过“删除”任何包含小于某个数字的值的节点来清理链接列表的任务(比方说10) . 它比预期的要困难一些,因为节点在内存中不是有序的 . 见下文

list:
.word 15
.word n1

n2:
.word 12
.word n3

n6:
.word 27
.word n7

n3:
.word 22
.word n4

n1:
.word 1
.word n2

n5:
.word 34
.word n6

n7:
.word 6
.word  -1             # logical end of the list

n4:
.word 9
.word n5

如果头指向地址“268500992”,其中包含15,和下一个位置四位离开包含指针到下一个节点(称为N1),我怎么可以从N1的 Value ?

我尝试了以下内容,但它正在将地址(第一个节点的指针或n1的地址)加载到$ t0而不是该地址的值 .

la    $a0,list 
addi  $a0, $a0, 4
lw    $t0,0($a0)

1 回答

  • 0

    不要忘记 la $a0,list 将加载指向列表的指针 . 随后的 lw $t0,0($a0) 将加载头节点的值,并且 lw $t0,4($a0) (或您执行的操作)将指针加载到下一个节点 . 你仍然是头节点,但现在 $t0 指向节点1.最好的办法是使用 lw $a0,4($a0) 转到下一个节点 . 要检索其值,您仍需要执行 lw $t0,0($a0) .

相关问题