Sunteți pe pagina 1din 5

Registros

Los procesadores de 64 bits disponen de una serie de registros formada por registros de propósito
general y registros específicos.

Los registros de propósito son 16 de 64 bits y 6 registros específicos con segmento de 16 bits,
también dispone de un registro de estado de 64 bits (RFLAGS) y de un registro contador de
programa de 64 bits (RIP).

Registros de propósito general

Consta de 16 registros de datos de 64 bits (8 bytes): RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP y R8-
R15.

Los 8 primeros registros se nombran de forma parecida a los 8 registros de propósito general de
32 bits disponibles en la arquitectura de 32 bits (EAX, EBX, ECX, EDX, ESI, EDI, EBP y ESP). Los
registros se pueden acceder de cuatro formas diferentes:

-Como registros de 64 bits (quad word).

-Como registros de 32 bits (double word), se accede a los 32 bits de peso menor.

-Como registros de 16 bits (word), se accede a los 16 bits de peso menor.

-Como registros de 8 bits (byte), accediendo individualmente a uno o dos de los bytes de menor
peso según el registro.

El acceso a registros de byte tiene ciertas limitaciones según el registro.

La nomenclatura que se utiliza según si se quiere acceder a registros de 8, 16, 32 o 64 bits y según
el registro se muestra en la figura siguiente:

Registros de 64 bits
Existen limitaciones en el uso de registros de propósito general:

-En una misma instrucción no se puede usar un registro del grupo AH,

BH, CH, DH junto con cualquiera del grupo SIL, DIL, BPL, SPL, R8B – R15B.

-Registro RSP: posee una función especial, es el apuntador de pila, contiene siempre la dirección
del primer elemento de la pila. No es posible utilizarlo con otra finalidad, pues perderíamos el
acceso a la pila.

-Cuando se utiliza un registro de 32 bits como operando destino de una instrucción, la parte alta
del registro se fija a 0.

Registros de propósito específico

Existen varios registros de propósito específico:

Registros de segmento:

Hay 6 registros de segmento de 16 bits.

- CS: code segment

- DS: data segment

- SS: stack segment

- ES: extra segment

- FS: extra segment

- GS: extra segment


Estos registros son usados en modelos de memoria segmentados (heredados de la arquitectura de
32 bits). En estos modelos, la memoria se divide en segmentos, de forma que en un momento
dado el procesador solo puede acceder a seis segmentos de memoria usando cada uno de los seis
registros de segmento.

En el modo de 64 de bits, estos registros apenas se utilizan, pues se trabaja con un modelo de
memoria lineal y el valor de estos registros se establece en 0 (excepto para los registros FS y GS,
que pueden ser usados como registros base en el cálculo de direcciones).

Registro de instrucción o instruction pointer (RIP): es el registro contador de programa (PC) y


contiene la dirección efectiva (o dirección lineal) de 64 bits de la instrucción siguiente que se ha de
ejecutar.

Cada vez que se lee la siguiente instrucción de la memoria, este registro se actualiza con la
dirección de la instrucción siguiente que se tiene que ejecutar; también se puede modificar el
contenido de este registro durante la ejecución de una instrucción de ruptura de secuencia (una
llamada a una subrutina, o bien a través de un salto condicional o incondicional).

Registro de estado o Flags register (RFLAGS): este registro posee información sobre el estado
interno del procesador e información sobre el resultado de la ejecución de las instrucciones, es
también de 64 bits.

Pero sólo se usa la parte baja del registro (bits de 31 a 0), que corresponde al registro EFLAGS de la
arquitectura de 32 bits. La parte alta no se utiliza.

El registro de estado se utiliza para consultar el valor individual de cada uno de sus bits; eso se
realiza a través de instrucciones específicas, como las instrucciones de salto condicional que
consultan uno o más bits para determinar si saltan o no según el estado de alguno de estos bits.

La última instrucción que los ha modificado no tiene por qué ser la última instrucción que se haya
ejecutado.

Flags de 64 bits

A continuación se muestra una tabla con el significado de los bits de este registro.
tabla de flags de 64 bits

tomado de Cartagena99.com

