again: addi $t0, $zero, 1
ll $t1, 0( $s1 )
sc $t0, 0( $s1 )
beq $t0, $zero, again
add $s4, $zero, $t1
假设
1.t0=1
2.返回s1的值“hello”
有操作修改了s1为“goodbye”
3.因为期间有操作修改了s1,所以sc执行失败t0=0
4.因为t0=0,所以又执行回第一行
1.t0从0变为1
2.返回s1的值“goodbye”
无操作修改s1的值
3.sc执行成功t0=1
4.跳过beq
5.把“goodbye”放到s4