Transcript Instrucciones aritméticas MIPS
Slide 1
CAPÍTULO 2
(II - Parte)
Instrucciones: FORMATO
DE INSTRUCCIONES
Slide 2
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.
Ing. José Alberto Díaz García
—2
Slide 3
Ilustración de los modos de direccionamiento
1. Direcc por registro
op
rs
rt
rd
funct
Registro
Palabra Operando
2. Direcc base
op
rs
rt
offset
Memoria
Operando word o byte
Registro base
3. Direcc. base
op
rs
rt
operando
4. Direcc relativo PC
op
rs
rt
offset
Memoria
Destino de la instrucción de salto
Contador de programa (PC)
5. Direcc. Pseudo directo
op
Memoria
dirección de salto
Contador de Programa (PC)
Ing. José Alberto Díaz García
|
|
Destino de la instruc. de salto
Concatenado
—3
Slide 4
Campos en las instrucciones MIPS
op
rs
rt
rd
shamt
6 bits
5 bits
5 bits
5 bits
5 bits
funct
6 bits
= 32 bits
Código de la operación que se realizará
op
rs
Dirección del registro del primer operando fuente
rt
Dirección del registro del segundo operando fuente
Dirección del registro destino
rd
shamt shift amount, para las instrucciones de desplazamiento
(cantidad de desplazamientos)
funct Código de function que selecciona las variantes
específicas de la operación indicada en el campo
de código de operación
Ing. José Alberto Díaz García
—4
Slide 5
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
Ing. José Alberto Díaz García
18
8
0
0x20
—5
Slide 6
Instrucción de cargue
Formato de la instrucción Load/Store I (Formato I):
lw $t0, 24($s3)
35
19
8
2410 + $s3 =
2410
Memoria
0xFFFFFFFF
. . . 0001 1000 (24)D
$t0
+ . . . 1001 0100
$s3
. . . 1010 1100 =
0x120040AC
Ing. José Alberto Díaz García
0x120040AC
0x12004094
datos
0x0000000C
0x00000008
0x00000004
0x00000000
word address (hex)
—6
Slide 7
Instrucción de cargue
Considere la instrucción de cargue una palabra o
almacene una palabra
¿Qué significa aquí el principio de regularidad?
Se introduce un nuevo tipo de formato de instrucción
Pero . . . Un buen diseño demanda buenos compromisos
Tipo I para instrucciones de transferencia de datos)
Ejemplo: lw $t0, 24($s2)
op
rs
rt
16 numero de bits
23hex
18
8
100011
10010
01000
24
0000000000011000
¿Donde se presenta el compromiso?
Ing. José Alberto Díaz García
—7
Slide 8
Instrucción para almacenar
Ejemplo: sw $t0, 24($s2)
op
rs
43
18
101011
10010
rt
16 bit number
8
01000
24
0000000000011000
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)
Ing. José Alberto Díaz García
—8
Slide 9
Instrucciones inmediatas
¿Que tipo de formato utiliza la instrucción addi?
addi $s3, $s3, 4 #$s3 = $s3 + 4
op
8
rs
rt
19
19
16 bits inmediatos
Formato I
4
Formato máquina:
La constante se mantiene dentro de la misma
instrucción!
Los valores límites inmediatos se encuentran en el
rango +215–1 a -215
Ing. José Alberto Díaz García
—9
Slide 10
Código ensamblador
Para el código en C
A[8] = A[2] – b
Las instrucciones en código MIPS es
lw
sub
sw
$t0, 8($s3)
$t0, $t0, $s2
$t0, 32($s3)
#cargue A[2] en $t0
#substraiga b de A[2]
#almacene el resultado en A[8]
lw
35
19
8
sub
0
8
18
sw
43
19
8
Ing. José Alberto Díaz García
8
8
0
34
32
— 10
CAPÍTULO 2
(II - Parte)
Instrucciones: FORMATO
DE INSTRUCCIONES
Slide 2
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.
Ing. José Alberto Díaz García
—2
Slide 3
Ilustración de los modos de direccionamiento
1. Direcc por registro
op
rs
rt
rd
funct
Registro
Palabra Operando
2. Direcc base
op
rs
rt
offset
Memoria
Operando word o byte
Registro base
3. Direcc. base
op
rs
rt
operando
4. Direcc relativo PC
op
rs
rt
offset
Memoria
Destino de la instrucción de salto
Contador de programa (PC)
5. Direcc. Pseudo directo
op
Memoria
dirección de salto
Contador de Programa (PC)
Ing. José Alberto Díaz García
|
|
Destino de la instruc. de salto
Concatenado
—3
Slide 4
Campos en las instrucciones MIPS
op
rs
rt
rd
shamt
6 bits
5 bits
5 bits
5 bits
5 bits
funct
6 bits
= 32 bits
Código de la operación que se realizará
op
rs
Dirección del registro del primer operando fuente
rt
Dirección del registro del segundo operando fuente
Dirección del registro destino
rd
shamt shift amount, para las instrucciones de desplazamiento
(cantidad de desplazamientos)
funct Código de function que selecciona las variantes
específicas de la operación indicada en el campo
de código de operación
Ing. José Alberto Díaz García
—4
Slide 5
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
Ing. José Alberto Díaz García
18
8
0
0x20
—5
Slide 6
Instrucción de cargue
Formato de la instrucción Load/Store I (Formato I):
lw $t0, 24($s3)
35
19
8
2410 + $s3 =
2410
Memoria
0xFFFFFFFF
. . . 0001 1000 (24)D
$t0
+ . . . 1001 0100
$s3
. . . 1010 1100 =
0x120040AC
Ing. José Alberto Díaz García
0x120040AC
0x12004094
datos
0x0000000C
0x00000008
0x00000004
0x00000000
word address (hex)
—6
Slide 7
Instrucción de cargue
Considere la instrucción de cargue una palabra o
almacene una palabra
¿Qué significa aquí el principio de regularidad?
Se introduce un nuevo tipo de formato de instrucción
Pero . . . Un buen diseño demanda buenos compromisos
Tipo I para instrucciones de transferencia de datos)
Ejemplo: lw $t0, 24($s2)
op
rs
rt
16 numero de bits
23hex
18
8
100011
10010
01000
24
0000000000011000
¿Donde se presenta el compromiso?
Ing. José Alberto Díaz García
—7
Slide 8
Instrucción para almacenar
Ejemplo: sw $t0, 24($s2)
op
rs
43
18
101011
10010
rt
16 bit number
8
01000
24
0000000000011000
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)
Ing. José Alberto Díaz García
—8
Slide 9
Instrucciones inmediatas
¿Que tipo de formato utiliza la instrucción addi?
addi $s3, $s3, 4 #$s3 = $s3 + 4
op
8
rs
rt
19
19
16 bits inmediatos
Formato I
4
Formato máquina:
La constante se mantiene dentro de la misma
instrucción!
Los valores límites inmediatos se encuentran en el
rango +215–1 a -215
Ing. José Alberto Díaz García
—9
Slide 10
Código ensamblador
Para el código en C
A[8] = A[2] – b
Las instrucciones en código MIPS es
lw
sub
sw
$t0, 8($s3)
$t0, $t0, $s2
$t0, 32($s3)
#cargue A[2] en $t0
#substraiga b de A[2]
#almacene el resultado en A[8]
lw
35
19
8
sub
0
8
18
sw
43
19
8
Ing. José Alberto Díaz García
8
8
0
34
32
— 10