将MIPS指令转换为十六进制代码的过程

时间:2015-02-13 01:51:29

标签: assembly hex mips

我试图在网上找到解释,但我找到的所有内容似乎都是某人编写的转换程序并没有真正解释它。在这里寻找关于SO的问题,其中大部分都高于我的工资等级,我正在查看基础知识的最开始。我理解这个想法(我认为):

`add $s0, $s3, $s5`

像这样隔离它们 Green sheet snippet

记住" rd"需要来自第一个寄存器$ s0,根据MIPS Green Sheet将片段转换为十六进制,给我们

add = op code of 0  
$s3 = 19 in decimal, 13 in hex  
$s5 = 21 in decimal, 15 in hex  
$s0 = 16 in decimal, 10 in hex  
shamt = 0  
funct = 20 from add

这已经让我失去了,因为它将是0131510020 ...而不是8位。不。

基于此online converter,它出现为

`02758020` in hex

世界如何发生这种情况?我甚至在玩转换器,只是一次向上移动一个寄存器,这些改变让我更加困惑。有没有一个技巧,我错过了或一个很好的资源?我发现的每一个视频都在谈论机器代码(二进制),而不会进入它的十六进制部分。

1 个答案:

答案 0 :(得分:6)

你需要把它放在二进制中,而不是十六进制。

图像中的小数字告诉你每个部分的位数。

add = op code of 0, 000000 in bin
$s3 = 19 in decimal, 13 in hex, 10011 in bin
$s5 = 21 in decimal, 15 in hex, 10101 in bin
$s0 = 16 in decimal, 10 in hex, 10000 in bin
shamt = 0, 00000 in bin
funct = 20 from add, 10100 in bin

然后将所有内容放在一起并转换为十六进制:

0b00000010011101011000000000100000 = 0x02758020