我正在尝试将以下命令转换为Hex:
beq $s1,$t3,label
还给出了命令地址为0x1500,标签地址为0x1000。
到目前为止,我知道beq euaels 4(十六进制)和reqisters的二进制值。
我知道起初我需要转换为二进制然后转换为Hex,但我无法理解如何处理标签地址。我需要将它除以4得到值吗?
任何帮助都会很棒。
谢谢
答案 0 :(得分:1)
BEQ
操作码是000100
(二进制)。
BEQ
的指令格式为:
OpCode|SR|DR|Offset
其中
000100
10001
$s1
01011
$t3
1111111010111111
如果您愿意,现在可以连接位字段并以十六进制格式写入:
0001 0010 0010 1011 1111 1110 1011 1111
,0x122BFEBF
[编辑:添加了如何计算偏移量的说明]
要计算偏移量,您必须减去PC + 4的值(其中PC代表分支指令的地址)和目标位置的地址。然后将该地址除以4(或右移两次)。由于偏移量是用A2补码编码的,如果操作结果为负,则必须应用A2的补码来获得编码值。