Professional Documents
Culture Documents
Antecedentes
Procesador 8086: 16 bits 8 meses despus: Procesador 8088. dem 8086 pero bus externo = 8 bits
Compromiso pblico de compatibilidad ascendente. Procesador base de la primer IBM PC
Arquitectura de 16 bits Capacidad de multitasking Sin suficientes recursos de hardware para hostear un UNIX clsico
Antecedentes (2)
Ao 1985: Procesador 80386. Presentacin de la Arquitectura IA-32 Hasta el presente mas de 15 modelos de procesadores compatibles y 7 microarquitecturas diferentes.
Modos de operacin
Real Protegido Virtual 8086 Mantenimiento del Sistema (SMM) Extended Memory 64 Technology (IA-32e)
Modo Compatibilidad (32 bits) Modo 64 bits
Cualquier procesador IA-32 arranca en este modo de operacin. Presenta de manera exacta el entorno de ejecucin de un 8086. Razones de esto: Compatibilidad. Administracin de memoria por medio de segmentos. No posee paginacin
En segmentos En pginas
Segmentacin
Los segmentos son de tamao variable No necesariamente son contiguos. Se pueden solapar o estar disjuntos. Se direcciona por medio de un registro base mas otro que determina un desplazamiento u offset.
Un Contador de Programa a travs de un segmento de cdigo. Un Stack Pointer a travs de un Segmento de pila
Segmentacin (2)
Ventajas.
Manteniendo fijo el valor del segmento el movimiento a travs del mismo se realiza solo con el registro de desplazamiento. Reubicacin en memoria simple de cdigo, pilas y bloques de datos.
Desventajas
Es engorroso administrar memoria con bloques de tamao variable
Paginacin
Desventajas
Si requiero memoria para una variable de 1 byte el sistema me asigna una pgina completa. Si se requiere reubicar cdigo el algoritmo, en principio, es complejo.
Al principio Intel defini organizar el espacio de direccionamiento de la Familia iAPx86 en segmentos. El compromiso de compatibilidad at a los siguientes procesadores a mantener este esquema. Los procesadores 8086 y 8088 definieron 4 registros de segmento para almacenar hasta 4 selectores de segmento. Al trabajar con registros de 16 bits los segmentos tienen a lo sumo 64K de tamao.
15
15 0
Desplazamiento
Selector
16 19 0 Direccin Base
Modo protegido
Modo de trabajo no default, pero natural para este tipo de procesadores Se setea por software desde Modo Real Implementa una alta capacidad de direccionamiento de memoria
4 Gbytes hasta el procesador Pentium y Pentium MMX 64 Gbytes en los procesadores Pentium Pro en adelante (activando por software extensiones de memoria)
Empleado por sistemas operativo modernos. 32 bits Permite el modo Virtual 8086 para ejecutar un programa desarrollado para un procesador 8086/8088 como una tarea en modo protegido.
Modo de trabajo para realizar operaciones especiales como Manejo de energa o seguridad. Introducido por los procesadores 80386SL y 80486SL. Se ingresa por medio de:
Seal de hardware Pin SMI# Mediante un mensaje SMI recibido desde el APIC (Advanced Programmable Interrupt Controller)
Cuando ingresa a este estado el procesador salva el contexto de la tarea en ejecucin. Pasa a ejecutar un software especfico para este modo Cuando termina la ejecucin del cdigo SMM, retorna retomando la tarea interrumpida en el punto exacto en que la abandon.
Permite ejecutar cualquier programa desarrollado en una arquitectura IA-32 sin necesidad de recompilar. Apto para escribir cdigo de sistemas operativos de 64 bits que permitan migrar el cdigo binario existente sin re-compilar el cdigo La arquitectura de programacin es el misma que en IA-32
No compatible con
Tareas que ejecutan con modo Virtual 8086 Tareas manejadas por hardware.
Se referencia normalmente como modo 64 bits Las aplicaciones acceden a un espacio lineal de direcciones de 64 bits, pero fsicamente 40 bits Los registros de propsito general se extienden a 64 bits 16 registros SIMD de 128 bits Por default el tamao de operando es 32 bits El prefijo REX permite trabajar con operandos de 64 bits extendiendo las instrucciones existentes a esta capacidad de operandos
No usa segmentacin slo paginacin Los segmentos son FLATS, pierden sentido los registros selectores
Registros en IA-32
Registro EFLAGS
Flags en IA-32e
Es igual que en IA-32 En vez de llamarse EFLAGS se llama RFLAGS
Flags en IA-32e
Es igual que en IA-32 En vez de llamarse EFLAGS se llama RFLAGS
Modos de direccionamiento
Implcito
Clc (Clear Carry Flag) mov eax,0x20 sub eax,edx add [2C00h],ecx
Inmediato
Registro
Desplazamiento (Directo)
Base
inc [edx] push ebp ;resguardamos ebp mov ebp,esp ;lo apuntamos a la pila mov eax,[ebp+12] ;extraemos el parmetro que est ;12 bytes hacia el fondo de la pila.
Base + desplazamiento
Indexado
Indexado + desplazamiento
mov ebx,0x0B8000; Base buffer video. col: mov ecx, size_row xor edi, edi row: mov [ebx + edi * 2 ],70h ; Video Inverso inc edi ; edi apunta al siguiente elemento ; de 2 bytes loop row ; si CX = 0 complet fila add ebx, 160 cmp ebx, 0x0B9000 ; fin del buffer? jle col
Tipos de datos
Datos en memoria
Nmeros enteros
Set de instrucciones
Leer captulo 5 del IA-32 Intel Architecture Software Developer's Manual (Volume 1: Basic Architecture)
Movimiento de Datos
Manipulacin de la pila
Aritmtica Binaria
Suma y Resta. (ADD, ADC, SUB, SBB) Incremento y decremento (INC, DEC) Comparacin (CMP, NEG) Multiplicacin y Divisin (MUL, DIV, IMUL, IDIV)
Aritmtica Decimal
DAA DAS
Lgicas
AND OR XOR
Shift y Rotate
Bits y Bytes
Transferencias
Incondicionales
JMP, CALL, RET, INT, IRET Jcc (cc = condicin) LOOP JECXZ JCXZ INTO
Condicionales
Strings
MOVSB, MOVSW, MOVSD SCAB, SCAW, SCAD STOSB, STOSW, STOSD LODSB, LODSW, LODSD CMPSB, CMPSW, CMPSD Prefijos de repeticin
Entrada / Salida
IN OUT INSB,
Control de Flags
Carry
STC, CLC, CMC CLD, STD LAHF, SAHF, PUSHF, POPF, PUSHFD, POPFD CLI, STI
Direction Flag
Registro EFLAGS
Flag de Interrupciones
Registros de segmento
MOV y POP
JMP y CALL far. RET far INT, IRET BOUND Carga de punteros far
Miscelneas
Llamadas a subrutinas
Se realizan mediante la instruccin CALL Cuando finaliza la subrutina se ejecuta RET para volver al flujo de programa desde el que se realiz la llamada va CALL. El stack es un espacio lineal de direcciones. Las operaciones son con words o dwords dependiendo del tipo de segmento definido (16 o 32 bits) El stack debe estar alineado a word o dword segn el tipo de segmento.
Referencias
Intel 64 and IA-32 Architecture Software Developers Manual Volume 1: Basic Architecture.
Captulos 1 a 5
Intel 64 and IA-32 Architecture Software Developers Manual Volume 2A: Instruction Set Reference A-M Intel 64 and IA-32 Architecture Software Developers Manual Volume 2B: Instruction Set Reference N-Z