有人能解释一下为什么下面这条装配线有意义吗?
beq $0, $0, 1注意,$0是指始终值为0的寄存器。所以我们是说,如果$0 = $0,那么转到PC +4+1,然后转到下一个指令。
我的困惑来自于beq指令的直接字段,即1。这是否意味着我们将处理PC +5?当访问内存时,MIPS不需要对齐吗?所有内存位置都必须被4整除吗?
注意,书中说这条指令只是跳过了下一条指令。
发布于 2016-07-20 06:12:15
beq $t, $s, offset的语义是
if ($t == $s)
PC = PC + 4 + 4 * offset;
else
PC = PC + 4简单地说,PC在执行指令时总是提前4位,并且假定立即丢失了较低的2位,因为它们总是为零,可以用shift (offset * 4 = offset << 2)重新引入。
beq $0, $0, 1只需跳过下一条指令,因为它将PC = PC + 8设置为重言式。
https://stackoverflow.com/questions/38473218
复制相似问题