MIPS如何将j指令转换为机器代码?
我需要将这个跳转转换为二进制,但我不知道如何获得立即值。我试着用循环的基址(假设为40000)除以4(40000/4=10000),但我不知道这是否正确(这正是他们在我书中的一个例子中所做的)MIPS如何将j指令转换为机器代码?,mips,Mips,我需要将这个跳转转换为二进制,但我不知道如何获得立即值。我试着用循环的基址(假设为40000)除以4(40000/4=10000),但我不知道这是否正确(这正是他们在我书中的一个例子中所做的) j指令的位25..0变为PC的位27..2,位1..0变为00(这是除以4的业务)。这是因为地址总是4字节对齐的 因此,如果循环位于地址40000,则指令的底部26位为00 0000 0000 0010 0111 0001 0000(10000),其他6位为j操作码(0000 10) 当指令执行时,值(在
j
指令的位25..0变为PC
的位27..2,位1..0变为00(这是除以4的业务)。这是因为地址总是4字节对齐的
因此,如果循环
位于地址40000,则指令的底部26位为00 0000 0000 0010 0111 0001 0000(10000),其他6位为j
操作码(0000 10)
当指令执行时,值(在您的例子中为10000)被提取并左移2位(乘以4)。然后该值替换PC的底部28位——顶部4位(在您的情况下为0000位)保持不变。程序执行的下一条指令将位于地址40000
Loop: slt $t0,$s0,$s1
beq $t0,1,Exit
sub $s0,$s0,$s1;
j Loop;
Exit: