Arquitectura IA-32mdoallo/presentaciones/20130321-1-I… · Direccionamiento en modo real Ing....

58
Arquitectura IA-32 Ing. Marcelo Doallo Marzo 2013 Ing. Marcelo Doallo Arquitectura IA-32

Transcript of Arquitectura IA-32mdoallo/presentaciones/20130321-1-I… · Direccionamiento en modo real Ing....

Arquitectura IA-32

Ing. Marcelo Doallo

Marzo 2013

Ing. Marcelo Doallo Arquitectura IA-32

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

Modos de operacion (2)

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 Real: Entorno de ejecucion en 16 bits

Ing. Marcelo Doallo Arquitectura IA-32

Direccionamiento en modo real

Ing. Marcelo Doallo Arquitectura IA-32

Ing. Marcelo Doallo Arquitectura IA-32

Reglas de Seleccion de Segmentos

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

Registros en IA-32

Ing. Marcelo Doallo Arquitectura IA-32

Registros en IA-32 (2)

Ing. Marcelo Doallo Arquitectura IA-32

Registros en IA-32 (3)

Ing. Marcelo Doallo Arquitectura IA-32

Registro EFLAGS

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

Registros de proposito general en IA-32e (2)

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

Calculo de la direccion efectiva

Ing. Marcelo Doallo Arquitectura IA-32

Tipos de datos

Ing. Marcelo Doallo Arquitectura IA-32

Datos en memoria

Ing. Marcelo Doallo Arquitectura IA-32

Numeros enteros

Ing. Marcelo Doallo Arquitectura IA-32

Numeros de punto flotante (IEEE 754)

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

Logicas

AND

OR

XOR

Ing. Marcelo Doallo Arquitectura IA-32

Shift y Rotate

SHR

SAR

SHL/SAL

SHRD

SHLD

ROL

ROR

RAL

RAR

Ing. Marcelo Doallo Arquitectura IA-32

Bits y Bytes

BT, BTS, BTR, BTC

BSF, BSR

TEST

SET

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

Entrada / Salida

IN

OUT

INSB, INSW, INSD

OUTSB, OUTSW, OUTSD

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

Miscelaneas

LEA

XLAT, XLATB

CPUID

NOP

UD2

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

Stack en llamadas a subrutina

Ing. Marcelo Doallo Arquitectura IA-32

Llamadas FAR y NEAR en IA-32

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