capÍtulo 2 (ii - parte)
DESCRIPTION
CAPÍTULO 2 (II - Parte). Instrucciones: FORMATO DE INSTRUCCIONES. Modos de direccionamiento MIPS. Direccionamiento por registro – el operando se encuentra almacenado en un registro - PowerPoint PPT PresentationTRANSCRIPT
CAPÍTULO 2 (II - Parte)
Instrucciones: FORMATO DE INSTRUCCIONES
— 2Ing. José Alberto Díaz García
Modos de direccionamiento MIPS Direccionamiento por registro – el operando se encuentra
almacenado en un registro Direccionamiento Base (desplazamiento) – el operando se
encuentra almacenado en una posición de memoria cuya dirección es la suma del contenido de un registro y una constante de 16 bits, contenida en la misma instrucción.
Direccionamiento inmediato – el operando es una constante de 16 bits contenida en la misma instrucción.
Direccionamiento relativo al PC – la dirección de la instrucción es la suma del contenido del PC y una constante de 16 bits contenida en la misma instrucción.
Direccionamiento pseudo directo – la dirección de la instrucción se forma con los 26 bits contenidos en la instrucción concatenados con los cuatro bits más significativos del PC.
— 3Ing. José Alberto Díaz García
Ilustración de los modos de direccionamiento1. Direcc por registro
op rs rt rd funct RegistroPalabra Operando
op rs rt offset2. Direcc base
Registro base
MemoriaOperando word o byte
3. Direcc. base
op rs rt operando
4. Direcc relativo PCop rs rt offset
Contador de programa (PC)
MemoriaDestino de la instrucción de salto
5. Direcc. Pseudo directo
op dirección de salto
Contador de Programa (PC)
Memoria
Destino de la instruc. de salto||
Concatenado
— 4Ing. José Alberto Díaz García
Campos en las instrucciones MIPS
op rs rt rd shamt funct
op rs rt rd shamt funct6 bits 5 bits 5 bits 5
bits5 bits
6 bits
= 32 bits
Código de la operación que se realizará
Dirección del registro del primer operando fuente
Dirección del registro del segundo operando fuente
Dirección del registro destino
shift amount, para las instrucciones de desplazamiento (cantidad de desplazamientos)
Código de function que selecciona las variantes específicas de la operación indicada en el campo de código de operación
— 5Ing. José Alberto Díaz García
Instrucciones aritméticas MIPS Instrucciones aritméticas MIPS
add $t0, $s1, $s2
sub $t0, $s1, $s2 Cada instrucción aritmética realiza una operación
Cada una especifica tres operandos almacenados en registros de la ruta de datos ($t0,$s1,$s2)
destino fuente1 op fuente2
Formato de la instrucción (Formato R)0 17 18 8 0 0x20
— 6Ing. José Alberto Díaz García
Formato de la instrucción Load/Store I (Formato I):
lw $t0, 24($s3)
Instrucción de cargue
35 19 8 2410
Memoria
datos word address (hex)0x000000000x000000040x000000080x0000000C
0xFFFFFFFF
$s3 0x12004094
2410 + $s3 =
. . . 0001 1000 (24)D+ . . . 1001 0100 . . . 1010 1100 = 0x120040AC
0x120040AC $t0
— 7Ing. José Alberto Díaz García
Considere la instrucción de cargue una palabra o almacene una palabra ¿Qué significa aquí el principio de regularidad?
Pero . . . Un buen diseño demanda buenos compromisos Se introduce un nuevo tipo de formato de
instrucción Tipo I para instrucciones de transferencia de datos)
Ejemplo: lw $t0, 24($s2)
Instrucción de cargue
op rs rt 16 numero de bits
23hex 18 8 24
100011 10010 01000 0000000000011000
¿Donde se presenta el compromiso?
— 8Ing. José Alberto Díaz García
Ejemplo: sw $t0, 24($s2)
Un offset de 16 bits significa: acceso a las posiciones de memoria en el rango de +213-1 a -213 (~8,192) palabras o (+215-1 a -215 (~32,768) bytes) de las direcciones en el registro base $s2 Complemento a 2 (1 bit de signo + 15 bits de
magnitud)
Instrucción para almacenar
op rs rt 16 bit number
43 18 8 24
101011 10010 01000 0000000000011000
— 9Ing. José Alberto Díaz García
¿Que tipo de formato utiliza la instrucción addi?
addi$s3, $s3, 4 #$s3 = $s3 + 4
Formato máquina:
Instrucciones inmediatas
op rs rt 16 bits inmediatos Formato I
8 19 19 4
La constante se mantiene dentro de la misma instrucción! Los valores límites inmediatos se encuentran en el rango
+215–1 a -215
— 10Ing. José Alberto Díaz García
Código ensamblador Para el código en C
A[8] = A[2] – b Las instrucciones en código MIPS eslw $t0, 8($s3) #cargue A[2] en $t0sub $t0, $t0, $s2 #substraiga b de A[2]sw $t0, 32($s3) #almacene el resultado en
A[8]
35lw 19 8 8
43sw 19 8 32
0sub 8 18 8 0 34