2.6.2. Formatos de instruccion d...
Anónimo
Arquitectura de Computadores
2º Grado en Sistemas de Información
Escuela Técnica Superior de Ingeniería de Sistemas
Informáticos
Universidad Politécnica de Madrid
.
Reservados todos los derechos.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-253506
Formatos de instrucción de la MIPS (3 de 32 bits)
1
.
2
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-253506
- opcode: código de operación primario, cuyo valor es cero.
- rs: especificador de registro fuente.
- rt: especificador de registro objetivo (fuente/destino).
- rd: especificador de registro destino.
- sa: cantidad de desplazamiento.
- function: campo función, especifica la operación.
Utilizado para instrucciones aritméticas y lógicas:
3
(1.1) Tres operandos en registros
.
ADD rd, rs, rt
(rd ← rs + rt)
SUB rd, rs, rt
(rd ← rs - rt)
4
Te has descargado este apunte gracias a la publicidad. También puedes eliminarla con 1 coin.
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
1. Tipo R (Registro)
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-253506
Modo de direccionamiento registro:
5
(1.2) Dos operandos en registros
.
SLL rd, rt, sa
(rd ← rt << sa)
(Desplaza rt, sa posiciones a la izquierda, y pone el resultado en rd)
Ejemplo
sll $7, $3, 5 =
0
X
3
7
5
0
6
Te has descargado este apunte gracias a la publicidad. También puedes eliminarla con 1 coin.
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Ejemplos
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-253506
Divide rs por rt, deja el cociente en LO y el resto en HI.
Ejemplo
DIV $8, $9
0
8
9
X
X
0x1A
=
.
7
2. Tipo I (Inmediato)
- opcode: especifica la operación.
Para instrucciones:
(2.1) de transferencia de datos (carga/almacenamiento):
- rs: registro base.
- rt: registro fuente/destino.
- offset: desplazamiento.
(2.2) de salto condicional:
- rs y rt: para establecer la condición.
- offset: desplazamiento.
(2.3) instrucciones con operandos inmediatos:
- rs: operando fuente.
- rt: operando destino.
- offset (inmediate): operando fuente.
8
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-253506
LW rt, offset(base)
(rt ← memory[base+offset])
.
SW rt, offset(base)
(memory[base+offset] ← rt)
9
Ejemplos
10
Te has descargado este apunte gracias a la publicidad. También puedes eliminarla con 1 coin.
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
(2.1) Instrucciones de carga/almacenamiento
.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-253506
Existen instrucciones distintas para los diferentes tamaños de dato
(i) Load Byte
(iii) Load Word
En todos los casos, el direccionamiento para el segundo operando es
base (registro rt) + desplazamiento (offset)
.
11
(2.2) Instrucciones de salto condicional (bifurcación)
BEQ rs, rt, offset
(if (rs = rt) then branch)
Operación: tgt_offset ← sign_extend(offset || 02)
condition ← (GPR[rs] = GPR[rt])
if (condition) then PC ← PC + tgt_offset endif
An 18-bit signed offset (the 16-bit offset field shifted left 2 bits) is added
to the address of the instruction following the branch (not the branch
itself), to form a PC-relative effective target address.
12
Te has descargado este apunte gracias a la publicidad. También puedes eliminarla con 1 coin.
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
(ii) Load Half Word
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-253506
Ejemplos
beq $19, $20, 6205
bne $19, $20, 6205
Estas instrucciones saltarían a la instrucción
instrucciones más adelante en memoria.
que
está
6206
13
.
El modo de direccionamiento es relativo al contador de programa.
En este modo, se especifica el desplazamiento (en número de
instrucciones), con respecto al PC, donde está la instrucción destino del
salto: dirección destino = PC + desplazamiento * 4.
Las instrucciones de bifurcación pueden saltar 215-1 instrucciones hacia
delante y 215 hacia atrás.
En el ejemplo, si la instrucción “beq $19, $20, 6205” está en la dirección
5300, la dirección de la instrucción destino del salto sería:
PC + (6205 * 4) = 5304 + 24820 = 30124
14
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-253506
ADDI rt, rs, immediate (rt ← rs + immediate)
Ejemplo
Modo de direccionamiento inmediato.
15
3. Tipo J (Salto)
Operación: PC ← PC32..28 || instr_index || 02
Modo de direccionamiento pseudodirecto: la dirección de salto son los
26 bits menos significativos de la instrucción, desplazados 2 posiciones
a la izquierda y concatenados con los 4 bits más significativos del PC.
.
16
Te has descargado este apunte gracias a la publicidad. También puedes eliminarla con 1 coin.
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
(2.3) Instrucciones con un operando inmediato
Para operaciones con constantes