2011-08-03 26 views
9

Soy muy nuevo en Lenguaje de ensamblaje. Estaba leyendo acerca de MIPS arquitectura y estoy atascado con el último campo del formato de registro (formato R). Aquí está su representación visual, enter image description here ¿Alguien puede por favor ayudarme con qué significa el sexto campo y cómo lo calculamos? Gracias de antemano.¿Qué significa func en el conjunto de instrucciones R-Format?

Respuesta

7

como la descripción menciona todas las instrucciones de tipo R (por ejemplo ADD, AND, SLL y otros) tienen los 6 bits más significativos (= op) establece en 0, que significa que la única manera de distinguir entre ellos es mira los 6 bits menos significativos (= funct). En otras palabras, determinan el tipo de instrucción. Tal vez un ejemplo ayude.

ADD $1, $2, $3 

tiene:

op = 0 (as all R-type instructions) 
rs = 2 
rt = 3 
rd = 1 
shamt = 0 
funct = 0x20 = 0b00000100000 = 32 

La codificación se por lo tanto ser:

0000 0000 0100 0011 0000 1000 0010 0000 

Por ejemplo, XOR (otro tipo de R) instrucción funct es 0b100110 = 0x26 = 38. Entonces lo "calcula" buscando qué instrucción quiere codificar.

(tomado de MIPS Instruction Reference).

+0

¿Puedes explicar cómo obtuviste func = 0x20? –

+1

@JustAnotherProgrammer: lo busqué en una tabla (como la de arsane [linked] (http://en.wikibooks.org/wiki/MIPS_Assembly/Instruction_Formats#Opcodes) to). La función para 'agregar' es' 0x20'. – user786653

+0

Gracias por la ayuda :) –

1

Desde siguiente tabla:

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

Casi Todo código de operación de la instrucción R-Type es 00, por lo que la func seleccione la función ALU.

Func Para obtener instrucciones que comparten un código de operación, el parámetro de func contiene los códigos de control necesarias para diferenciar las diferentes instrucciones. 6 bits de largo (0 a 5). Ejemplo: Opcode 0x00 accede a la ALU y la función selecciona qué función ALU usar.

+0

: Gracias por la respuesta. –

Cuestiones relacionadas