Modo extendido de 64 bits

El modo extendido de 64 bits es el modo que utilizan los sistemas operativos de 64 bits. Este modo
general dispone de un modo de operación de 64 bits y un modo de compatibilidad con los modos
de operación anteriores de las arquitecturas de 16 y 32 bits.

En un sistema operativo de 64 bits, los programas de 64 bits se ejecutan en modo de 64 bits y las
aplicaciones de 16 y 32 bits se ejecutan en modo de compatibilidad. Los programas de 16 y 32 bits
que se tengan que ejecutar en modo real o virtual x86 no se podrán ejecutar en modo extendido
a no ser que sean emulados.

Modo de 64 bits

El modo de 64 bits permite el acceso a 16 registros generales de 64 bits cada uno. En este modo
se utilizan direcciones virtuales (o lineales) que por defecto son de 64 bits y también permite
acceder a un espacio de memoria lineal de 264 bytes.

El tamaño por defecto de los registros operadores se mantiene en 32 bits para la mayor parte de
las instrucciones. Se permite cambiar este tamaño por defecto de forma individual en cada
instrucción a través de modificadores. Por otra parte permite el direccionamiento relativo al PC
(RIP en esta arquitectura) en el acceso a los datos de cualquier instrucción.

Modo de compatibilidad

Este modo permite a un sistema operativo de 64 bits ejecutar directamente aplicaciones de 16 y


32 bits sin tener que recompilarlas. En este modo, las aplicaciones utilizan direcciones de 16 y 32
bits, y tienen acceso a un espacio de memoria de 4 Gb. El tamaño de los operandos puede ser de
16 o 32 bits. Las aplicaciones, lo ven como si se estuviera trabajando en modo protegido dentro
del modo heredado.

Modo heredado de 16 y 32 bits

El modo heredado de 16 y 32 bits lo utilizan los sistemas operativos de 16 y 32 bits. Cuando el


sistema operativo utiliza estos modos de 16 bits o de 32 bits, el procesador actúa como un
procesador x86 y solo se puede ejecutar código de 16 o 32 bits. Este modo solo permite utilizar
direcciones de 32 bits, de este modo, se limita el espacio de direcciones virtual a 4 GB. Dentro de
este modo general hay tres modos:

Modo real. Implementa el modo de programación del microprocesador Intel 8086, pero con la
capacidad de permitir pasar al modo protegido o al modo de gestión del sistema. El procesador se
inicia en modo real al arrancar el sistema y cuando se reinicia. Es el único modo de operación que
permite utilizar un sistema operativo de 16 bits.

El modo real dispone de un espacio de memoria de 1 MB con direcciones de memoria de 20 bits y


con acceso a direcciones hardware (como el sistema de E/S). No proporciona protección de
memoria en sistemas multitarea ni de código con diferentes niveles de privilegio.

Modo protegido. Es el modo por defecto del procesador. Puede usar características como
memoria virtual, paginación o multitarea. Las capacidades de este modo incluyen la posibilidad de
ejecutar código en modo real, modo virtual-8086, en cualquier tarea en ejecución.

Modo virtual 8086. Posibilita ejecutar programas de 16 bits como si fueran tareas dentro del modo
protegido.

Modo de gestión de sistema

Este modo, también llamado system management mode (SMM) consiste en un modo de
operación transparente del software convencional (sistema operativo y aplicaciones). Consiste en
la suspensión de la ejecución normal (incluido el sistema operativo) y se ejecuta un software
especial con grandes niveles de privilegios, diseñado específicamente para controlar el sistema.

Las tareas habituales de este modo, son tales como la gestión de energía, la depuración asistida
por hardware, ejecución de microhardware (software asistido por hardware).

Este modo es el que utiliza la BIOS y los controladores de dispositivo de bajo nivel. Se accede al
SMM a través de una interrupción de gestión del sistema (SMI, system management interrupt).
Este tipo de peticiones se generan con acontecimientos independientes o pueden ser disparadas
a través del software del sistema al acceder a una dirección de E/S considerada especial por la
lógica de control del sistema.

Basado en Programación en Ensamblador (x86-64)

S-ar putea să vă placă și