MIPS指令寄存器

MIPS Instruction Register

If the bit pattern 0x0C000000 is placed into the Instruction Register, what MIPS instruction will be executed?

我不确定这个问题对指令寄存器的含义以及它与位模式的关系。

指令寄存器或 IR 通常缩写为 MIPS CPU 架构中执行代码的第一部分。加载到其中的位模式决定了操作码、源寄存器、目标寄存器和内存偏移量。

每种编程语言都被 compiler/interpreter 简化为二进制。二进制当然可以用传统的 1 和 0 或十六进制表示,这是您在问题中提供的位模式。

当一个特定的命令被转换成它的二进制表示时,位模式的每一位都有意义。

MIPS 是一个 32 位架构,所以有问题的位是 [31 -0],其中 0 是最右边的位。 (我建议您也阅读 Endianess)。您提供了一个 16 位十六进制值,所以我用 0

填充最低位

转换示例

    0    C    0    0    0    0    0    0    0    0    0    0    0    0    0    0
  0000  1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

这是一条 J 类指令,因此以下位表示:

opcode [31-25] 
target [24 -0]

话虽如此,您可以将二进制文件分组

000011 000000000000000000000000

使用我链接到下面的资源,我们可以知道操作码是 JAL。

来自伯克利的 link 很有帮助。

这个 link 是我在建筑学课程中经常使用的同一本教科书的扫描件。

32位MIPS指令0x0C000000可以用二进制重写成这样:

000011 00000000000000000000000000
opcode target

这似乎是 jal 跳转和 link 指令。执行时会导致程序跳转到target.

中指定的地址