Professional Documents
Culture Documents
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
l Dura
n Daz
Rau
Departamento de Autom
atica
Escuela Polit
ecnica Superior
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
1 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Contenidos
Iniciaci
on a la arquitectura de la maquina MIPS
Subrutinas
Programando y ejecutando
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
2 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Introduccion
Revisi
on: 1.8
l Dura
n Daz
Rau
3 / 50
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
4 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Arquitectura MIPS
Revisi
on: 1.8
l Dura
n Daz
Rau
5 / 50
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Arquitectura MIPS
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
6 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
24
23
8
4
0
16
15
9
5
1
10
6
2
11
7
3
Direcciones
altas
Direcciones
bajas
Revisi
on: 1.8
l Dura
n Daz
Rau
7 / 50
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
24
11
7
3
23
16
10
6
2
15
8
9
5
1
0
8
4
0
Direcciones
altas
Direcciones
bajas
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
8 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
9 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
N
umero
0
23
47
815
1623
2425
28
29
30
31
Uso
constante 0
resultados, evaluacion de expresiones
argumentos
temporales
preservados en llamadas
temporales
puntero global
puntero de pila
puntero de cuadro
direccion de retorno
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
10 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
11 / 50
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
Ejemplo en C
int g, h, A[100];
g = h + A[8];
Lo mismo, ensamblado
lw $t0, 32($s2)
add $s0, $t0, $s1
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
12 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
13 / 50
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
14 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
15 / 50
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
Operaci
on
Shift left
Shift right
AND bit a bit
OR bit a bit
en C
<<
>>
&
|
en ensamblador
sll $s1,$s2,d
srl $s1,$s2,d
and $s1,$s2,$s3
or $s1,$s2,$s3
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
16 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
Funci
on
$r3 $r1 + $r2
$r3 $r1 - $r2
$r2 $r1 + n
$r2 M[$r1 + n]
M[$r2 + n] $r1
$r1 $r2 << d
$r1 $r2 >> d
$r1 $r2 & $r3
$r1 $r2 | $r3
Atenci
on: El n
umero n puede ser positivo o negativo.
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
17 / 50
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
Tomando decisiones
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
18 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
19 / 50
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
Ensamblamos un bucle
Ejemplo en C
int i, j, k, A[100];
while (A[i] == k) i = i + j;
Lo mismo, ensamblado
Bucle: add $t0, $s0, $s0
add $t0, $t0, $t0
add $t0, $t0, $s3
lw $t1, 0($t0)
bne $t1, $s2, Fin
add $s0, $s0, $s1
j
Bucle
Fin:
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
20 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
21 / 50
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
22 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
Instrucci
on
beq $r1, $r2, etiq
bne $r1, $r2, etiq
slt $r1, $r2, $r3
slti $r1, $r2, n
j etiq
jr $r1
jal etiq
Funci
on
($r1 == $r2)? $PC $PC+etiq :
($r1 != $r2)? $PC $PC+etiq :
($r2 < $r3)? $r1 1 : $r1 0
($r2 < n)? $r1 1 : $r1 0
$PC etiq
$PC $r1
$ra $PC+4; $PC etiq
Atenci
on: Como antes, el n
umero n puede ser positivo o negativo.
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
23 / 50
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
24 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
RS
5 bits
RT
5 bits
RD
5 bits
SHAMT
5 bits
FUNC
6 bits
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
25 / 50
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
RS
5 bits
RT
5 bits
direccion
16 bits
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
26 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
direccion de salto
26 bits
Revisi
on: 1.8
l Dura
n Daz
Rau
27 / 50
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
add
sub
addi
lw
sw
j
Tipo
R
R
I
I
I
J
Opcode
0
0
8
35
43
2
RS
reg
reg
reg
reg
reg
n/a
RT
reg
reg
reg
reg
reg
n/a
RD
reg
reg
n/a
n/a
n/a
n/a
SHAMT
0
0
n/a
n/a
n/a
n/a
FUNC
32
34
n/a
n/a
n/a
n/a
dir
n/a
n/a
inm
dir
dir
n/a
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
28 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
beq
bne
slt
jr
jal
Tipo
I
I
R
R
J
Opcode
4
5
0
0
3
RS
reg
reg
reg
reg
n/a
RT
reg
reg
reg
0
n/a
RD
n/a
n/a
reg
0
n/a
SHAMT
n/a
n/a
0
0
n/a
FUNC
n/a
n/a
42
8
n/a
dir
dir
dir
n/a
n/a
n/a
Revisi
on: 1.8
l Dura
n Daz
Rau
29 / 50
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
sll
srl
sra
and
or
Tipo
R
R
R
R
R
Opcode
0
0
0
0
0
RS
0
0
0
reg
reg
RT
reg
reg
reg
reg
reg
RD
reg
reg
reg
reg
reg
SHAMT
d
d
d
0
0
FUNC
0
2
3
36
37
dir
n/a
n/a
n/a
n/a
n/a
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
30 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Instrucciones b
asicas
Instrucciones de control de flujo
Representaci
on de las instrucciones
Directo: La direcci
on de salto esta (casi) contenida en la
instrucci
on.
Revisi
on: 1.8
l Dura
n Daz
Rau
31 / 50
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Subrutinas o procedimientos
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
32 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Subrutinas o procedimientos
n
Accio
coloca argumentos en un lugar accesible a la subrutina.
transfiere el control.
reserva espacio para su ejecucion.
ejecuta su funcion.
coloca el resultado en un lugar accesible al principal.
devuelve el control al punto de partida.
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
33 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Mas registros. . .
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
34 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Una instrucci
on especialmente pensada nos permite saltar
al comienzo de la subrutina al tiempo que se guarda la
direcci
on de retorno en el registro $ra.
jal Procedimiento
El nombre jal significa jump-and-link. El sentido es que
conservamos en $ra la direccion a la que se debe retornar.
La direcci
on de la instruccion que se ha de ejecutar se guarda
en el registro de instruccion, o $PC. Por tanto la direccion que
se ha de guardar en $ra es $PC+4.
Revisi
on: 1.8
l Dura
n Daz
Rau
35 / 50
3. Instrucciones: lenguaje de la m
aquina
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Esta
realiza los calculos y devuelve el/los resultado(s) en
$v0$v1.
Devuelve el control con un simple jr $ra.
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
36 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
37 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Subrutina en C
int sub1(int g, int h, int i, int j)
{
int f;
f = (g + h) - (i + j);
return f;
}
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
38 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
en ensamblador
$sp,
$t0,
$t1,
$s0,
$sp, 12
8($sp)
4($sp)
0($sp)
...
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
39 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Subrutina en ensamblador
...
add
lw
lw
lw
addi
$s0,
$t1,
$t0,
$sp,
jr
$ra
0($sp)
4($sp)
8($sp)
$sp, 12
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
40 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
41 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
42 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Subrutina recursiva
Subrutina en C
int fact(int n)
{
if (n == 1) return 1;
else
return n*fact(n - 1);
}
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
43 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Subrutina recursiva
Subrutina ensamblada (I)
fact:
subi $sp, $sp, 8
sw
$ra, 4($sp)
sw
$a0, 0($sp)
subi $t0, $a0, 1
bne
$t0, $zero, F1
addi
addi
jr
$v0, $zero, 1
$sp, $sp, 8
$ra
...
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
44 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Subrutina recursiva
Subrutina ensamblada (II)
...
F1: subi
jal
$a0, $a0, 1
fact
lw
lw
addi
$a0, 0($sp)
$ra, 4($sp)
$sp, $sp, 8
mul
jr
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
45 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
No preservados
$t0$t9
$a0$a3
$v0$v1
Memoria debajo de $sp
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
46 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Ciclo de programacion
Programa C
Cdigo ensamblado
Compilador
Cdigo mquina
Ejecutable
Linker
Ensamblador
Programa cargado
Cargador
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
47 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
$gp
7fff fffc
1000 8000
Pila
Datos dinmicos
Datos estticos
1000 0000
Cdigo (texto)
pc
0040 0000
Reservado
0
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
48 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
Segmento de cdigo
Segmento de datos
Informacin de realojo
Tabla de smbolos
Informacin de depuracin
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
49 / 50
Iniciaci
on a la arquitectura de la m
aquina MIPS
Repertorio de instrucciones y modos de direccionamiento
Subrutinas
Programando y ejecutando
COBOL, PL/I
FORTRAN
PASCAL, C
ADA
Java, C++, SmallTalk
...
Revisi
on: 1.8
l Dura
n Daz
Rau
3. Instrucciones: lenguaje de la m
aquina
50 / 50