我有一个问题,这有点令人困惑
Write the MIPS instruction whose machine language encoding is:
0000 0011 0001 1001 0100 0000 0010 1010
Your answer must use register names (like $t0) not numbers; and must specify
any immediate as a signed integer in decimal.
后面的答案与slt有关。有人可以解释一下,问题到底是什么,答案是什么?
感谢
答案 0 :(得分:4)
编程时,如今你通常使用C或Java等高级语言编写,编译器将其分解为汇编语言(MIPS,x86等),然后将其组装成机器语言(二进制),处理器可以原生地解释。
这是MIPS处理器能够解释和执行的一条指令。问题是要求您将其转换回MIPS汇编语言。你肯定应该有一个MIPS指令参考来帮助你。如果你没有,这是一个很好的:
http://www.d.umn.edu/~gshute/spimsal/talref.html#rtype
(提示:我们现在看到的指令是一个R-Type指令,这意味着它是一个直接在寄存器上操作的指令,不使用立即值。)
如果查看顶部表格,它会分解MIPS R类型指令。前6位是操作码。您会注意到指令的前6位是0,这是因为所有R型指令都有000000用于操作码,并且处理器通过使用FUNCT字段知道它正在处理什么指令,这就是我们所知道的“slt”是我们正在关注的指令(参见参考资料)。
现在你真正需要的是知道哪些寄存器名称映射到哪个寄存器号(即.register 8可能是$ t0)。以下是对此的参考:
http://logos.cs.uic.edu/366/notes/mips%20quick%20tutorial.htm
答案 1 :(得分:3)
汇编指令将机器表示为位,即给定的位。
它们还有一个文本表示,使人们更容易阅读和写作,这就是你被问到的那个。
您需要了解如何从二进制文件中提取文本表示的各个部分。使用slt
,您处于正确的轨道上,它仍然可以找到指令中使用的寄存器或常量。您应该有一些MIPS指令引用,指定该指令的位模式的含义。