什么是偏移值以及beq指令的地址是什么?

时间:2017-04-30 14:32:36

标签: mips32

第一条指令位于指令存储器的“0”位置。

Label:
lw $t0,8($t1)
add $t3,$t2,$t0
beq $t3,$t4,Label
jump Label

假设reg $ t3和reg $ t4的值相等,它将跳转到Label地址。 那么,我想问一下Label的偏移值是什么,beq指令的地址是什么?

1 个答案:

答案 0 :(得分:0)

beq指令是Label之后的3条指令(地址为0000)。所以beq是4 * 3 = 12 + 0000 = 0012地址。

你说$ t3 == $ t4,所以offset告诉汇编程序返回4条指令,所以:

  

PCnew =(PCold + 4)+ Label * 4

PCold为0016,Label为-4,因此PCnew等于0000并返回标签:

在指令j Label中,Imm26(26位),标签的地址除以4 ......所以技术上为0000.跳转指令后:

  

PCnew =(标签* 4)=(0000)* 4 = 0000