是否可以将寄存器加载链接到自身?
我的教科书中有一行MIPS(R2000)汇编代码:
ll $r2, 0($r2)
这正确吗?
如果正确:当$r2
中的原始内容不重要,但一个人只想将值存储到$r2
并且他不希望其他人同时存储时,是否使用此指令?时间?
答案 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