是否可以将寄存器加载链接到自身?

时间:2018-08-03 10:34:49

标签: mips mips32

是否可以将寄存器加载链接到自身?

我的教科书中有一行MIPS(R2000)汇编代码:

ll    $r2, 0($r2)

这正确吗?

如果正确:当$r2中的原始内容不重要,但一个人只想将值存储到$r2并且他不希望其他人同时存储时,是否使用此指令?时间?

1 个答案:

答案 0 :(得分:1)

LL不会阻止任何人将其存储到加载的地址,而只能检查是否有人存储了。

您发布的LL指令对我来说是合法的。此时是否有意义取决于该程序的其他用途。

该地址也可能存储在其他地方,然后从其他地方读取以调用SC。

参考手册中的修改示例:

L1:
  ADD T1, ZERO, T0 # copy T0 -> T1
  LL T1, (T1)      # 
  ADDI T2, T1, 1   # increment
  SC T2, (T0)      # try to store, checking for atomicity
  BEQ T2, 0, L1    # if not atomic (0), try again