arquitectura ia-32mdoallo/presentaciones/20130321-1-i… · direccionamiento en modo real ing....
TRANSCRIPT
Antecedentes
Ano 1978: Se lanza la familia iaPx86Procesador 8086: 16 bits8 meses despues: Procesador 8088. Idem 8086 pero busexterno = 8 bits
Compromiso publico de compatibilidad ascendenteProcesador base de la primer IBM PC
Ano 1982: Procesador 80286Arquitectura de 16 bitsCapacidad de multitaskingSin suficientes recursos de hardware para hostear un UNIXclasico
Ing. Marcelo Doallo Arquitectura IA-32
Antecedentes (2)
Ano 1985: Procesador 80386. Presentacion de laArquitectura IA-32Hasta el presente mas de 15 modelos de procesadorescompatibles y 7 microarquitecturas diferentes.
Ing. Marcelo Doallo Arquitectura IA-32
Modos de operacion
RealProtegidoVirtual 8086Mantenimiento del Sistema (SMM)Extended Memory 64 Technology (IA-32e)
Modo Compatibilidad (32 bits)Modo 64 bits
Ing. Marcelo Doallo Arquitectura IA-32
Modo Real: Entorno de ejecucion en 16 bits
Cualquier procesador IA-32 arranca en este modo deoperacionPresenta de manera exacta el entorno de ejecucion de un8086Razones de esto: CompatibilidadAdministracion de memoria por medio de segmentosNo posee paginacion
Ing. Marcelo Doallo Arquitectura IA-32
Administracion de memoria - Generalidades
Existen dos formas de organizar la memoria de un computador
Por segmentospor paginas
Ing. Marcelo Doallo Arquitectura IA-32
Segmentacion
Los segmentos son de tamano variableNo necesariamente son contiguosSe pueden solapar o estar disjuntosSe direcciona por medio de un registro base mas otro quedetermina un desplazamiento u offset
Un contador de programa a traves de un segmento decodigoUn puntero a la pila a traves de un segmento de datosDos punteros para segmentos de datos
Ing. Marcelo Doallo Arquitectura IA-32
Segmentacion (2)
Ventajas:
Manteniendo fijo el valor del segmento el movimiento atraves del mismo se realiza solo con el registro dedesplazamientoReubicacion en memoria simple de codigo, pilas y bloquesde datos
Desventajas:
Es engorroso administrar memoria con bloques de tamanovariable
Ing. Marcelo Doallo Arquitectura IA-32
Paginacion
Tamano fijo. Ej: 4 KbytesNo se solapanVentajas:
Administracion simple de la memoria (tamano fijo)Desventajas:
Si requiero memoria para una variable de 1 byte el sistemame asigna una pagina completaSi se requiere reubicar codigo el algoritmo, en principio, escomplejo.
Ing. Marcelo Doallo Arquitectura IA-32
Administracion de Memoria en x86
Al principio Intel definio organizar el espacio dedireccionamiento de la Familia iAPx86 en segmentosEl compromiso de compatibilidad ato a los siguientesprocesadores a mantener este esquemaLos procesadores 8086 y 8088 definieron 4 registros desegmento para almacenar hasta 4 selectores de segmentoAl trabajar con registros de 16 bits los segmentos tienen alo sumo 64K de tamano
Ing. Marcelo Doallo Arquitectura IA-32
Modo protegido
Modo de trabajo no default, pero natural para este tipo deprocesadoresSe setea por software desde Modo RealImplementa una alta capacidad de direccionamiento dememoria
4 Gbytes hasta el procesador Pentium y Pentium MMX64 Gbytes en los procesadores Pentium Pro en adelante(activando por software extensiones de memoria)
Ing. Marcelo Doallo Arquitectura IA-32
Modo protegido (2)
Empleado por sistemas operativo modernos32 bitsPermite el modo Virtual 8086 para ejecutar un programadesarrollado para un procesador 8086/8088 como unatarea en modo protegido
Ing. Marcelo Doallo Arquitectura IA-32
Modo Mantenimiento del Sistema (SMM)
Modo de trabajo para realizar operaciones especialescomo Manejo de energıa o seguridadIntroducido por los procesadores 80386SL y 80486SLSe ingresa por medio de:
Senal de hardware Pin SMI#Mediante un mensaje SMI recibido desde el APIC(Advanced Programmable Interrupt Controller)
Ing. Marcelo Doallo Arquitectura IA-32
Modo Mantenimiento del Sistema (2)
Cuando ingresa a este estado el procesador salva elcontexto de la tarea en ejecucionPasa a ejecutar un software especıfico para este modoCuando termina la ejecucion del codigo SMM, retornaretomando la tarea interrumpida en el punto exacto en quela abandono
Ing. Marcelo Doallo Arquitectura IA-32
Modo IA-32e
En este modo el procesador posee dos sub-modos:
Modo CompatibilidadModo 64 bits
Ing. Marcelo Doallo Arquitectura IA-32
Modo IA-32e - Modo Compatibilidad
Permite ejecutar cualquier programa desarrollado en unaarquitectura IA-32 sin necesidad de recompilarApto para escribir codigo de sistemas operativos de 64 bitsque permitan correr codigo existente sin recompilarLa arquitectura de programacion es el misma que en IA-32
Mismos registrosMismo espacio de direccionamiento de memoria
Ing. Marcelo Doallo Arquitectura IA-32
Modo IA-32e - Modo Compatibilidad (2)
No compatible con:Tareas que ejecutan con modo Virtual 8086Tareas manejadas por hardware.
El procesador esta en este modo cuando se accede a unsegmento de codigo descripto de 32 bits.
Ing. Marcelo Doallo Arquitectura IA-32
Modo IA-32e - Modo 64 bits
Se lo denimina normalmente como modo 64 bitsLas aplicaciones acceden a un espacio lineal dedirecciones de 64 bits, pero fısicamente puede ser inferioren bits (Por Ejemplo: 40 bits)Los registros de proposito general se extienden a 64 bits16 registros SIMD de 128 bits
Ing. Marcelo Doallo Arquitectura IA-32
Modo IA-32e - Modo 64 bits (2)
Por default el tamano de operando es 32 bitsEl prefijo REX permite trabajar con operandos de 64 bitsextendiendo las instrucciones existentes a esta capacidadde operandosNo usa segmentacion, solo paginacionLos segmentos son FLATS, pierden importancia losregistros selectores en algunos casos
Ing. Marcelo Doallo Arquitectura IA-32
Flags en IA-32e
Es igual que en IA-32En vez de llamarse EFLAGS se llama RFLAGS
Ing. Marcelo Doallo Arquitectura IA-32
Registros de proposito general en IA-32e
32 bits: EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP, R8D aR15D64 bits: RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, R8 aR15Con el prefijo REX se accede a mas cantidad de registos.
Ing. Marcelo Doallo Arquitectura IA-32
Modos de direccionamiento
Implıcitoclc (Clear Carry Flag)Inmediatomov eax,0x20Registrosub eax,edxDesplazamiento (Directo)add [2C00h],ecx
Ing. Marcelo Doallo Arquitectura IA-32
Modos de direccionamiento indirecto
Baseinc [edx]Base + desplazamientopush ebp ;resguardamos ebpmov ebp,esp ;lo apuntamos a la pilamov eax,[ebp+12] ;extraemos el parametro que esta
;12 bytes hacia el fondo de la pila.
Ing. Marcelo Doallo Arquitectura IA-32
Modos de direccionamiento indirecto (2)
Indexadomov ecx, size tablamov esi, tablamas:and [esi],0xFEinc esiloop masIndexado + desplazamientoand [esi + 4],0xFE
Ing. Marcelo Doallo Arquitectura IA-32
Modos de direccionamiento indirecto (3)
Base + Indexado * escalamov ebx, 0x0B8000 ; Base buffer video.col:mov ecx, size rowxor edi, edirow:mov [ebx + edi * 2 ], 70h ; Video Inversoinc edi ; edi apunta al siguiente
; elemento de 2 bytesloop row ; si CX = 0 completo filaadd ebx, 160cmp ebx, 0x0B9000 ; fin del buffer?jle col
Ing. Marcelo Doallo Arquitectura IA-32
Set de instrucciones
Leer capıtulo 5 del “IA-32 Intel Architecture SoftwareDeveloper’s Manual” (Volume 1: Basic Architecture)
Ing. Marcelo Doallo Arquitectura IA-32
Movimiento de Datos
MovimientosMOVMovimiento CondicionalCMOVExchangeXCHG, BSWAP, CMPXCHG, CMPXCHG8B
Ing. Marcelo Doallo Arquitectura IA-32
Movimiento de Datos (2)
Manipulacion de la pilaPUSH y POPPUSHA y POPAENTER y LEAVEConversion de tiposCBW, CWD, CWDE
Ing. Marcelo Doallo Arquitectura IA-32
Aritmetica Binaria
Suma y RestaADD, ADC, SUB, SBBIncremento y decrementoINC, DECComparacionCMP, NEGMultiplicacion y DivisionMUL, DIV, IMUL, IDIV
Ing. Marcelo Doallo Arquitectura IA-32
Aritmetica Decimal
Ajustes decimales para numeros BCD empaquetadosDAADASAjustes decimales para numeros BCD DesempaquetadosAAAAASAAMAAD
Ing. Marcelo Doallo Arquitectura IA-32
Transferencias
IncondicionalesJMP, CALL, RET, INT, IRETCondicionalesJcc (cc = condicion)LOOPJECXZJCXZINTO
Ing. Marcelo Doallo Arquitectura IA-32
Strings
MOVSB, MOVSW, MOVSD
SCAB, SCAW, SCAD
STOSB, STOSW, STOSD
LODSB, LODSW, LODSD
CMPSB, CMPSW, CMPSD
Prefijos de repeticion
REPREPZ, REPEREPNZ, REPNE
Ing. Marcelo Doallo Arquitectura IA-32
Control de Flags
CarrySTC, CLC, CMCDirection FlagCLD, STDRegistro EFLAGSLAHF, SAHF, PUSHF, POPF, PUSHFD, POPFDFlag de InterrupcionesCLI, STI
Ing. Marcelo Doallo Arquitectura IA-32
Operaciones con registros de segmento
MOV y POP. El operando destino puede ser DS, ES, SS, FS, oGS (registros de segmento), pero no CS
JMP, CALL far, RET far, INT y IRET. Alteran CS
BOUND
LDS, LES, LSS, LFS, LGS. Cargan punteros
Ing. Marcelo Doallo Arquitectura IA-32
Llamadas a subrutinas
Se realizan mediante la instruccion CALLCuando finaliza la subrutina se ejecuta RET para volver alflujo de programa desde el que se realizo la llamada vıaCALLEl stack es un espacio lineal de direcciones, allı sealmacena la direccion de retornoLas operaciones son con words o dwords dependiendo deltipo de segmento definido (16 o 32 bits)El stack debe estar alineado a word o dword segun el tipode segmento
Ing. Marcelo Doallo Arquitectura IA-32
Referencias
Intel R© 64 and IA-32 Architecture Software Developer’sManual Volume 1: Basic Architecture.Capıtulos 1 a 5Intel R© 64 and IA-32 Architecture Software Developer’sManual Volume 2A: Instruction Set Reference A-MIntel R© 64 and IA-32 Architecture Software Developer’sManual Volume 2B: Instruction Set Reference N-Z
Ing. Marcelo Doallo Arquitectura IA-32