MIPS跳转不会给PC增加4

时间:2018-03-15 15:34:00

标签: mips mips32

我正在尝试理解每个分支指令的范围。

beqbne指令执行类似的操作:

PCnew =(PCold + 4)+(从分支点开始)* 4

然而,跳转指令不会向PCold添加4,尽管我知道每个mips指令都添加4(转到下一条指令)。所以,如果我写:

j loop 

然后PCnew获取循环* 4的地址并且不添加四个。为什么?我错了吗?

1 个答案:

答案 0 :(得分:2)

跳转使用绝对地址,而分支使用 PC相对地址。

因此跳转只会将PC设置为跳转目标地址。

对于分支,分支位移(又名偏移)被添加到PC。但是此时PC已经前进到下一条指令,因此分支目标地址为:<address of branch instruction> + 4 + <relative displacement>