Está en la página 1de 22

REGISTROS DEL MICROPROCESADOR

MODOS DE OPERACIN
Modo

Real Modo Protegido

Modo Virtual 8086

Modo

Mantenimiento del Sistema (SMM) Modo IA-32e (Intel 64 Architecture)


Modo Compatibilidad (sub modo del modo IA-32e). Modo 64 bits (sub modo del modo IA-32e)

MODO REAL:
Entorno

de ejecucin en 16 bits Cualquier procesador IA-32 arranca en este modo de operacin. Presenta de manera exacta el entorno de ejecucin de un 8086 (compatibilidad). El Modelo de Registros Generales de 32 bits est disponible en Modo Real

MODO PROTEGIDO:
Modo de trabajo no default, pero natural para este tipo de procesadores Se llama 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)

Posee un atributo llamado Virtual 8086 que permite ejecutar un programa desarrollado para un procesador 8086/8088 como una tarea en modo protegido

MODO MANTENIMIENTO DEL SISTEMA (SMM)


Modo

de trabajo para realizar operaciones especiales como Manejo de energa o seguridad. Cuando ingresa a este estado el procesador salva el contexto de la tarea en ejecucin y pasa a ejecutar un bloque de 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. de memoria)

MODO IA-32E
Se

referencia normalmente como modo 64 bits. Las aplicaciones acceden a un espacio lineal de direcciones de 64 bits Los registros de propsito general se extienden a 64 bits. Por default el tamao de operando es 32 bits

ENTORNO BSICO DE EJECUCIN


Espacio de direcciones lineal 4GB (232) Espacio de direcciones fsico 64GB (236) Puertos I/O 8 registros de propsito general 6 registros de segmento EFLAGS, EIP X87 FPU unidad de punto flotante MMX ejecucin de instrucciones SIMD enteras Ejecucin de instrucciones SIMD punto flotante

RECURSOS DEL SISTEMA PARA LA GESTIN DE LA EJECUCIN

Registros de control: CR*[0..4]

Determinan el modo operativo del procesador y las caractersticas de la tarea actual

Registros de control de acceso a memoria


GDTR (Global Descriptor Table Reg), IDTR (interrupt Descriptor Table Reg), LDTR (Local Register Table Reg)

Registros de depuracin
Permiten monitorizar operaciones de depuracin de procesos

Registros para asignar caractersticas a regiones de memoria

MTRRs (memory type range regs)

Etc.

ORGANIZACIN DE LA MEMORIA
Modelo

opcional)

Plano

de

memoria

