1
我想下面的命令转换为十六进制:MIPS指令转换为16进制
beq $s1,$t3,label
它也给该命令的地址是0x1500,标签地址为0x1000。
到目前为止,我知道beq euaels 4(hex)和reqisters的二进制值。
我知道,首先我需要转换为二进制,然后转换为十六进制,但我不明白如何处理标签地址。我是否需要将它除以4以获得价值?
任何帮助将是伟大的。
谢谢
我想下面的命令转换为十六进制:MIPS指令转换为16进制
beq $s1,$t3,label
它也给该命令的地址是0x1500,标签地址为0x1000。
到目前为止,我知道beq euaels 4(hex)和reqisters的二进制值。
我知道,首先我需要转换为二进制,然后转换为十六进制,但我不明白如何处理标签地址。我是否需要将它除以4以获得价值?
任何帮助将是伟大的。
谢谢
BEQ
操作码为000100
(二进制)。 为BEQ
指令格式为:
OpCode|SR|DR|Offset
其中
000100
10001
为$s1
01011
对于$t3
1111111010111111
现在,您可以连接位域和他们写在十六进制,如果你想:
0001 0010 0010 1011 1111 1110 1011 1111
这是0x122BFEBF
[编辑:如何计算加解释偏移]
至COMP ute必须减去PC + 4的值(PC代表分支指令的地址)和目标位置的地址。然后将该地址除以4(或右移两次)。由于偏移量在A2恭维语中编码,如果操作结果为负数,则必须应用A2的恭维语以获取编码值。
嗨,谢谢你的回复。当我说beq是4时,我的意思是它的基数转换是4进制为十六进制,这是二进制0100. –
您可以详细说明如何计算立即数?我看到你拿到了标签地址,并从中减去了PC指令,然后向右移动了2.对不起,但我不明白你是如何得到'-0x141'的,不应该是(-0x504/4 )= - x126?谢谢 –
@ user3066968:我想你是用十进制而不是十六进制减去的。 (1000-1504)/ 4,十进制产生-126。 (0x1000-0x1504)/ 4的十六进制数产生-0x141 – gusbro