1

我有一个问题,这有点令人困惑

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有关。有人可以解释一下,这个问题到底在问什么,答案是什么?

谢谢

4

2 回答 2

3

在编程时,现在您通常使用 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”的方式是我们正在查看的指令(参见参考资料)。

您现在真正需要的是知道哪些寄存器名称映射到哪些寄存器编号(即,寄存器 8 可能是 $t0)。这是一个参考:

http://logos.cs.uic.edu/366/notes/mips%20quick%20tutorial.htm
于 2012-12-16T14:05:04.323 回答
3

汇编指令将机器表示为位,这就是给您的。

它们还具有文本表示,以使人类更容易阅读和编写它们,这就是您被要求的。

您需要了解如何从二进制文件中提取部分文本表示。随着slt您走在正确的轨道上,剩下的就是找到指令中使用的寄存器或常量。您应该有一些 MIPS 指令参考来指定该指令的位模式的含义。

于 2010-10-31T08:38:31.090 回答