Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Christian Vega
Universidad de Concepción
Departamento de Ingeniería Eléctrica
3 de junio de 2020
Agenda
1 Introducción
2 Arquitecturas de 32 bits
3 Arquitecturas de 64 bits
4 Formato de Programas
5 Instrucciones básicas
Arquitectura de un computador
Representación de programas
Representación de programas
Lenguaje Ensamblador
Algo de historia
1968 1969
Fundación Fundación
1974 1975
8080 (8 bits datos 16 AMD 9080
direcciones, modo (copia del 8080)
real)
1978
8086 (16 bits,
modo real)
1982
IA 32
80286 (16 bits,
modo protegido)
1985
i386 (32 bits,
modo protegido)
1991-2003
1989-2008 AMD 386
i486/Pentium/ (32 K5/K6/Duron/Sempron
x86-64
bits)
2005
2009 AMD64
serie Dual-core Athlon
i3/i5/i7(extendido 64x2/Phenom/AthlonII,
64 bits, multicore, PhenomII/ ......A10/A12
multihilo)
Registros 8088
Registros IA-32
Registros enteros.Almacenan
datos y direcciones
8 registros de 32 bits. Ej.
Registro %eax
Accesibles como 8 registros
de 16 bits. Registro %ax.
Los 4 primeros son
accesibles como bytes.
Registros %ah y %al
Arquitecturas de 64 bits
Características
Punteros de 64 bits.
Enteros long int de 64 bits.
Operaciones enteras de 8, 16, 32 y 64 bits.
16 registros de propósito general.
Operaciones condicionales.
Nuevas instrucciones para operaciones de punto flotante.
Registros x86-64
Data Section
BSS Section
<resType> Longitud
resb 8-bit
resw 16-bit
resd 32-bit
resq 64-bit
resdq 128-bit
Text Section
Tool-Chain - Enlazamiento
Carga
Depuración - Debugging
Depuración
Movimiento de datos
Consideraciones
Truncamiento
Ensanchamiento I
Instrucción movzx
Ensanchamiento II
Instrucciones generalizadas
movsx dest, src
movsxd dest, src
Ensanchamiento III
Operaciones Matemáticas
Operaciones Matemáticas
Instrucción adc
adc dest, src
dest = dest + src + carry
Operaciones Lógicas
Operaciones de desplazamiento I
Operaciones de desplazamiento II
Instrucciones de rotación
Rotación a la izquierda:
rol dest, imm
rol dest, cl
Rotación a la derecha:
ror dest, imm
ror dest, cl
Saltos
Comparaciones
Saltos Condicionales
Saltos condicionales
Ejemplo 1:
cmp rax, 23
je _condicion1
El programa saltara a la dirección de la etiqueta _condicion1
si y solo si el valor en rax es igual 23.
Ejemplo 2:
cmp rax, rbx
jg _condicion2
El programa saltara a la dirección de la etiqueta _condicion2 si
y solo si el valor en rax es superior al valor almacenado en rbx.
Referencias