MIPS - 将汇编语言翻译成二进制

时间:2014-03-12 06:06:41

标签: assembly binary mips

我目前正在学习MIPS,我对如何将汇编语言转换为二进制文件感到困惑。据我所知,基本格式是:

opcode(6 bit)  rs(5 bit)  rd(5 bit)  rd(5 bit)  shamt(5 bit)  funct(6 bit)

问题是:

sw $t1, 32($t2)

到目前为止,我知道:

$ t1 = 01001,$ t2 = 01010,sw = 101011的操作码,二进制中的32 = 100000

我首先感到困惑的是shamt或者转变。我了解到它是一个5位值,但二进制中的32表示为6位。

我困惑的第二件事是订购。这是我到目前为止所做的,但我不认为它是正确的,因为它不是32位字符串:

000000 01010 01001 100000 101011

有人可以解释汇编语言指令的正确二进制字符串是什么吗?

1 个答案:

答案 0 :(得分:5)

并非所有指令都使用该机器代码格式,它看起来像算术指令一样。您还需要better reference manual列出其他说明的编码。 sw特别是:1010 11ss ssst tttt iiii iiii iiii iiii其中s是目标(!),t是来源,i是直接偏移量。因此,您的示例看起来像1010 1101 0100 1001 0000 0000 0010 0000 0xAD490020 请与汇编程序核实:

AD490020      sw $t1, 32($t2)