(+

paginado

Modelo

Segmentado de memoria ( + paginado opcional)

Un simple espacio de direcciones contiguas (0..232-1). Contiene datos, cdigo y stack. Direccin lineal.

Modelo

El espacio de direcciones es dividido en secciones llamadas segmentos. Direccin lgica (Segmento+Offset). Un Selector de Segmento identica el segmento al que se quiere acceder. Es posible manejar 16383 segmentos de hasta 232 bytes cada uno

Real-address de memoria

REGISTROS DE PROPOSITO GENERAL


EAX- Acumulador para operandos y resultados EBX-Puntero a datos en segmento DS ECX-Contador para strings y bucles EDX-Puntero para operaciones I/O ESI-Puntero para datos en DS y fuente en operaciones de cadena EDI-Puntero para datos en ES y destino en operaciones de cadena ESP-Puntero de pila EBP-Puntero para datos en la pila

REGISTROS DE PROPSITO GENERAL

REGISTROS DE SEGMENTO

CS es el registro de segmento de ejecucin, y por tanto CS:EIP es la direccin completa que se est ejecutando (sencillamente anteponemos el CS indicando que nos estamos refiriendo a la direccin EIP en el segmento CS). Este registro no puede ser cargado explcitamente desde una aplicacin, pero ser hace implcitamente por parte de instrucciones internas del procesador para cambiar el control del programa ( hacia una nueva tarea, subproceso, etc. ).

SS es el registro de segmento de pila, por lo que tal y como suceda con CS:EIP, la pila estar siendo apuntada por SS:ESP. DS normalmente es el segmento de datos. Poniendo ya un ejemplo de acceso con la instruccin ADD (sumar), una forma de utilizarla sera "add eax, ds:[ebx]", que aadira al registro EAX el contenido de la direccin de memoria en el segmento DS y la direccin EBX. ES, apunta a distintos segmentos de datos, siendo los dos ltimos poco utilizados. FS y GS al igual que ES son segmentos que apuntan a distintos segmentos de datos, siendo estos poco utilizados.

Los registros DS,ES,FS Y GS apuntan a 4 segmentos de datos; la disponibilidad de 4 registros de datos, nos permite tener una mayor seguridad, ya que se puede dividir los datos en distintos grupos, por ejemplo se pueden cargar las variables inicializadas en el segmento apuntado por DS, las no inicializadas en el segmento apuntado por ES y las variables creadas dinmicamente en el segmento que apunta GS.

REGISTROS SELECTORES DE
SEGMENTO

REGISTRO EFLAGS
Es un registro de 32 bits que contiene un grupo de flags de : Estado Sistema Control Los bits 1,3,5,15 y del 22 al 31 estn reservados y por tanto las aplicaciones que escribamos no deben usarlos ni hacer caso al valor de los mismos. Este registro es usado por los programas para tomar decisiones, por ejemplo si en una operacin de suma el resultado es cero, el bit 6 se pondr a 1, podramos algunas instrucciones de salto que comprueban el estado de los indicadores y que hacen que el programa contine en la lnea siguiente o en cualquier otro lugar. Existen instrucciones para obtener / cambiar el valor de los indicadores, por lo que podremos cambiarlos segn nos interese

REGISTRO DE FLAGS

VM (Virtual 32 bits llamado EFlags. Los bits definidos campos de bits controlan ciertas Es un registro de 8086 Mode, bit 17): Este bit provee el ymodo 8086 virtual dentro del operaciones e indican el estado del 80386. Los 1 cuando elsignificativos (bits 15-0) llevan el nombre modo protegido. Si se pone a 16 bits menos 80386 est en modo protegido, de Flags, que esal modo 8086 virtual, manejando de 8086 y 80286. La descripcin 8086, entrar ms til cuando se ejecuta cdigo los segmentos como lo hace el de los indicadores es lagenerando una excepcin 13 (Fallo general de proteccin) en pero siguiente:

REGISTRO EFLAGS

instrucciones privilegiadas (aqullas que slo se pueden ejecutar en modo real o en el anillo 0).
RF (Resume Flag, bit 16): Este indicador se utiliza junto con los registros de depuracin. Cuando RF vale 1, hace que se ignoren las faltas (hechos que ocasionan una excepcin) de depuracin. RF se pone automticamente a cero luego de ejecutar correctamente cualquier instruccin (no se sealan faltas). (Nested Task, bit 14): Este indicador se aplica al modo protegido. NT se pone a uno para indicar que la ejecucin de la tarea est anidada dentro de otra tarea.

NT

IOPL (Input/Output Privilege Level, bits 13-12): Este campo de dos bits se aplica al modo protegido. IOPL indica el CPL (Current Privilege Level) numricamente mximo (esto es, con menor nivel de privilegio) permitido para realizar instrucciones de entrada/salida sin generar una excepcin 13 (Fallo general de proteccin).

REGISTRO EFLAGS
OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operacin aritmtica con signo, esto es, un dgito significativo se perdi debido a que tamao del resultado es mayor que el tamao del destino.

DF
IF

(Direction Flag, bit 10): Define si ESI y/o EDI se autoincrementan (DF = 0) o autodecrementan (DF = 1) durante instrucciones de cadena.
(INTR enable Flag, bit 9): Si vale 1, permite el reconocimiento de interrupciones externas sealadas en el pin INTR. Cuando vale cero, las interrupciones externas sealadas en el pin INTR no se reconocen. (Trap enable Flag, bit 8): Controla la generacin de la excepcin 1 cuando se ejecuta cdigo paso a paso. Cuando TF = 1, el 80386 genera una excepcin 1 despus que se ejecuta la instruccin en curso. Cuando TF = 0, la excepcin 1 slo puede ocurrir como resultado de las direcciones de punto de parada cargadas en los registros de depuracin (DR0-DR3). (Sign Flag, bit 7): Se pone a 1 si el bit ms significativo del resultado de una operacin aritmtica o lgica vale 1 y se pone a cero en caso contrario.

TF

SF

REGISTRO EFLAGS
ZF AF (Zero Flag, bit 6): Se pone a 1 si todos los bits del resultado valen cero, en caso contrario se pone a cero. (Auxiliary carry Flag, bit 4): Se usa para simplificar la adicin y sustraccin de cantidades BCD empaquetados. AF se pone a 1 si hubo un prstamo o acarreo del bit 3 al 4. De otra manera el indicador se pone a cero. (Parity Flag, bit 2): se pone a uno si los ocho bits menos significativos del resultado tienen un nmero par de unos (paridad par), y se pone a cero en caso de paridad impar (cantidad impar de unos). (Carry Flag, bit 0): Se pone a uno si hubo arrastre (suma) o prstamo (resta) del bit ms significativo del resultado.

PF

CF

OTROS REGISTROS

Finalmente, estn los registros del coprocesador:


(8 registros de 80 bits que contienen nmeros representados en

coma flotante, llamados R0..R7), el GDTR (global descriptor table) IDTR (interrupt descriptor table), los registros de control (CR0, CR2, CR3 y CR4)

ALGUNAS CONSIDERACIONES CON REGISTROS


Cuando se programa bajo Win32, se debe tomar en cuenta lo siguiente:
WINDOWS USA ESI ,EDI EBP Y EBX INTERNAMENTE Y NO ESPERA QUE LOS VALORES EN ESOS REGISTROS CAMBIEN. IMPORTANTE: Si se usa cualquiera de estos cuatro registros en una funcin callback, no olvidar restaurarlos antes de regresar el control a Windows. Una funcin callback es una funcin escrita por t que Windows llama cuando algn evento especfico se produce.

También podría gustarte