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

Is it possible to load-linked a register to itself?

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

我的课本上有一行MIPS(R2000)的汇编代码是这样写的:

ll    $r2, 0($r2)

这是正确的吗?

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

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