Ia32 introduccion
-
Upload
erwin-meza -
Category
Documents
-
view
1.153 -
download
3
description
Transcript of Ia32 introduccion
![Page 1: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/1.jpg)
Arquitectura IA-32
Introducción
Erwin Meza Vega
![Page 2: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/2.jpg)
Arquitectura Intel IA-32
Arquitectura de microprocesadores creada por Intel
• Incluye una gran cantidad de procesadores Intel e Intel Compatibles (AMD, VIA, etc.)
• Comienza con los procesadores 386 (registros de 32 bits), en 1985.
• Abarca hasta procesadores de última generación
• Cada generación de procesadores incluye mejoras a la arquitectura, pero a nivel básico todas son compatibles.
![Page 3: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/3.jpg)
Modos de Operación
• Modo protegido: Modo nativo de operación del procesador.
• Modo Real (Modo Real de Direcciones): Modo de operación en el cual opera el procesador cuando es iniciado o re-iniciado
• Modo de Mantenimiento: Permite realizar tareas de mantenimiento y depuración
• Modo IA32e : Modo de operación que existe en procesadores de 64 bits
• Modo de Compatibilidad: Permite ejecutar código en modo protegido
• Modo de 64 bits: Permite tener acceso a todas las capacidades de 64 bits (Registros, instrucciones, direccionamiento de memoria, etc).
![Page 4: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/4.jpg)
Entorno de Ejecución
• Espacio de Direcciones de Memoria
• Espacio de Direcciones de Entrada/Salida
• Registros
• Estructuras de Datos
![Page 5: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/5.jpg)
Entorno de Ejecución
• Espacio de Direcciones de Memoria
• Espacio de Direcciones de Entrada/Salida
• Registros
• Estructuras de Datos
![Page 6: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/6.jpg)
Espacio de Direcciones de Memoria
Permite manejar la memoria como una secuencia de bytes
• Espacio Lineal de Direcciones: Es aquel que puede ser referenciado por los registros del procesador
• Espacio Físico de Direcciones: Espacio de memoria que efectivamente se tiene (RAM)
• El espacio lineal en la Arquitectura IA-32 se referencia en “Regiones”, denominadas “Segmentos”. De esta forma en IA-32 se opera con memoria “Segmentada”
![Page 7: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/7.jpg)
Espacio Lineal vs. Espacio Físico
Dirección de memoria
Registro de N bits
Espacio Lineal de Memoria 2N – 1 bytes
0
Espacio Físico de Memoria (RAM) Si los registros del
procesador tienen N bits y se usan para almacenar direcciones de memoria (bytes), es posible tener un espacio Lineal de 2N bytes.
Dir. Lineal Dir. Física Dato en Memoria Dato
![Page 8: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/8.jpg)
Espacio Lineal y Espacio Físico
Espacio Lineal de Direcciones
Dirección Lineal
Espacio Físico La Dirección Lineal se transforma en Dirección Física de acuerdo con el Modo Operación del Procesador y las características habilitadas
Dirección Física
![Page 9: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/9.jpg)
Segmentación
Conceptualmente existen tres modos diferentes de usar el espacio de direcciones de memoria:
• Modo Segmentado: El espacio lineal se divide en Segmentos de tamaño variable.
• Modo Real: El espacio lineal se maneja como una serie de “Segmentos” de tamaño fijo (64 KB)
• Modo Plano (Flat): El espacio lineal se maneja como segmentos que ocupan todo el espacio lineal
Los dos últimos casos son casos especiales del Modo Segmentado, por lo cual el procesador siempre usa segmentación.
En IA-32 los segmentos se pueden superponer.
![Page 10: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/10.jpg)
Dirección Lógica, Lineal, Física
El procesador en todo momento usa segmentación, por lo tanto las direcciones que se especifican en los programas son Direcciones Lógicas
Las Direcciones Lógicas en formato selector:offset se transforman en Direcciones Lineales, de acuerdo con el modo de operación del procesador
Las Direcciones Lineales se transforman en Direcciones Físicas, de acuerdo con el modo de operación del procesador
![Page 11: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/11.jpg)
Segmentos y Referencias a Memoria
selector Offset (N bits)
Dirección Lógica
Espacio lineal de Memoria Segmento en memoria lineal
:
base
offset
Con el selector se halla la dirección lineal de inicio del segmento (base)
Byte referenciado
Dirección lineal
2N - 1
0
Espacio físico de Memoria
Byte en memoria física
Dirección Física Dirección lógica Selector : offset
+
![Page 12: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/12.jpg)
Modo Real
selector offset
Dirección Lógica
Espacio lineal de Memoria
Segmento en memoria (64 KB)
:
base
offset
En Modo Real el selector almacena la dirección base del segmento dividida en 16
Byte referenciado Dirección lineal
220 - 1
0
En Modo Real solo se puede usar un offset de 16 bits, por lo cual el tamaño de los segmentos es de 64 KB
En modo Real se puede acceder sólo al primer MegaByte de memoria
+
![Page 13: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/13.jpg)
Modo Plano
selector offset
Dirección lógica
Segmento en memoria
(Mismo tamaño del espacio lineal)
:
base
offset
En el modo plano el selector siempre referencia un segmento con base 0
Byte referenciado Dirección lineal
0
232 - 1
offset Dirección lineal =
En el modo plano el tamaño de todos los segmentos es igual al tamaño del espacio lineal. Para procesadores de 32 bits, este tamaño es 232 = 4 GB
![Page 14: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/14.jpg)
Modo de Operación vs. Modo de Organización de Memoria
![Page 15: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/15.jpg)
Entorno de Ejecución
• Espacio de Direcciones de Memoria
• Espacio de Direcciones de Entrada/Salida
• Registros
• Estructuras de Datos
![Page 16: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/16.jpg)
Espacio de Direcciones de E/S
Espacio de direcciones independiente que tiene un tamaño de 65536 bytes (64K)
Las direcciones de este espacio se mapean a los registros de los controladores de dispositivos de entrada / salida como el teclado, los discos o el mouse.
Su acceso se realiza a través de un par de instrucciones específicas del procesador (in y out). Los registros poseen por lo general un tamaño de un byte o dos bytes
![Page 17: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/17.jpg)
Espacio de Direcciones de E/S
1 byte
0
65535
1 byte
Disco
estado
control
Controlador del disco
Espacio de direcciones de E/S
Mecanismo físico del Disco
![Page 18: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/18.jpg)
Entorno de Ejecución
• Espacio de Direcciones de Memoria
• Espacio de Direcciones de Entrada/Salida
• Registros
• Estructuras de Datos
![Page 19: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/19.jpg)
Registros
Permiten almacenar datos, referenciar la memoria o referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
![Page 20: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/20.jpg)
Registros
Permiten almacenar datos, referenciar la memoria o referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
![Page 21: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/21.jpg)
Registros de Propósito General
Se usan para almacenar datos y/o referencias a la memoria.
En procesadores de 32 bits existen ocho (8) registros de propósito general, cada uno de los cuales tiene un tamaño de 32 bits. Estos registros son: EAX, EBX, ECX, EDX, ESI, EDI, ESP y EBP.
Para procesadores de 64 bits, los registros se denominan RAX, RBX, RCX, RDX, RSI, RDI, RSP y RBP
![Page 22: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/22.jpg)
Registros de Propósito General
![Page 23: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/23.jpg)
Registros de Propósito General
![Page 24: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/24.jpg)
Registros y Memoria – Little Endian
![Page 25: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/25.jpg)
Registros
Permiten almacenar datos, referenciar la memoria o referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
![Page 26: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/26.jpg)
Registros de Segmento
Permiten almacenar apuntadores al espacio de direcciones lineal. Los procesadores IA-32 poseen seis (6) registros de segmento. Estos son:
CS (código)
DS (datos)
ES (datos)
FS (datos)
GS (datos)
SS (pila)
Los registros de segmento almacenan la parte del “Selector” de una dirección lógica en IA-32
![Page 27: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/27.jpg)
Traducción de Dirección Lógica a Lineal (Modo Real)
![Page 28: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/28.jpg)
Traducción de Dirección Lógica a Lineal (Modo Protegido)
![Page 29: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/29.jpg)
Registros
Permiten almacenar datos, referenciar la memoria o referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
![Page 30: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/30.jpg)
Registro EFLAGS
Contiene una serie de banderas (Flags) que tienen diversos usos. Algunas reflejan el estado del procesador y otras controlan su ejecución.
Existen instrucciones específicas para modificar el valor de EFLAGS (ej: sti, cli).
Para procesadores de 64 bits, este registro se denomina RFLAGS
![Page 31: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/31.jpg)
Registro EFLAGS
![Page 32: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/32.jpg)
Registros
Permiten almacenar datos, referenciar la memoria o referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
![Page 33: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/33.jpg)
Registro EIP
El procesador siempre ejecuta la instrucción que se encuentra en la dirección lineal obtenida a partir de la dirección lógica CS: EIP (en modo protegido) o CS: IP (en modo real)
Ciclo Fetch – Decode – Execute:
• El procesador lee la instrucción apuntada por CS:EIP
• Incrementa EIP
• Decodifica la instrucción y los operandos
• Ejecuta la instrucción
• El proceso se repite…
![Page 34: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/34.jpg)
Registro EIP
![Page 35: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/35.jpg)
Registros
Permiten almacenar datos, referenciar la memoria o referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
![Page 36: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/36.jpg)
Registros de Control
El procesador posee cinco (5) registros de control CR0 a CR4. Estos registros junto con EFLAGS controlan la ejecución del procesador. En procesadores de 64 bits, el procesador cuenta además con el registro CR8.
![Page 37: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/37.jpg)
Registro CR0
![Page 38: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/38.jpg)
Registro CR1
Este registro se encuentra “reservado” en IA-32 para uso futuro.
![Page 39: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/39.jpg)
Registro CR2
Sólo se usa cuando se ha activado la “Paginación”, una característica usada por la MMU en modo protegido para traducir una dirección lineal a dirección física
Cuando una dirección lineal no referencia a una “página” que se encuentre en memoria, el procesador lanza una Excepción (Fallo de página) y almacena la dirección que generó en fallo en CR2
![Page 40: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/40.jpg)
Registro CR3
Este registro almacena la dirección de memoria en l cual se almacena el “Directorio de Tablas de Página”. Esta estructura de datos se usa por la MMU cuando se ha habilitado la paginación en Modo Protegido.
![Page 41: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/41.jpg)
Registro CR4
![Page 42: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/42.jpg)
Entorno de Ejecución
• Espacio de Direcciones de Memoria
• Espacio de Direcciones de Entrada/Salida
• Registros
• Estructuras de Datos
![Page 43: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/43.jpg)
Estructuras de Datos del Procesador
Necesarias para la ejecución del procesador, en sus diferentes modos de operación
• En Modo Real: IDT
• En Modo Protegido: GDT, LDT, IDT
• Multi – Tarea: TSS
![Page 44: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/44.jpg)
Modo Real: IDT
IDT: Tabla de Descriptores de Interrupción
Cuando ocurre una interrupción, el procesador “detiene” lo que está ejecutando y “pasa” a ejecutar una Rutina para atender la interrupción
La IDT almacena “Descriptores” que le permiten al procesador conocer la ubicación de memoria de cada rutina de manejo de interrupción
• En Modo Real, la IDT se encuentra al inicio de la memoria física (posición 0) y contiene 256 entradas.
• La entrada i (descriptor) contiene la dirección lógica (selector : offset) en la cual se encuentra la Rutina de Manejo de la Interrupción i
• Es configurada por la BIOS cuando inicia el sistema
![Page 45: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/45.jpg)
Modo Real: IDT
Memoria RAM
IDT
Selector : offset
Selector : offset
Selector : offset
…
Selector : offset
0
255
Rutina de Manejo de Interrupción
Rutina de Manejo de Interrupción
Descriptor
Tabla de Descriptores de Interrupción
![Page 46: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/46.jpg)
Estructuras de Datos en Modo Protegido
Controlan la ejecución del procesador en Modo Protegido
• GDT: Tabla Global de Descriptores de Segmento
• LDT: Tabla Local de Descriptores de Segmento
• IDT: Tabla de Descriptores de Interrupción
• TSS: Segmento de Estado de Tarea
• PTD: Directorio de Tablas de Página
![Page 47: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/47.jpg)
Estructuras de Datos en Modo Protegido
Para operar en Modo Protegido no es necesario configurar todas las estructuras de datos
• Como mínimo se requiere configurar y cargar la GDT para entrar en Modo Protegido
• Si se planea usar interrupciones (e.g. usar dispositivos de E/S o el timer), se debe configurar y cargar la IDT
• Si se planea implementar multi-tarea, se debe configurar y cargar un TSS
• Si se planea usar paginación para administrar la memoria, se debe configurar y cargar un Directorio de Tablas de Página
• Cada tarea puede tener opcionalmente su propia Tabla Local de Descriptores (LDT) o puede usar la GDT.
![Page 48: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/48.jpg)
GDT: Tabla Global de Descriptores
• Controla la gestión de la memoria en Modo Protegido
• Consiste en una secuencia (arreglo) de “Descriptores” de Segmento, cada uno describe un segmento de memoria
• Se debe configurar como mínimo un descriptor de segmento para el código del kernel, y un descriptor de segmento para los datos del kernel
• El procesador referencia la GDT con un registro especial, llamado GDTR.
• Toda dirección en código es lógica
• Un registro de segmento almacena el selector
• Un registro de propósito general almacena el desplazamiento
![Page 49: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/49.jpg)
Funcionamiento General de la GDT
Selector Offset
Protección | Tipo Base | Límite
Protección | Tipo Base | Límite
Protección | Tipo Base | Límite
…
Protección | Tipo Base | Límite
Dirección Lógica
Índice
TI
R P L
3
0
2 1 15
15
TI: Indicador de Tabla 0 = GDT, 1 = LDT
RPL: Nivel de Privilegios: 0 - 3
31 0
base
0 31
offset
0 31 +
Dirección Lineal
Base de la GDT Tamaño de la GDT
0 31 0 15
Registro GDTR
0
![Page 50: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/50.jpg)
Formato de un Descriptor de Segmento
![Page 51: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/51.jpg)
LDT: Tabla Local de Descriptores
• Tiene el mismo formato de la GDT
• Todas sus entradas (incluyendo la primera) se pueden utilizar
• Puede ser usada para definir segmentos de memoria para múltiples tareas
• El procesador sabe en cual tabla buscar un descriptor de segmento a partir de un selector, por su atributo ‘TI’
![Page 52: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/52.jpg)
Funcionamiento General de la GDT / IDT
Selector Offset
Protección | Tipo Base | Límite
Protección | Tipo Base | Límite
Protección | Tipo Base | Límite
…
Protección | Tipo Base | Límite
Dirección Lógica
Índice TI
R P L
3
0
2 1 15
15
TI: Indicador de Tabla 0 = GDT, 1 = LDT
RPL: Nivel de Privilegios: 0 - 3
31 0
base
0 31
offset
0 31 +
Dirección Lineal
Base de la GDT Tamaño de la GDT
0 31 0 15
Registro GDTR
0
![Page 53: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/53.jpg)
IDT: Tabla de Descriptores de Interrupción
En modo protegido, cada entrada de la IDT almacena un descriptor que contiene la dirección lógica (selector : offset) en la cual se encuentra la Rutina de Manejo de una interrupción (generalmente dentro del código del kernel).
• No es necesario configurarla inicialmente, pero hasta que no se configura no se pueden habilitar las interrupciones
• Debe ser configurada por el kernel antes de habilitar las interrupciones
![Page 54: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/54.jpg)
Funcionamiento General de la IDT
Interrupción N
Tabla de Descriptores de Interrupción (IDT)
Descriptor de Interrupción N
Descriptor de Interrupción 0
Espacio Lineal de Direcciones
Límite (tamaño de la IDT) : 16 bits
Dirección Lineal de la IDT: 32bits IDTR
Descriptor de Segmento
Selector: Offset
Tabla Global de Descriptores (GDT)
Base
Offset
Rutina de Manejo de la Interrupción N Segmento
GDTR Límite de la GDT
Base de la GDT
![Page 55: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/55.jpg)
Descriptor de Interrupción
![Page 56: Ia32 introduccion](https://reader033.fdocuments.ec/reader033/viewer/2022052910/559c13221a28abac098b457c/html5/thumbnails/56.jpg)
Referencias
Manuales de Intel
http://www.intel.com/products/processor/manuals/
Intel® 64 and IA-32 Architectures Software Developer's Manual System Programming Guide