【发布时间】:2011-08-03 15:56:35
【问题描述】:
我对汇编语言非常陌生。我正在阅读有关 MIPS 架构的信息,但我被 Register Format (R-Format) 的最后一个字段困住了。这是它的视觉表现, 谁能帮我解答一下第六个字段是什么意思以及我们如何计算它? 提前致谢。
【问题讨论】:
标签: assembly mips cpu-architecture machine-code
我对汇编语言非常陌生。我正在阅读有关 MIPS 架构的信息,但我被 Register Format (R-Format) 的最后一个字段困住了。这是它的视觉表现, 谁能帮我解答一下第六个字段是什么意思以及我们如何计算它? 提前致谢。
【问题讨论】:
标签: assembly mips cpu-architecture machine-code
正如描述中提到的所有 R 类型指令(例如 ADD、AND、SLL 和其他)将 6 个最高有效位(= op)设置为 0,这意味着区分它们是查看 6 个最低有效位(= 函数)。换句话说,它们决定了指令类型。也许一个例子会有所帮助:
ADD $1, $2, $3
有:
op = 0 (as all R-type instructions)
rs = 2
rt = 3
rd = 1
shamt = 0
funct = 0x20 = 0b00000100000 = 32
因此编码将是:
0000 0000 0100 0011 0000 1000 0010 0000
例如XOR(另一种 R 类型)指令函数是 0b100110 = 0x26 = 38。因此,您通过查找要编码的指令来“计算”它。
【讨论】:
add 的函数是 0x20。
来自下表:
http://en.wikibooks.org/wiki/MIPS_Assembly/Instruction_Formats#Opcodes
几乎所有R-Type指令的操作码都是00,所以函数选择ALU函数。
功能 对于共享操作码的指令,函数参数 包含必要的控制代码来区分不同的 指示。 6 位长(0 到 5)。示例:操作码 0x00 访问 ALU,函数选择使用哪个 ALU 函数。
【讨论】: