第一条指令位于指令存储器的“0”位置。
Label:
lw $t0,8($t1)
add $t3,$t2,$t0
beq $t3,$t4,Label
jump Label
假设reg $ t3和reg $ t4的值相等,它将跳转到Label地址。 那么,我想问一下Label的偏移值是什么,beq指令的地址是什么?
答案 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