Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lenguaje ensamblador
Grado en Ingeniería de la Salud
Arquitectura de Computadores y Sistemas Operativos
1
Índice de contenidos
2
¿Juego de Instrucciones?
• Repertorio de instruciones de un
computador
• ≠ Ordenadores → ≠ Juegos de Instrucciones
– Pero muchos aspectos en común
• Primeros ordenadores → Juegos de
instrucciones muy simples
– Simplifica la implementación
• Muchos ordenadores modernos también
tienen juegos de instrucciones simples
3
MIPS-32 ISA
• Categorías Registros
– Aritméticas R0 - R31
– Lógicas
– Acceso Memoria
– Control
– Punto flotante PC
HI
– Especiales
LO
3 Formatos de Instrucciones: 32 bits
4
MIPS (RISC) Principios de Diseño
5
Registros MIPS
Register File
32 bits
• 32 Registros de 32 bits src1 addr
5 32 src1
– 2 puertos de lectura 5 data
src2 addr
– 1 puerto de escritura 32
5 locations
dst addr
32 src2
32
write data data
❑ Los registros son:
l Más rápidos que la memoria principal write control
- Pero los registros mayores son más lentos que el resto.
- Los puertos de lectura y escritura ralentizan el sistema de forma cuadrática
l Fáciles de usar para el compilador
l Pueden almacenar variables
- La densidad del código mejora (los registros son llamados con menor número
de bits que una dirección de memoria)
6
Índice de contenidos
8
Operaciones Aritméticas
9
Índice de contenidos
12
Operaciones Lógicas
• Conjunto: and, or, nor, andi, ori, sll, srl
– Dos orígenes y un destino
and rd, rs, rt
or rd, rs, rt
nor rd, rs, rt
andi rt, rs, inm
ori rt, rs, inm
sll rd, rs, sa
srl rd, rs, sa
13
• and, or, nor, sll, srl: Instrucciones Formato R
– Peculiaridad: sll y srl → desplazamientos
op rs rt rd sa funct
0 0 17 8 10 0x02
• andi, ori: Instrucciones Formato I
14
Índice de contenidos
15
Op. Acceso Memoria
• Conjunto: lw, sw, lh, lhu, sh, lb, lbu, sb, lui
– Un orígen, un destino y un desplazamiento
lw rt, inm(rs)→Carga de memoria
sw rt, inm(rs)→Alm. en memoria
lh rt, inm(rs)
sh rt, inm(rs)
lb rt, inm(rs)
sb rt, inm(rs)
lhu rt, inm(rs)
lbu rt, inm(rs)
lui rt, inm
– Carga (l*): desde la dirección de memoria dada (inm(rs)) al regitro
(rt)
– Almacenamiento (s*): del valor del registro (rt) en la dirección dada
(inm(rs))
16
Op. Acceso Memoria
• Muy útil direccionar por bytes: la mayoría de arquitecturas lo
hacen
– Restricción de alineamiento – la dirección de memoria de una
palabra debe estar en los límites de palabra naturales (en múltiplos
de 4 en el MIPS-32)
• Big Endian: el byte de más a la izquierda es la dirección de la
palabra
IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA
• Little Endian: el byte de más a la derecha es la dirección de la
palabra
Intel 80x86, DEC Vax, DEC Alpha (Windows NT)
18
Índice de contenidos
19
• Saltos Condicionales:
bne $s0, $s1, Lbl #ir a Lbl si $s0$s1
beq $s0, $s1, Lbl #ir a Lbl si $s0=$s1
– Ejemplo: if (i==j) h = i + j;
bne $s0, $s1, Lbl1
add $s3, $s0, $s1
Lbl1: ...
¿?
❑ Instrucciones Formato I
0x05 16 17 16 bit offset
20
Especificando destinos
00
32 32
Add
PC 32 Add
32 Dirección
4 32 ? destino del
32 32 salto
21
Mejoras de Saltos
• Instrucción de Formato R
0 16 17 8 0x24
22
Más Instrucciones de Salto
23
Otras instrucciones de Control
26
00
32
4
PC 32
25
Saltando más allá
26