【问题标题】:MIPS: Getting Values of Nodes in Linked ListMIPS:获取链表中节点的值
【发布时间】:2015-05-04 07:25:26
【问题描述】:

我有一个任务是通过“删除”任何包含小于某个数字(比如说 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 中获取值?

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

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

【问题讨论】:

    标签: assembly mips mips32


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 2014-08-28
      • 2013-08-10
      相关资源
      最近更新 更多