MIPS命令为Hex

时间:2015-11-10 11:52:30

标签: command hex mips

我正在尝试将以下命令转换为Hex:

beq $s1,$t3,label

还给出了命令地址为0x1500,标签地址为0x1000。

到目前为止,我知道beq euaels 4(十六进制)和reqisters的二进制值。

我知道起初我需要转换为二进制然后转换为Hex,但我无法理解如何处理标签地址。我需要将它除以4得到值吗?

任何帮助都会很棒。

谢谢

1 个答案:

答案 0 :(得分:1)

BEQ操作码是000100(二进制)。 BEQ的指令格式为:

OpCode|SR|DR|Offset

其中

  • OpCode(6位)为000100
  • 10001
  • 的SR(5位)为$s1
  • 01011
  • 的DR(5位)为$t3
  • 偏移(16位)是一个16位有符号偏移(移位2次),假设启动PC是分支后的下一条指令,应该是(0x1000 - 0x1504)>> 2 = -0x141,它写在A2中赞美是1111111010111111

如果您愿意,现在可以连接位字段并以十六进制格式写入:

0001 0010 0010 1011 1111 1110 1011 11110x122BFEBF

[编辑:添加了如何计算偏移量的说明]

要计算偏移量,您必须减去PC + 4的值(其中PC代表分支指令的地址)和目标位置的地址。然后将该地址除以4(或右移两次)。由于偏移量是用A2补码编码的,如果操作结果为负,则必须应用A2的补码来获得编码值。