2011-08-03 61 views
9

我很新汇编语言。我正在阅读关于MIPS体系结构和我坚持寄存器格式(R格式)的最后一个字段。这里是它的视觉表示, enter image description here 任何人都可以请帮我一起第六场意味着什么我们如何计算它? 在此先感谢。func在R-Format指令集中意味着什么?

回答

7

作为描述中提到的所有R型指令(例如ADDANDSLL及其它)具有设置为0的6个最显著位(= OP),这意味着对它们进行区分之间是唯一的方式看看6个最低有效位(= funct)。换句话说,他们决定了指令类型。也许一个例子会有所帮助。

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。所以你通过查找你想要编码的指令来“计算”它。

(摘自MIPS Instruction Reference)。

+0

你能解释一下你是如何获得func = 0x20的? –

+1

@JustAnotherProgrammer:我查了一下表(像arsane [linked](http://en.wikibooks.org/wiki/MIPS_Assembly/Instruction_Formats#Opcodes)to)。 'add'的功能是'0x20'。 – user786653

+0

感谢您的帮助:) –

1

从下表:

http://en.wikibooks.org/wiki/MIPS_Assembly/Instruction_Formats#Opcodes

几乎所有的R型指令的操作码是00,所以本功能选择ALU的功能。

功能该 对于共享的操作码的指令,所述参数本功能 包含必要的控制代码来区别不同 指令。 6位长(0到5)。例如:操作码0x00访问 ALU,该功能选择使用哪个ALU功能。

+0

:谢谢你的回答。 –