MIPS如何将j指令转换为机器代码?

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) 当指令执行时,值(在

我需要将这个跳转转换为二进制,但我不知道如何获得立即值。我试着用循环的基址(假设为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)

当指令执行时,值(在您的例子中为10000)被提取并左移2位(乘以4)。然后该值替换PC的底部28位——顶部4位(在您的情况下为0000位)保持不变。程序执行的下一条指令将位于地址40000

    Loop: slt $t0,$s0,$s1
          beq $t0,1,Exit
          sub $s0,$s0,$s1;
          j Loop;
    Exit: