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

use*_*403 1 binary assembly mips

我正在学习MIPS,我对如何将汇编语言变成二进制感到困惑.据我所知,基本格式是:

opcode(6 bit)  rs(5 bit)  rd(5 bit)  rd(5 bit)  shamt(5 bit)  funct(6 bit)
Run Code Online (Sandbox Code Playgroud)

问题是:

sw $t1, 32($t2)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我知道:

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

我困惑的第一件事是shamt,或者转变.我了解到它是一个5位值,但二进制中的32由6位表示.

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

000000 01010 01001 100000 101011
Run Code Online (Sandbox Code Playgroud)

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

Jes*_*ter 5

并非所有指令都使用该机器代码格式,它看起来像算术指令一样.您还需要一份更好的参考手册,其中列出了其他说明的编码.sw特别是看起来:目标(!)1010 11ss ssst tttt iiii iiii iiii iiii在哪里s,t是源,并且i是直接偏移.这样你的例子看起来就像1010 1101 0100 1001 0000 0000 0010 00000xAD490020 请与汇编:

AD490020      sw $t1, 32($t2)
Run Code Online (Sandbox Code Playgroud)