Arquitectura basica-FURFARO

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 96

Procesadores IA-32 e Intel

64
c

Alejandro Furfaro

Marzo de 2017

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 1 / 59
Agenda
1 Inroducción
Genealogı́a

Arquitectura Básica

2 Modelo del Programador de aplicaciones

Arquitectura de 16 bits básica

IA-32
Arquitectura Intel
R
64

3 Modos de Direccionamiento
Modo Implı́cito

Modo Inmediato
Modo Registro

Modos de Direccionamiento a memoria


Modo Desplazamiento

Modo Base Directo


Base + Desplazamiento

Base + Desplazamiento

Índice * escala + desplazamiento

Alejandro
Base Furfaro
+ Índice + Desplazamiento c
Procesadores IA-32 e Intel 64 Marzo de 2017 1 / 59
Inroducción Genealogı́a

Orı́genes
La Demanda
En los ’70, los usuarios de computadores demandaban disminuir el costo de
actualización de sus equipos, en parte debido a la necesidad de reemplazar
no solo el hardware sino además el sistema operativo y las aplicaciones, en
cada upgrade.

La solución: Compatibilidad
Al lanzar la familia iAPx86 que se presentó en 1978 de la mano del
procesador 8086, Intel se compromete a mantener compatibilidad
ascendente en los modelos subsiguientes de procesadores para satisfacer
esta demanda. Esto fue uno de los motivos de la decisión de IBM de adoptar
esta familia de procesadores como base para su PC.

La consecuencia: El elegido
La arquitectura IA-32 deriva de la familia iAPx86. Fue el primer procesador de
16 bits. Meses luego Motorola lanzarı́a el 68000 y Zilog el Z8000A y Z8000B.
Pero IBM ya habı́a decidido utilizar el procesador de Intel para su modelo de
Personal Computer (PC) que revolucionarı́a el mercado de computadores.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 2 / 59
Inroducción Genealogı́a

Orı́genes
La Demanda
En los ’70, los usuarios de computadores demandaban disminuir el costo de
actualización de sus equipos, en parte debido a la necesidad de reemplazar
no solo el hardware sino además el sistema operativo y las aplicaciones, en
cada upgrade.

La solución: Compatibilidad
Al lanzar la familia iAPx86 que se presentó en 1978 de la mano del
procesador 8086, Intel se compromete a mantener compatibilidad
ascendente en los modelos subsiguientes de procesadores para satisfacer
esta demanda. Esto fue uno de los motivos de la decisión de IBM de adoptar
esta familia de procesadores como base para su PC.

La consecuencia: El elegido
La arquitectura IA-32 deriva de la familia iAPx86. Fue el primer procesador de
16 bits. Meses luego Motorola lanzarı́a el 68000 y Zilog el Z8000A y Z8000B.
Pero IBM ya habı́a decidido utilizar el procesador de Intel para su modelo de
Personal Computer (PC) que revolucionarı́a el mercado de computadores.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 2 / 59
Inroducción Genealogı́a

Orı́genes
La Demanda
En los ’70, los usuarios de computadores demandaban disminuir el costo de
actualización de sus equipos, en parte debido a la necesidad de reemplazar
no solo el hardware sino además el sistema operativo y las aplicaciones, en
cada upgrade.

La solución: Compatibilidad
Al lanzar la familia iAPx86 que se presentó en 1978 de la mano del
procesador 8086, Intel se compromete a mantener compatibilidad
ascendente en los modelos subsiguientes de procesadores para satisfacer
esta demanda. Esto fue uno de los motivos de la decisión de IBM de adoptar
esta familia de procesadores como base para su PC.

La consecuencia: El elegido
La arquitectura IA-32 deriva de la familia iAPx86. Fue el primer procesador de
16 bits. Meses luego Motorola lanzarı́a el 68000 y Zilog el Z8000A y Z8000B.
Pero IBM ya habı́a decidido utilizar el procesador de Intel para su modelo de
Personal Computer (PC) que revolucionarı́a el mercado de computadores.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 2 / 59
Inroducción Genealogı́a

Orı́genes
La Demanda
En los ’70, los usuarios de computadores demandaban disminuir el costo de
actualización de sus equipos, en parte debido a la necesidad de reemplazar
no solo el hardware sino además el sistema operativo y las aplicaciones, en
cada upgrade.

La solución: Compatibilidad
Al lanzar la familia iAPx86 que se presentó en 1978 de la mano del
procesador 8086, Intel se compromete a mantener compatibilidad
ascendente en los modelos subsiguientes de procesadores para satisfacer
esta demanda. Esto fue uno de los motivos de la decisión de IBM de adoptar
esta familia de procesadores como base para su PC.

La consecuencia: El elegido
La arquitectura IA-32 deriva de la familia iAPx86. Fue el primer procesador de
16 bits. Meses luego Motorola lanzarı́a el 68000 y Zilog el Z8000A y Z8000B.
Pero IBM ya habı́a decidido utilizar el procesador de Intel para su modelo de
Personal Computer (PC) que revolucionarı́a el mercado de computadores.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 2 / 59
Inroducción Genealogı́a

Diagrama interno

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 3 / 59
Inroducción Genealogı́a

Diagrama interno

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 4 / 59
Inroducción Genealogı́a

Orı́genes

La bisagra
Unos meses luego del lanzamiento del 8086, Intel presenta una variante del
mismo procesador: el 8088,idéntico en su arquitectura interna de 16 bits,
pero con un bus de datos de 8 bits, que a diferencia del bus de datos de 16
bits del 8086, permitı́a una conectividad mas directa con la innumerable
cantidad de periféricos de 8 bits que por entonces habı́a disponibles. Esta
razón terminó de convencer a los ingenieros de IBM que lanzarı́a su primer
PC basada en un procesador 8088 (nunca usó el 8086). Esta decisión de
IBM es la causa del liderazgo de Intel en esta industria desde entonces.

la primer prueba
En 1982 Intel presenta el 80286, que mejoraba la CPU 8086 en la ejecución
de numerosas instrucciones e incorporó multitasking. Su arquitectura de 16
bits seguı́a siendo la misma, y era compatible a nivel binario (si.. no hay que
recompilar siquiera) con el 8088. A partir de este procesador IBM diseña el
modelo de PC conocido como AT.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 5 / 59
Inroducción Genealogı́a

Orı́genes

La bisagra
Unos meses luego del lanzamiento del 8086, Intel presenta una variante del
mismo procesador: el 8088,idéntico en su arquitectura interna de 16 bits,
pero con un bus de datos de 8 bits, que a diferencia del bus de datos de 16
bits del 8086, permitı́a una conectividad mas directa con la innumerable
cantidad de periféricos de 8 bits que por entonces habı́a disponibles. Esta
razón terminó de convencer a los ingenieros de IBM que lanzarı́a su primer
PC basada en un procesador 8088 (nunca usó el 8086). Esta decisión de
IBM es la causa del liderazgo de Intel en esta industria desde entonces.

la primer prueba
En 1982 Intel presenta el 80286, que mejoraba la CPU 8086 en la ejecución
de numerosas instrucciones e incorporó multitasking. Su arquitectura de 16
bits seguı́a siendo la misma, y era compatible a nivel binario (si.. no hay que
recompilar siquiera) con el 8088. A partir de este procesador IBM diseña el
modelo de PC conocido como AT.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 5 / 59
Inroducción Genealogı́a

Orı́genes

La bisagra
Unos meses luego del lanzamiento del 8086, Intel presenta una variante del
mismo procesador: el 8088,idéntico en su arquitectura interna de 16 bits,
pero con un bus de datos de 8 bits, que a diferencia del bus de datos de 16
bits del 8086, permitı́a una conectividad mas directa con la innumerable
cantidad de periféricos de 8 bits que por entonces habı́a disponibles. Esta
razón terminó de convencer a los ingenieros de IBM que lanzarı́a su primer
PC basada en un procesador 8088 (nunca usó el 8086). Esta decisión de
IBM es la causa del liderazgo de Intel en esta industria desde entonces.

la primer prueba
En 1982 Intel presenta el 80286, que mejoraba la CPU 8086 en la ejecución
de numerosas instrucciones e incorporó multitasking. Su arquitectura de 16
bits seguı́a siendo la misma, y era compatible a nivel binario (si.. no hay que
recompilar siquiera) con el 8088. A partir de este procesador IBM diseña el
modelo de PC conocido como AT.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 5 / 59
Inroducción Genealogı́a

Orı́genes
La consolidación
En 1984 Intel lanza el primer procesador de 32 bits, el 80386, y con él la
arquitectura IA-32
La industria comienza a hablar de los procesadores x86, que en ese
momento constituyen un standard
Aparecen fabricantes que producirán procesadores IA-32, bajo licencia
de Intel. Entre ellos se destaca AMD
Algún bache siempre aparece. . .
A fines de los ’90 Intel y Hewlett Packard desarrollan una arquitectura de
64 bits.
Los procesadores Itanium e Itanium2 no tendrán el éxito de los x86.
AMD agregó las extensiones de 64 bits a los procesadores IA-32. Esta
nueva arquitectura x86-64 (o AMD64) fue un éxito.
Intel debió adoptarla para IA-32. Llama a esta arquitectura Intel
R
64 .

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 6 / 59
Inroducción Genealogı́a

Orı́genes
La consolidación
En 1984 Intel lanza el primer procesador de 32 bits, el 80386, y con él la
arquitectura IA-32
La industria comienza a hablar de los procesadores x86, que en ese
momento constituyen un standard
Aparecen fabricantes que producirán procesadores IA-32, bajo licencia
de Intel. Entre ellos se destaca AMD
Algún bache siempre aparece. . .
A fines de los ’90 Intel y Hewlett Packard desarrollan una arquitectura de
64 bits.
Los procesadores Itanium e Itanium2 no tendrán el éxito de los x86.
AMD agregó las extensiones de 64 bits a los procesadores IA-32. Esta
nueva arquitectura x86-64 (o AMD64) fue un éxito.
Intel debió adoptarla para IA-32. Llama a esta arquitectura Intel
R
64 .

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 6 / 59
Inroducción Genealogı́a

Orı́genes
La consolidación
En 1984 Intel lanza el primer procesador de 32 bits, el 80386, y con él la
arquitectura IA-32
La industria comienza a hablar de los procesadores x86, que en ese
momento constituyen un standard
Aparecen fabricantes que producirán procesadores IA-32, bajo licencia
de Intel. Entre ellos se destaca AMD
Algún bache siempre aparece. . .
A fines de los ’90 Intel y Hewlett Packard desarrollan una arquitectura de
64 bits.
Los procesadores Itanium e Itanium2 no tendrán el éxito de los x86.
AMD agregó las extensiones de 64 bits a los procesadores IA-32. Esta
nueva arquitectura x86-64 (o AMD64) fue un éxito.
Intel debió adoptarla para IA-32. Llama a esta arquitectura Intel
R
64 .

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 6 / 59
Inroducción Genealogı́a

Primeras conclusiones

Palabra clave: Compatibilidad. Fue la llave el enorme éxito de


esta arquitectura, pero también la ha condicionado en
determinados perı́odos de su evolución. En los casi 40 años
pasados ha habido perı́odos en los que otras alternativas le han
sacado ventaja y le ha costado mas esfuerzo poder competir.

Es una arquitectura que no puede ser analizada sin tener en


cuenta estos factores “históricos”. El compromiso de
Compatibilidad adoptado en 1978 significa que las decisiones de
fondo adoptadas inicialmente en el diseño de la arquitectura,
inevitablemente condicionarán lo que puede o no puede hacerse
a futuro. La administración de memoria por segmentación como
veremos es un cları́simo ejemplo de ello.

Actualmente luce revitalizada y ya aborda el difı́cil y esquivo


mercado de sistemas embebidos, en donde ARM domina el
mercado de desde hace años.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 7 / 59
Inroducción Genealogı́a

Primeras conclusiones

Palabra clave: Compatibilidad. Fue la llave el enorme éxito de


esta arquitectura, pero también la ha condicionado en
determinados perı́odos de su evolución. En los casi 40 años
pasados ha habido perı́odos en los que otras alternativas le han
sacado ventaja y le ha costado mas esfuerzo poder competir.

Es una arquitectura que no puede ser analizada sin tener en


cuenta estos factores “históricos”. El compromiso de
Compatibilidad adoptado en 1978 significa que las decisiones de
fondo adoptadas inicialmente en el diseño de la arquitectura,
inevitablemente condicionarán lo que puede o no puede hacerse
a futuro. La administración de memoria por segmentación como
veremos es un cları́simo ejemplo de ello.

Actualmente luce revitalizada y ya aborda el difı́cil y esquivo


mercado de sistemas embebidos, en donde ARM domina el
mercado de desde hace años.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 7 / 59
Inroducción Genealogı́a

Primeras conclusiones

Palabra clave: Compatibilidad. Fue la llave el enorme éxito de


esta arquitectura, pero también la ha condicionado en
determinados perı́odos de su evolución. En los casi 40 años
pasados ha habido perı́odos en los que otras alternativas le han
sacado ventaja y le ha costado mas esfuerzo poder competir.

Es una arquitectura que no puede ser analizada sin tener en


cuenta estos factores “históricos”. El compromiso de
Compatibilidad adoptado en 1978 significa que las decisiones de
fondo adoptadas inicialmente en el diseño de la arquitectura,
inevitablemente condicionarán lo que puede o no puede hacerse
a futuro. La administración de memoria por segmentación como
veremos es un cları́simo ejemplo de ello.

Actualmente luce revitalizada y ya aborda el difı́cil y esquivo


mercado de sistemas embebidos, en donde ARM domina el
mercado de desde hace años.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 7 / 59
Inroducción Genealogı́a

Primeras conclusiones

Palabra clave: Compatibilidad. Fue la llave el enorme éxito de


esta arquitectura, pero también la ha condicionado en
determinados perı́odos de su evolución. En los casi 40 años
pasados ha habido perı́odos en los que otras alternativas le han
sacado ventaja y le ha costado mas esfuerzo poder competir.

Es una arquitectura que no puede ser analizada sin tener en


cuenta estos factores “históricos”. El compromiso de
Compatibilidad adoptado en 1978 significa que las decisiones de
fondo adoptadas inicialmente en el diseño de la arquitectura,
inevitablemente condicionarán lo que puede o no puede hacerse
a futuro. La administración de memoria por segmentación como
veremos es un cları́simo ejemplo de ello.

Actualmente luce revitalizada y ya aborda el difı́cil y esquivo


mercado de sistemas embebidos, en donde ARM domina el
mercado de desde hace años.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 7 / 59
Inroducción Arquitectura Básica

Modos de Operación

Los procesadores IA-32 tienen tres modos de operación, de los cuales


surgen sus capacidades arquitecturales e instrucciones disponibles, y
un modo especial para tareas especı́ficas del sistema:
1 Modo Real
2 Modo Protegido
3 Modo Mantenimiento del Sistema
4 Modo extendido a 64 bits (IA-32e)
Submodo Compatibilidad
Submodo 64 bits

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 8 / 59
Inroducción Arquitectura Básica

Modos de Operación: Modo Real

En este modo el procesador implementa el entorno de operación


del 8086, con algunas extensiones:
puede utilizar registros de 32 bits
puede reconfigurar la ubicación del vector de interrupciones, ya
que a pesar de que el 8086 no lo tenı́a, ahora existe y es accesible
desde modo Real el registro IDTR (ver Interrupciones mas
adelante)
Desde este modo se puede pasar por software al Modo Protegido
o al Modo Mantenimiento del Sistema.
Aunque nadie trabaja en este modo, es el modo de arranque de
cualquier procesador IA-32 e Intel
R
64 actual y futuro. . . Delicias
de la compatibilidad.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica

Modos de Operación: Modo Real

En este modo el procesador implementa el entorno de operación


del 8086, con algunas extensiones:
puede utilizar registros de 32 bits
puede reconfigurar la ubicación del vector de interrupciones, ya
que a pesar de que el 8086 no lo tenı́a, ahora existe y es accesible
desde modo Real el registro IDTR (ver Interrupciones mas
adelante)
Desde este modo se puede pasar por software al Modo Protegido
o al Modo Mantenimiento del Sistema.
Aunque nadie trabaja en este modo, es el modo de arranque de
cualquier procesador IA-32 e Intel
R
64 actual y futuro. . . Delicias
de la compatibilidad.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica

Modos de Operación: Modo Real

En este modo el procesador implementa el entorno de operación


del 8086, con algunas extensiones:
puede utilizar registros de 32 bits
puede reconfigurar la ubicación del vector de interrupciones, ya
que a pesar de que el 8086 no lo tenı́a, ahora existe y es accesible
desde modo Real el registro IDTR (ver Interrupciones mas
adelante)
Desde este modo se puede pasar por software al Modo Protegido
o al Modo Mantenimiento del Sistema.
Aunque nadie trabaja en este modo, es el modo de arranque de
cualquier procesador IA-32 e Intel
R
64 actual y futuro. . . Delicias
de la compatibilidad.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica

Modos de Operación: Modo Real

En este modo el procesador implementa el entorno de operación


del 8086, con algunas extensiones:
puede utilizar registros de 32 bits
puede reconfigurar la ubicación del vector de interrupciones, ya
que a pesar de que el 8086 no lo tenı́a, ahora existe y es accesible
desde modo Real el registro IDTR (ver Interrupciones mas
adelante)
Desde este modo se puede pasar por software al Modo Protegido
o al Modo Mantenimiento del Sistema.
Aunque nadie trabaja en este modo, es el modo de arranque de
cualquier procesador IA-32 e Intel
R
64 actual y futuro. . . Delicias
de la compatibilidad.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica

Modos de Operación: Modo Real

En este modo el procesador implementa el entorno de operación


del 8086, con algunas extensiones:
puede utilizar registros de 32 bits
puede reconfigurar la ubicación del vector de interrupciones, ya
que a pesar de que el 8086 no lo tenı́a, ahora existe y es accesible
desde modo Real el registro IDTR (ver Interrupciones mas
adelante)
Desde este modo se puede pasar por software al Modo Protegido
o al Modo Mantenimiento del Sistema.
Aunque nadie trabaja en este modo, es el modo de arranque de
cualquier procesador IA-32 e Intel
R
64 actual y futuro. . . Delicias
de la compatibilidad.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica

Modos de Operación: Modo Real

En este modo el procesador implementa el entorno de operación


del 8086, con algunas extensiones:
puede utilizar registros de 32 bits
puede reconfigurar la ubicación del vector de interrupciones, ya
que a pesar de que el 8086 no lo tenı́a, ahora existe y es accesible
desde modo Real el registro IDTR (ver Interrupciones mas
adelante)
Desde este modo se puede pasar por software al Modo Protegido
o al Modo Mantenimiento del Sistema.
Aunque nadie trabaja en este modo, es el modo de arranque de
cualquier procesador IA-32 e Intel
R
64 actual y futuro. . . Delicias
de la compatibilidad.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica

Modos de Operación Modo Protegido

En este modo se implementa multitasking


Este es el modo por excelencia de los procesadores de esta
familia inaugurado por el procesador 80286, primer procesador
con capacidad multitarea, a pesar de su arquitectura de 16 bits
similar a la de su antecesor 8086.
A partir del 80386 se pasa a 32 bits (nace IA-32) y se despliega
un espacio de direccionamiento de 4 Gbytes, extensible a 64
Gbytes.
Se introduce un sub-modo al que puede ponerse a una
determinada tarea, denominado Virtual-8086 que permite a un
programa diseñado para ejecutarse en un procesador 8086, poder
ejecutarse como una tarea en Modo Protegido. Esto fue muy útil
para implementar en Windows la “Ventana DOS”. Actualmente no
es utilizado, ya que la consola que se ejecuta utiliza un código
diferente del DOS original, y es en general una tarea mas.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 10 / 59
Inroducción Arquitectura Básica

Modos de Operación Modo Protegido

En este modo se implementa multitasking


Este es el modo por excelencia de los procesadores de esta
familia inaugurado por el procesador 80286, primer procesador
con capacidad multitarea, a pesar de su arquitectura de 16 bits
similar a la de su antecesor 8086.
A partir del 80386 se pasa a 32 bits (nace IA-32) y se despliega
un espacio de direccionamiento de 4 Gbytes, extensible a 64
Gbytes.
Se introduce un sub-modo al que puede ponerse a una
determinada tarea, denominado Virtual-8086 que permite a un
programa diseñado para ejecutarse en un procesador 8086, poder
ejecutarse como una tarea en Modo Protegido. Esto fue muy útil
para implementar en Windows la “Ventana DOS”. Actualmente no
es utilizado, ya que la consola que se ejecuta utiliza un código
diferente del DOS original, y es en general una tarea mas.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 10 / 59
Inroducción Arquitectura Básica

Modos de Operación Modo Protegido

En este modo se implementa multitasking


Este es el modo por excelencia de los procesadores de esta
familia inaugurado por el procesador 80286, primer procesador
con capacidad multitarea, a pesar de su arquitectura de 16 bits
similar a la de su antecesor 8086.
A partir del 80386 se pasa a 32 bits (nace IA-32) y se despliega
un espacio de direccionamiento de 4 Gbytes, extensible a 64
Gbytes.
Se introduce un sub-modo al que puede ponerse a una
determinada tarea, denominado Virtual-8086 que permite a un
programa diseñado para ejecutarse en un procesador 8086, poder
ejecutarse como una tarea en Modo Protegido. Esto fue muy útil
para implementar en Windows la “Ventana DOS”. Actualmente no
es utilizado, ya que la consola que se ejecuta utiliza un código
diferente del DOS original, y es en general una tarea mas.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 10 / 59
Inroducción Arquitectura Básica

Modos de Operación Modo Protegido

En este modo se implementa multitasking


Este es el modo por excelencia de los procesadores de esta
familia inaugurado por el procesador 80286, primer procesador
con capacidad multitarea, a pesar de su arquitectura de 16 bits
similar a la de su antecesor 8086.
A partir del 80386 se pasa a 32 bits (nace IA-32) y se despliega
un espacio de direccionamiento de 4 Gbytes, extensible a 64
Gbytes.
Se introduce un sub-modo al que puede ponerse a una
determinada tarea, denominado Virtual-8086 que permite a un
programa diseñado para ejecutarse en un procesador 8086, poder
ejecutarse como una tarea en Modo Protegido. Esto fue muy útil
para implementar en Windows la “Ventana DOS”. Actualmente no
es utilizado, ya que la consola que se ejecuta utiliza un código
diferente del DOS original, y es en general una tarea mas.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 10 / 59
Inroducción Arquitectura Básica

Modos de Operación Modo Protegido

En este modo se implementa multitasking


Este es el modo por excelencia de los procesadores de esta
familia inaugurado por el procesador 80286, primer procesador
con capacidad multitarea, a pesar de su arquitectura de 16 bits
similar a la de su antecesor 8086.
A partir del 80386 se pasa a 32 bits (nace IA-32) y se despliega
un espacio de direccionamiento de 4 Gbytes, extensible a 64
Gbytes.
Se introduce un sub-modo al que puede ponerse a una
determinada tarea, denominado Virtual-8086 que permite a un
programa diseñado para ejecutarse en un procesador 8086, poder
ejecutarse como una tarea en Modo Protegido. Esto fue muy útil
para implementar en Windows la “Ventana DOS”. Actualmente no
es utilizado, ya que la consola que se ejecuta utiliza un código
diferente del DOS original, y es en general una tarea mas.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 10 / 59
Inroducción Arquitectura Básica

Modos de Operación Modo Mantenimiento del Sistema

El procesador ingresa a este modo por dos caminos


Activación de la señal de interrupción #SMM.
mediante un mensaje SMI desde su APIC local (Ver Interrupciones
y SMP mas adelante)
Este modo fue introducido a partir de los modelos 386SL y 486SL
para realizar funciones especı́ficas para la plataforma de
hardware en la cual se desempeña el procesador, como lo son
ahorro de energı́a y seguridad. Estos procesadores fueron los
primeros diseñados para notebooks.
Al ingresar a este modo el procesador resguarda en forma
automática el contexto completo de la tarea o programa
interrumpido, y pasa a ejecutar en un espacio separado. Una vez
efectuadas las operaciones necesarias y cuando debe salir de
este modo el procesador reasume la tarea o programa
interrumpida en el modo de operación en el que se encontraba.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 11 / 59
Inroducción Arquitectura Básica

Modos de Operación Modo Mantenimiento del Sistema

El procesador ingresa a este modo por dos caminos


Activación de la señal de interrupción #SMM.
mediante un mensaje SMI desde su APIC local (Ver Interrupciones
y SMP mas adelante)
Este modo fue introducido a partir de los modelos 386SL y 486SL
para realizar funciones especı́ficas para la plataforma de
hardware en la cual se desempeña el procesador, como lo son
ahorro de energı́a y seguridad. Estos procesadores fueron los
primeros diseñados para notebooks.
Al ingresar a este modo el procesador resguarda en forma
automática el contexto completo de la tarea o programa
interrumpido, y pasa a ejecutar en un espacio separado. Una vez
efectuadas las operaciones necesarias y cuando debe salir de
este modo el procesador reasume la tarea o programa
interrumpida en el modo de operación en el que se encontraba.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 11 / 59
Inroducción Arquitectura Básica

Modos de Operación Modo Mantenimiento del Sistema

El procesador ingresa a este modo por dos caminos


Activación de la señal de interrupción #SMM.
mediante un mensaje SMI desde su APIC local (Ver Interrupciones
y SMP mas adelante)
Este modo fue introducido a partir de los modelos 386SL y 486SL
para realizar funciones especı́ficas para la plataforma de
hardware en la cual se desempeña el procesador, como lo son
ahorro de energı́a y seguridad. Estos procesadores fueron los
primeros diseñados para notebooks.
Al ingresar a este modo el procesador resguarda en forma
automática el contexto completo de la tarea o programa
interrumpido, y pasa a ejecutar en un espacio separado. Una vez
efectuadas las operaciones necesarias y cuando debe salir de
este modo el procesador reasume la tarea o programa
interrumpida en el modo de operación en el que se encontraba.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 11 / 59
Inroducción Arquitectura Básica

Modos de Operación Modo Mantenimiento del Sistema

El procesador ingresa a este modo por dos caminos


Activación de la señal de interrupción #SMM.
mediante un mensaje SMI desde su APIC local (Ver Interrupciones
y SMP mas adelante)
Este modo fue introducido a partir de los modelos 386SL y 486SL
para realizar funciones especı́ficas para la plataforma de
hardware en la cual se desempeña el procesador, como lo son
ahorro de energı́a y seguridad. Estos procesadores fueron los
primeros diseñados para notebooks.
Al ingresar a este modo el procesador resguarda en forma
automática el contexto completo de la tarea o programa
interrumpido, y pasa a ejecutar en un espacio separado. Una vez
efectuadas las operaciones necesarias y cuando debe salir de
este modo el procesador reasume la tarea o programa
interrumpida en el modo de operación en el que se encontraba.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 11 / 59
Inroducción Arquitectura Básica

Modos de Operación Modo Mantenimiento del Sistema

El procesador ingresa a este modo por dos caminos


Activación de la señal de interrupción #SMM.
mediante un mensaje SMI desde su APIC local (Ver Interrupciones
y SMP mas adelante)
Este modo fue introducido a partir de los modelos 386SL y 486SL
para realizar funciones especı́ficas para la plataforma de
hardware en la cual se desempeña el procesador, como lo son
ahorro de energı́a y seguridad. Estos procesadores fueron los
primeros diseñados para notebooks.
Al ingresar a este modo el procesador resguarda en forma
automática el contexto completo de la tarea o programa
interrumpido, y pasa a ejecutar en un espacio separado. Una vez
efectuadas las operaciones necesarias y cuando debe salir de
este modo el procesador reasume la tarea o programa
interrumpida en el modo de operación en el que se encontraba.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 11 / 59
Inroducción Arquitectura Básica

Modos de Operación Modo Mantenimiento del Sistema

El procesador ingresa a este modo por dos caminos


Activación de la señal de interrupción #SMM.
mediante un mensaje SMI desde su APIC local (Ver Interrupciones
y SMP mas adelante)
Este modo fue introducido a partir de los modelos 386SL y 486SL
para realizar funciones especı́ficas para la plataforma de
hardware en la cual se desempeña el procesador, como lo son
ahorro de energı́a y seguridad. Estos procesadores fueron los
primeros diseñados para notebooks.
Al ingresar a este modo el procesador resguarda en forma
automática el contexto completo de la tarea o programa
interrumpido, y pasa a ejecutar en un espacio separado. Una vez
efectuadas las operaciones necesarias y cuando debe salir de
este modo el procesador reasume la tarea o programa
interrumpida en el modo de operación en el que se encontraba.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 11 / 59
Inroducción Arquitectura Básica

Modos de Operación: Extendido a 64 bits

Los procesadores Intel R


64 además de los modos de trabajo de
los procesadores IA-32 incluyen un modo IA-32e en el que se
activa la arquitectura de 64 bits.

Para pasar a este modo, el procesador debe estar trabajando en


modo protegido, con paginación habilitada, y PAE activo (Como
estudiaremos en Paginación)

En IA-32e a su vez existen dos sub-modos (nada es simple en


este mundo).
1 Sub modo Compatibilidad
2 Sub modo 64 bits.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica

Modos de Operación: Extendido a 64 bits

Los procesadores Intel R


64 además de los modos de trabajo de
los procesadores IA-32 incluyen un modo IA-32e en el que se
activa la arquitectura de 64 bits.

Para pasar a este modo, el procesador debe estar trabajando en


modo protegido, con paginación habilitada, y PAE activo (Como
estudiaremos en Paginación)

En IA-32e a su vez existen dos sub-modos (nada es simple en


este mundo).
1 Sub modo Compatibilidad
2 Sub modo 64 bits.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica

Modos de Operación: Extendido a 64 bits

Los procesadores Intel R


64 además de los modos de trabajo de
los procesadores IA-32 incluyen un modo IA-32e en el que se
activa la arquitectura de 64 bits.

Para pasar a este modo, el procesador debe estar trabajando en


modo protegido, con paginación habilitada, y PAE activo (Como
estudiaremos en Paginación)

En IA-32e a su vez existen dos sub-modos (nada es simple en


este mundo).
1 Sub modo Compatibilidad
2 Sub modo 64 bits.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica

Modos de Operación: Extendido a 64 bits

Los procesadores Intel R


64 además de los modos de trabajo de
los procesadores IA-32 incluyen un modo IA-32e en el que se
activa la arquitectura de 64 bits.

Para pasar a este modo, el procesador debe estar trabajando en


modo protegido, con paginación habilitada, y PAE activo (Como
estudiaremos en Paginación)

En IA-32e a su vez existen dos sub-modos (nada es simple en


este mundo).
1 Sub modo Compatibilidad
2 Sub modo 64 bits.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica

Modos de Operación: Extendido a 64 bits

Los procesadores Intel R


64 además de los modos de trabajo de
los procesadores IA-32 incluyen un modo IA-32e en el que se
activa la arquitectura de 64 bits.

Para pasar a este modo, el procesador debe estar trabajando en


modo protegido, con paginación habilitada, y PAE activo (Como
estudiaremos en Paginación)

En IA-32e a su vez existen dos sub-modos (nada es simple en


este mundo).
1 Sub modo Compatibilidad
2 Sub modo 64 bits.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica

Modos de Operación: Extendido a 64 bits

Los procesadores Intel R


64 además de los modos de trabajo de
los procesadores IA-32 incluyen un modo IA-32e en el que se
activa la arquitectura de 64 bits.

Para pasar a este modo, el procesador debe estar trabajando en


modo protegido, con paginación habilitada, y PAE activo (Como
estudiaremos en Paginación)

En IA-32e a su vez existen dos sub-modos (nada es simple en


este mundo).
1 Sub modo Compatibilidad
2 Sub modo 64 bits.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica

Modos de Operación IA-32e: Modo Compatibilidad

Pensado para garantizar la transición de 32 a 64 bits, permite a


las aplicaciones de 16 y 32 bits legacy ejecutarse sin
recompilación bajo un sistema operativo de 64 bits.
Los aspectos relacionados con el sistema operativo se mantienen
en 64 bits. La compatibilidad es solo para las aplicaciones,
entonces:
1 El entorno de ejecución de la tarea de 32 bits es el de la
arquitectura IA-32.
2 El kernel no soporta el manejo de tareas del modo IA-32,
3 El sub-modo Virtual 8086 desaparece(en esto nos basamos para
asegurar que está obsoleto al referirnos a este modo en un slide
anterior).
4 Incluye los mecanismos de protección del modo 64 bits.
El Sistema Operativo de 64 bits puede ejecutar tareas de 16 y 32
bits junto con otras de 64 bits, sobre la base de diferentes
segmentos de código. La tarea de 32 bits accede a una
arquitectura IA-32 pura, utilizando direcciones de 16 y 32 bits, con
4Alejandro
Gbytes de espacio de
Furfaro
direccionamiento c
Procesadores IA-32 e Intel 64
y con la posibilidad
Marzo de 2017
de13 / 59
Inroducción Arquitectura Básica

Modos de Operación IA-32e: Modo Compatibilidad

Pensado para garantizar la transición de 32 a 64 bits, permite a


las aplicaciones de 16 y 32 bits legacy ejecutarse sin
recompilación bajo un sistema operativo de 64 bits.
Los aspectos relacionados con el sistema operativo se mantienen
en 64 bits. La compatibilidad es solo para las aplicaciones,
entonces:
1 El entorno de ejecución de la tarea de 32 bits es el de la
arquitectura IA-32.
2 El kernel no soporta el manejo de tareas del modo IA-32,
3 El sub-modo Virtual 8086 desaparece(en esto nos basamos para
asegurar que está obsoleto al referirnos a este modo en un slide
anterior).
4 Incluye los mecanismos de protección del modo 64 bits.
El Sistema Operativo de 64 bits puede ejecutar tareas de 16 y 32
bits junto con otras de 64 bits, sobre la base de diferentes
segmentos de código. La tarea de 32 bits accede a una
arquitectura IA-32 pura, utilizando direcciones de 16 y 32 bits, con
4Alejandro
Gbytes de espacio de
Furfaro
direccionamiento c
Procesadores IA-32 e Intel 64
y con la posibilidad
Marzo de 2017
de13 / 59
Inroducción Arquitectura Básica

Modos de Operación IA-32e: Modo Compatibilidad

Pensado para garantizar la transición de 32 a 64 bits, permite a


las aplicaciones de 16 y 32 bits legacy ejecutarse sin
recompilación bajo un sistema operativo de 64 bits.
Los aspectos relacionados con el sistema operativo se mantienen
en 64 bits. La compatibilidad es solo para las aplicaciones,
entonces:
1 El entorno de ejecución de la tarea de 32 bits es el de la
arquitectura IA-32.
2 El kernel no soporta el manejo de tareas del modo IA-32,
3 El sub-modo Virtual 8086 desaparece(en esto nos basamos para
asegurar que está obsoleto al referirnos a este modo en un slide
anterior).
4 Incluye los mecanismos de protección del modo 64 bits.
El Sistema Operativo de 64 bits puede ejecutar tareas de 16 y 32
bits junto con otras de 64 bits, sobre la base de diferentes
segmentos de código. La tarea de 32 bits accede a una
arquitectura IA-32 pura, utilizando direcciones de 16 y 32 bits, con
4Alejandro
Gbytes de espacio de
Furfaro
direccionamiento c
Procesadores IA-32 e Intel 64
y con la posibilidad
Marzo de 2017
de13 / 59
Inroducción Arquitectura Básica

Modos de Operación IA-32e: Modo Compatibilidad

Pensado para garantizar la transición de 32 a 64 bits, permite a


las aplicaciones de 16 y 32 bits legacy ejecutarse sin
recompilación bajo un sistema operativo de 64 bits.
Los aspectos relacionados con el sistema operativo se mantienen
en 64 bits. La compatibilidad es solo para las aplicaciones,
entonces:
1 El entorno de ejecución de la tarea de 32 bits es el de la
arquitectura IA-32.
2 El kernel no soporta el manejo de tareas del modo IA-32,
3 El sub-modo Virtual 8086 desaparece(en esto nos basamos para
asegurar que está obsoleto al referirnos a este modo en un slide
anterior).
4 Incluye los mecanismos de protección del modo 64 bits.
El Sistema Operativo de 64 bits puede ejecutar tareas de 16 y 32
bits junto con otras de 64 bits, sobre la base de diferentes
segmentos de código. La tarea de 32 bits accede a una
arquitectura IA-32 pura, utilizando direcciones de 16 y 32 bits, con
4Alejandro
Gbytes de espacio de
Furfaro
direccionamiento c
Procesadores IA-32 e Intel 64
y con la posibilidad
Marzo de 2017
de13 / 59
Inroducción Arquitectura Básica

Modos de Operación IA-32e: Modo Compatibilidad

Pensado para garantizar la transición de 32 a 64 bits, permite a


las aplicaciones de 16 y 32 bits legacy ejecutarse sin
recompilación bajo un sistema operativo de 64 bits.
Los aspectos relacionados con el sistema operativo se mantienen
en 64 bits. La compatibilidad es solo para las aplicaciones,
entonces:
1 El entorno de ejecución de la tarea de 32 bits es el de la
arquitectura IA-32.
2 El kernel no soporta el manejo de tareas del modo IA-32,
3 El sub-modo Virtual 8086 desaparece(en esto nos basamos para
asegurar que está obsoleto al referirnos a este modo en un slide
anterior).
4 Incluye los mecanismos de protección del modo 64 bits.
El Sistema Operativo de 64 bits puede ejecutar tareas de 16 y 32
bits junto con otras de 64 bits, sobre la base de diferentes
segmentos de código. La tarea de 32 bits accede a una
arquitectura IA-32 pura, utilizando direcciones de 16 y 32 bits, con
4Alejandro
Gbytes de espacio de
Furfaro
direccionamiento c
Procesadores IA-32 e Intel 64
y con la posibilidad
Marzo de 2017
de13 / 59
Inroducción Arquitectura Básica

Modos de Operación IA-32e: Modo Compatibilidad

Pensado para garantizar la transición de 32 a 64 bits, permite a


las aplicaciones de 16 y 32 bits legacy ejecutarse sin
recompilación bajo un sistema operativo de 64 bits.
Los aspectos relacionados con el sistema operativo se mantienen
en 64 bits. La compatibilidad es solo para las aplicaciones,
entonces:
1 El entorno de ejecución de la tarea de 32 bits es el de la
arquitectura IA-32.
2 El kernel no soporta el manejo de tareas del modo IA-32,
3 El sub-modo Virtual 8086 desaparece(en esto nos basamos para
asegurar que está obsoleto al referirnos a este modo en un slide
anterior).
4 Incluye los mecanismos de protección del modo 64 bits.
El Sistema Operativo de 64 bits puede ejecutar tareas de 16 y 32
bits junto con otras de 64 bits, sobre la base de diferentes
segmentos de código. La tarea de 32 bits accede a una
arquitectura IA-32 pura, utilizando direcciones de 16 y 32 bits, con
4Alejandro
Gbytes de espacio de
Furfaro
direccionamiento c
Procesadores IA-32 e Intel 64
y con la posibilidad
Marzo de 2017
de13 / 59
Inroducción Arquitectura Básica

Modos de Operación IA-32e: Modo Compatibilidad

Pensado para garantizar la transición de 32 a 64 bits, permite a


las aplicaciones de 16 y 32 bits legacy ejecutarse sin
recompilación bajo un sistema operativo de 64 bits.
Los aspectos relacionados con el sistema operativo se mantienen
en 64 bits. La compatibilidad es solo para las aplicaciones,
entonces:
1 El entorno de ejecución de la tarea de 32 bits es el de la
arquitectura IA-32.
2 El kernel no soporta el manejo de tareas del modo IA-32,
3 El sub-modo Virtual 8086 desaparece(en esto nos basamos para
asegurar que está obsoleto al referirnos a este modo en un slide
anterior).
4 Incluye los mecanismos de protección del modo 64 bits.
El Sistema Operativo de 64 bits puede ejecutar tareas de 16 y 32
bits junto con otras de 64 bits, sobre la base de diferentes
segmentos de código. La tarea de 32 bits accede a una
arquitectura IA-32 pura, utilizando direcciones de 16 y 32 bits, con
4Alejandro
Gbytes de espacio de
Furfaro
direccionamiento c
Procesadores IA-32 e Intel 64
y con la posibilidad
Marzo de 2017
de13 / 59
Inroducción Arquitectura Básica

Modos de Operación IA-32e: Modo Compatibilidad

Pensado para garantizar la transición de 32 a 64 bits, permite a


las aplicaciones de 16 y 32 bits legacy ejecutarse sin
recompilación bajo un sistema operativo de 64 bits.
Los aspectos relacionados con el sistema operativo se mantienen
en 64 bits. La compatibilidad es solo para las aplicaciones,
entonces:
1 El entorno de ejecución de la tarea de 32 bits es el de la
arquitectura IA-32.
2 El kernel no soporta el manejo de tareas del modo IA-32,
3 El sub-modo Virtual 8086 desaparece(en esto nos basamos para
asegurar que está obsoleto al referirnos a este modo en un slide
anterior).
4 Incluye los mecanismos de protección del modo 64 bits.
El Sistema Operativo de 64 bits puede ejecutar tareas de 16 y 32
bits junto con otras de 64 bits, sobre la base de diferentes
segmentos de código. La tarea de 32 bits accede a una
arquitectura IA-32 pura, utilizando direcciones de 16 y 32 bits, con
4Alejandro
Gbytes de espacio de
Furfaro
direccionamiento c
Procesadores IA-32 e Intel 64
y con la posibilidad
Marzo de 2017
de13 / 59
Inroducción Arquitectura Básica

Modos de Operación de 64 bits

Modo 64 bits: Este modo habilita a un Sistema Operativo de 64


bits a ejecutar tareas escritas utilizando direcciones lineales de 64
bits. En este modo se extienden de 8 a 16 los Registros de
propósito general cuyo ancho de palabra ahora es de 64 bits
(para ello se introduce el prefijo REX para las instrucciones que
deseen acceder a las versiones de Registros de propósito general
de 64 bits), agregándose los registros R8 a R15, y los registros
SIMD también se extienden a 16 manteniendo su ancho de 128
bits, XMM0 a XMM15.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 14 / 59
Modelo del Programador de aplicaciones Arquitectura de 16 bits básica

Registros y espacio de direccionamiento

Espacio de
15 0 15 0 direccionamiento
AX CS
2^20 -1
AH AL
BX SS
BH BL
CX DS
CH CL
DX ES
DH DL
SI
DI
15 0
BP IP

SP Flags
0

Figura: Entorno Básico de ejecución en 16 bits


Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 15 / 59
Modelo del Programador de aplicaciones IA-32

Arquitectura de 32 bits compatible

15 0
Espacio de
CS direccionamiento
31 1615 0
AX 2^32 -1
EAX AH AL SS
BX
EBX BH BL DS
CX
ECX CH CL ES
DX
EDXDH DL FS

ESI SI GS

EDI DI
31 16 15 0
EBP BP EIP IP

ESP SP EFlags Flags


0

Figura: Entorno Básico de ejecución del 80386

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 16 / 59
Modelo del Programador de aplicaciones IA-32

Floating Point Unit

EDX EFlags
79 63 0
R0 S Exponente Mantisa

R1
R2
R3
R4
R5
R6
R7
15 0 47 0
Control Register Last Instruction Pointer

Status Register Last Data (Operand) Pointer


11 0
Tag Register Opcode Register

Figura: Entorno Básico de ejecución de la FPU

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 17 / 59
Modelo del Programador de aplicaciones IA-32

Floating Point Unit

79 64 63 0

Extended Double: 1:15:64

63 52 51 0

Bit de Signo 0

Double Precision 1:11:52

Bits de exponente (Ca2) 31 23 22 0

Bits de la Mantisa o significando (1.mantisa)


Single Precisión 1:8:23

Figura: Formatos de los Datos de Punto Flotante de la FPU

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 18 / 59
Modelo del Programador de aplicaciones IA-32

Floating Point Unit on board

15 0
Espacio de
CS direccionamiento
31 1615 0
AX 2^32 -1
EAX AH AL SS
BX
EBX BH BL DS
CX
ECX CH CL ES
DX
EDXDH DL FS

ESI SI GS

EDI DI
31 16 15 0
EBP BP EIP IP

ESP SP EFlags Flags


0

Registros de la FPU
79 63 0
R0 S Exponente Mantisa

R1
R2
R3
R4
R5
R6
R7
15 0 47 0
Control Register Last Instruction Pointer

Status Register Last Data (Operand) Pointer


11 0
Tag Register Opcode Register

Figura: Entorno Básico de ejecución con la FPU on board


Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 19 / 59
Modelo del Programador de aplicaciones IA-32

Extensiones MMX

Registros Básicos de Ejecución Espacio de


15 0
direccionamiento
CS 2^32 -1
31 1615 0
AX
EAX AH AL SS
BX
EBX BH BL DS
CX
ECX CH CL ES
DX
EDXDH DL FS

ESI SI GS

EDI DI
31 16 15 0
EBP BP EIP IP

ESP SP EFlags Flags


0

Registros de la FPU
79 63 0
R0 S Exponente Mantisa

R1
R2
R3
R4
R5
R6
R7
15 0 47 0
Control Register Last Instruction Pointer

Status Register Last Data (Operand) Pointer


11 0
Tag Register Opcode Register

63 Registros MMX 0
MM0
MM1
MM2
MM3
MM4
MM5
MM6
MM7

Figura: Entorno Básico de ejecución con tecnologı́a MMX


Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 20 / 59
Modelo del Programador de aplicaciones IA-32

Llega el Pentium III

Registros Básicos de Ejecución Espacio de


15 0
direccionamiento
CS 2^32 -1
31 1615 0
AX
EAX AH AL SS
BX
EBX BH BL DS
CX
ECX CH CL ES
DX
EDXDH DL FS

ESI SI GS

EDI DI
31 16 15 0
EBP BP EIP IP

ESP SP EFlags Flags


0

Registros de la FPU 127 Registros XMM 0


79 63 0
XMM0
R0 S Exponente Mantisa
XMM1
R1
XMM2
R2
XMM3
R3
XMM4
R4
XMM5
R5
XMM6
R6
XMM7
R7
15 0 47 0
31 0
Control Register Last Instruction Pointer
XMCSR
Status Register Last Data (Operand) Pointer
11 0
Tag Register Opcode Register

63 Registros MMX 0
MM0
MM1
MM2
MM3
MM4
MM5
MM6
MM7

Figura: Entorno Básico de ejecución IA-32 actual

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 21 / 59
R
Modelo del Programador de aplicaciones Arquitectura Intel 64

Extensiones de 64 bits
Registros de Propósito General
15 0
63 0
CS
RAX EAX Espacio de
SS
RBX EBX
DS direccionamiento
RCX ECX
RDX EDX ES 2^64 -1
RSI ESI FS
RDI EDI GS
RBP EBP
RSP ESP
R8
R9
R10
R11
R12
R13
R14
R15

RIP EIP
RFlags EFlags
0

Registros de la FPU 127 Registros XMM 0


79 63 0
R0 S Exponente Mantisa XMM0
R1 XMM1
R2 XMM2
R3 XMM3
R4 XMM4
R5 XMM5
R6 XMM6
R7 XMM7
XMM8
15 0 47 0
Control Register
XMM9
Last Instruction Pointer
XMM10
Status Register Last Data (Operand) Pointer
11 0
XMM11
Tag Register Opcode Register XMM12
XMM13
63 Registros MMX 0 XMM14
MM0 XMM15
MM1 31 0
MM2 XMCSR
MM3
MM4
MM5
MM6
MM7

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 22 / 59
R
Modelo del Programador de aplicaciones Arquitectura Intel 64

Extensiones de 64 bits

En este modo los registros de Propósito General se extienden a 64


bits y aparecen 8 registros de 64 bits adicionales. El procesador a
pesar de estar en modo 64 bits puede acceder a diferentes tamaños
de operador. Para ello es necesario que utilice el prefijo REX,
antecediendo a cada instrucción que requiera este tipo de operandos.
Registros de Propósito General
63 0

RAX EAX
RBX EBX
RCX ECX
RDX EDX
RSI ESI
RDI EDI
RBP EBP
RSP ESP
R8 R8D
R9 R9D
R10 R10D
R11 R11D
R12 R12D
R13 R13D
R14 R14D
R15 R15D

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 23 / 59
R
Modelo del Programador de aplicaciones Arquitectura Intel 64

Extensiones de 64 bits

Registros de Propósito General


63 0

RAX AX
RBX BX
RCX CX
RDX DX
RSI SI
RDI DI
RBP BP
RSP SP
R8 R8W
R9 R9W
R10 R10W
R11 R11W
R12 R12W
R13 R13W
R14 R14W
R15 R15W

Figura: Intel
R
64 : Registros de Propósito general para operandos word,
utilizando prefijo REX

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 24 / 59
R
Modelo del Programador de aplicaciones Arquitectura Intel 64

Extensiones de 64 bits

Registros de Propósito General


63 0

RAX AL
RBX BL
RCX CL
RDX DL
RSI SIL
RDI DIL
RBP BPL
RSP SPL
R8 R8L
R9 R9L
R10 R10L
R11 R11L
R12 R12L
R13 R13L
R14 R14L
R15 R15L

Figura: Intel
R
64 : Registros de Propósito general para operandos byte,
utilizando prefijo REX

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 25 / 59
R
Modelo del Programador de aplicaciones Arquitectura Intel 64

Flags, EFLAGS, RFLAGS

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017

R 26 / 59
Modos de Direccionamiento

Como Obtener los Operandos

Como reglas generales, de acuerdo a la documentación disponible,


las instrucciones de estos procesadores pueden obtener los
operandos desde:

La instrucción en si misma, es decir que el operando está


implı́cito en la instrucción)

Un registro

Una posición de memoria

Un port de E/S

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 27 / 59
Modos de Direccionamiento

Como Almacenar los resultados

Del mismo modo el resultado de una instrucción puede tener como


destino para su almacenamiento:

Un registro

Una posición de memoria

Un port de E/S.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 28 / 59
Modos de Direccionamiento Modo Implı́cito

¿Que significa Direccionamiento Implı́cito?

Se trata de instrucciones en las cuales el código de operación es


suficiente como para establecer que operación realizar, y cual es el
operando.
Son ejemplos de este Modo, las instrucciones que operan sobre los
Flags, como por ejemplo:
CLC: Clear Carry. El operando (el Flag CF), está implı́cito en la
operación. Lo mismo ocurre con STC (Set Carry), CMC
(Complement Carry),
CLD (Clear Direction Flag), STD (Set Direction Flag),
CLI y STI para limpiar y setear el flag de Interrupciones (IF),
entre otros.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 29 / 59
Modos de Direccionamiento Modo Implı́cito

Mas Instrucciones con Direccionamiento Implı́cito


Otras instrucciones con modo de direccionamiento implı́cito son
algunas que en realidad no requieren operandos, ya que tienen por
objeto indicar al procesador alguna acción especı́fica. Por ejemplo:
HLT, que suspende la ejecución del procesador y lo pone en un estado que se
define como HALT, en el que está suspendido, en un modo de consumo de
energı́a mı́nimo, y del cual se puede salir solo mediante alguna Interrupción de
Hardware, incluidas NMI y SMI, alguna excepción de debug, o una señal #BINIT,
#INIT, o RESET,
NOP que provoca que el procesador no haga nada durante el intervalo de una
instrucción en el flujo de instrucciones.
Ajustes para operaciones aritméticas sobre números en formato BCD o ASCII
empaquetado, como AAA (ASCII Adjust after Adition), AAD (ASCII Adjust after
Division), AAM (ASCII Adjust after Multiplication), AAS ASCII Adjust after
Substraction), DAA (Decimal Adjust after Adition), DAS (Decimal Adjust after
Substraction). Todas estas instrucciones operan sobre el Acumulador AX, razón
por la cual no es necesario indicar el operando en la instrucción.
CWD/CDQ/CQO Convert Word to Double Word y Convert Double Word to
Quadword, que operan con el contenido de AX EAX y RAX extendiéndolo con
signo a DX:AX, EDX:EAX, y RDX:RAX respectivamente,
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 30 / 59
Modos de Direccionamiento Modo Inmediato

¿Que significa direccionar en Modo Inmediato?

En este modo, el operando fuente viene dentro del código de la


instrucción, con lo cual no es necesario ir a buscarlo a memoria luego
de decodificada la instrucción.

1 ; //////////////////////////////////////////////////////
2 ; a s c i i r e c i b e en a l un b y t e decimal no empaquetado
3 ; y r e t o r n a su a s c i i en e l mismo r e g i s t r o
4 ; //////////////////////////////////////////////////////
5 ascii :
6 add al , ’ 0 ’
7 cmp al , ’ 9 ’
8 jle listo
9 add a l , ’A ’− ’ 9 ’−1
10 listo : ret

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 31 / 59
Modos de Direccionamiento Modo Registro

¿Que significa direccionar a Registro?


Todos los operandos involucrados son Registros del procesador. No importa si hay
uno o dos operandos, son todos Registros.
Registros de Propósito General tanto de 64, 32, 16 u 8 bits de acuerdo con las
arquitecturas IA-32 e Intel
R
64
Registros de segmentos
EFlags (o RFlags)
Registros de la FPU,
MM0 a MM7,
XMM0 a XMM7 o XMM15 según sea IA-32 o Intel R
64 respectivamente,
Registros de Control
Registros de Debug
MSR’s (Model Specific Registers)
1 inc rdx ; Incrementa en c o n t e n i d o d e l r e g i s t r o RD
2 mov eax , ebp ; Mueve a l r e g i s t r o EAX e l c o n t e n i d
3 mov cr0 , eax ; Mueve a l r e g i s t r o c r 0 e l c o n t e n i d
4 f m u l s t ( 0 ) , s t ( 3 ) ; ST ( 0 ) = ST ( 0 ) ∗ ST ( 3 )
5 s q r t p d xmm2,xmm6 ; Raı́z cuadrada de dos double p r e c i s i o n FP
6 ; empaquetados en xmm6. Resultados en xmm
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 32 / 59
Modos de Direccionamiento Modos de Direccionamiento a memoria

¿Como nos referimos desde el software a un


Operando en Memoria?

Para identificar un operando (fuente o destino) de una instrucción en


memoria, se utiliza lo que Intel denomina dirección lógica.

Este nombre obedece a que es una dirección abstracta expresada en


términos de su arquitectura pero que necesita ser procesada para
convertirse finalmente en la dirección fı́sica que es la que saldrá hacia
el bus del sistema por las lı́neas de address.

Figura: IA-32: Dirección lógica Figura: Intel


R
64 : Dirección Lógica

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 33 / 59
Modos de Direccionamiento Modos de Direccionamiento a memoria

Segmentos para cada dirección Lógica


El valor del segmento en una dirección lógica, puede especificarse de manera
implı́cita.
Por lo general este es el modo en que se hace, aunque es posible explicitar con
que segmento se desea direccionar un operando de memoria determinado.
Si no se especifica explı́citamente el segmento como parte de la dirección lógica
el procesador lo establecerá automáticamente de acuerdo a la tabla
Referencia a: Reg. Segmento Regla de selección por defecto
Instrucciones CS Segmento de Código Cada opcode fetch
Pila SS Segmento de Pila Todos los push y pop, cualquier re-
ferencia a memoria que utilice co-
mo registro base ESP o EBP.
Datos Locales DS Segmento de datos Cualquier referencia a un dato, ex-
cepto en el stack o un destino de
instrucción de string
Strings Destino ES Segmento de datos Destino de Instrucciones de mane-
extra direccionado jo de strings
por ES

Cuadro: Reglas de selección de segmento predefinidos

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 34 / 59
Modos de Direccionamiento Modos de Direccionamiento a memoria

Desplazamiento para ubicar operandos en Memoria

La riqueza de modos de direccionamiento de operandos en memoria la da el


desplazamiento. Aquı́ es Intel puso todo el esfuerzo dando una gran cantidad de
alternativas para calcular el desplazamiento.
Básicamente un desplazamiento tiene al menos uno de los siguientes componentes,
o cualquiera de las combinaciones posibles:

Desplazamiento directo: Se trata de un valor de 8, 16, o 32 bits, explı́citamente


incluido en la instrucción.
Base: Se trata de un valor contenido en un registro de propósito general, que
indica una dirección a partir de la cual se calcula el desplazamiento. Es un valor
de 32 bits en el modo IA-32 y de 64 bits en IA-32e.
Índice: Se trata de un valor contenido en un registro de propósito general, que
se representa la dirección a la cual nos queremos referir. Tı́picamente es un
valor que al incrementarse permite recorrer por ejemplo un buffer de memoria.
Es un valor de 32 bits en el modo IA-32 y de 64 bits en IA-32e.
Escala: Es un valor por el cual se multiplica el valor del Índice: Puede valer 2, 4,
u 8.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 35 / 59
Modos de Direccionamiento Modos de Direccionamiento a memoria

Calculando el desplazamiento
A partir de estos cuatro componentes o combinación de algunos de ellos, se obtiene
lo que Intel denomina Dirección Efectiva. Esta denominación intenta representar el
significado del offset dentro de un segmento: es la dirección que ocupa efectivamente
el elemento direccionado respecto del inicio del segmento.
Los cuatro componentes anteriores pueden ser positivos o negativos en
representación Ca2 (excepto el valor del factor de escala que es siempre positivo).
A continuación se presenta los diferentes registros y valores que pueden integrar
cada uno de los cuatro componentes descriptos:
Base Índice Escala Desplazamiento
 
EAX       
EBX  EAX 1 Nada
ECX  EBX    
       

  ECX  2  8bits 
EDX       
 ESP  + EDX  ∗   + 
       

   EBP  4 16bits
 EBP       
   EDI     
 EDI 
ESI 8 32bits
ESI
En general la expresión general que representa el cálculo interno del procesador es:

DireccionEfectiva = Base + (Indice ∗ escala) + Desplazamiento


Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 36 / 59
Modos de Direccionamiento Modos de Direccionamiento a memoria

Casos particulares

Cuestiones a destacar, respecto de la matriz anterior:


El registro ESP (o RSP), no puede utilizarse de Índice. Esto es
bastante lógico ya que su uso privilegiado es como puntero de
pila. Por lo tanto modificarlo para recorrer otro array de datos que
no sea la pila es poco menos que imprudente.
Cuando se emplean como registros base ESP y EBP (o RSP y
RBP), se utilizan asociados al registro de segmento SS. Para el
resto de los usos se asocian al DS.
El factor de escala solo se puede emplear cuando se utiliza un
Registro Índice. En otro caso no se emplea.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 37 / 59
Modos de Direccionamiento Modo Desplazamiento

¿El Offset puede venir directo en la Instrucción?

Se incluye en la instrucción un valor en forma explı́cita que representa


en forma directa el valor del offset.
En el listado siguiente se muestran diversos ejemplos de instrucciones
de este Modo.
1 or ecx , dword [ 0 x300040A0 ] ; C a l c u l a l a o r l ó g i c a e n t r e
2 ;ECX y l a doble word c o n t e n i d a
3 ; a p a r t i r de l a d i r e c c i o n de
4 ; memoria 0x300040A0.
5 inc b y t e [ 0 xAF007600 ] ; Incrementa e l b y t e c o n t e n i d o
6 ; por l a d i r e c c i o n de memoria
7 ; 0xAF007600
8 dec dword [ i ] ; E l v a l o r de l a d i r e c c i ón de l a
9 ; v a r i a b l e i se c a l c u l a d i r e c t a −
10 ; mente y e l v a l o r se reemplaza
11 ; en tiempo de c o m p i l a c i ón

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 38 / 59
Modos de Direccionamiento Modo Base Directo

Una de las formas de direccionar en forma indirecta

En este modo el ofsset está contenido directamente en un


registro Base.
El procesador simplemente lo toma desde el registro, sin otro
cálculo.
1 mov edx , i ; edx = desplazamiento de i en e l segmento
2 ; de datos
3 inc [ edx ] ; incrementamos i d i r e c c i o n a d a a t r a v és de
4 ; un r e g i s t r o p u n t e r o base.

El ejemplo anterior es trivial ya que la variable como vimos puede


incrementarse de manera directa

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 39 / 59
Modos de Direccionamiento Base + Desplazamiento

Formas mas útiles de direccionar en forma indirecta

Combina el valor contenido en un registro que apunta a la base de


un bloque de datos con un valor explı́cito puesto en la instrucción,
que permite calcular la dirección efectiva del operando.

También resulta útil para acceder a una estructura mas compleja


de datos, apuntando a la base de la estructura con un registro y
utilizando el Desplazamiento para acceder al campo deseado de
la estructura.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 40 / 59
Modos de Direccionamiento Base + Desplazamiento

Formas mas útiles de direccionar en forma indirecta


1 ORG 8000h
2 use16 ; Estamos en Modo Real=>Có d i g o de 16 b i t s
3 start : jmp main ; S a l t o a l i n i c i o d e l programa.
4 ALIGN 8
5 gdt : resb 8 ; NULL D e s c r i p t o r . Dejamos 8 b y t e s s i n u s a r .
6 Data sel equ $−g d t ; C a l c u l a d i n ámicamente l a p o s i c i ón d e l s l e c t o r
7 K data : dw 0xffff ; l ı́ m i t e 15 . 0 0
8 dw 0x0000 ; base 15 . 0 0
9 db 0x00 ; base 23 . 1 6
10 db 10010010b ; Presente Segmento Datos Read W r i t e
11 db 0xCF ;G = 1 , D / B = 1 , y l ı́ m i t e 0Fh
12 db 0x00 ; base 31 . 2 4
13 gdt size equ $−g d t ; c a l c u l a d i n ámicamente e l tama´ no de l a g d t
14 main :
15 ...
16 ...
17 mov ebx , K data ; ebx apunta a l a base d e l d e s c r i p t o r
18 ; /////////////////////////////////////////////////////////////////////////
19 ; Lee con d i r e c c i o n a m i e n t o base + desplazamiento l o s a t r i b u t o s d e l d e s c r i p t
20 ; de segmento de datos d e f i n i d o en l a t a b l a a n t e r i o r
21 mov a l , b y t e [ ebx + 5 ]
22 ; /////////////////////////////////////////////////////////////////////////
23 t e s t a l , 0 x80 ; Testea b i t de p r e s e n t e
24 jz NoPresente ; S i no e s t á presente , s a l t a
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 41 / 59
Modos de Direccionamiento Índice * escala + desplazamiento

Formas mas útiles de direccionar en forma indirecta


Es una forma eficiente de acceder a elementos de un array cuyo
tamaño es 2, 4, u 8 bytes
El Desplazamiento puede ubicar el inicio del array y el valor ı́ndice
se guarda en un registro que al incrementar pasa al siguiente
elemento permitiendo con la escala ajustar al tamaño del mismo
1 % define Dir Tabla 0x2000F000
2 % d e f i n e mascara 0xFFFFFFE
3 mov ecx , s i z e t a b l a ; ecx = c a n t i d a d de elementos de
4 ; 4 b y t e s de l a t a b l a .
5 xor esi , esi ; e s i apunta a l i n i c i o de l a t a b l a
6 mas :
7 and [ e s i ∗4 + D i r T a b l a ] , mascara
8 ; b o r r a b i t menos s i g n i f i c a t i v o
9 ; d e l elemento de l a t a b l a
10 inc esi ; e s i apunta a l s i g u i e n t e
11 ; elemento de 4 b y t e s
12 l o o p mas ; va por e l s i g u i e n t e elemento
13 ; hasta que exc sea 0
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 42 / 59
Modos de Direccionamiento Base + Índice + Desplazamiento

Formas mas útiles de direccionar en forma indirecta

Este modo es especial para acceder a matrices bidimensionales.


Un ejemplo obligado es el buffer de video
Cuando trabaja en modo texto el buffer de video es una matriz de
25 filas por 80 columnas.
Cada elemento consta de dos bytes: el primero contiene el ASCII
del caracter a presentar y el segundo los atributos (intensificado,
video inverso, y colores de caracter y fondo).
Vamos a escribir un código que aprovechando este modo de
direccionamiento sirva para limpiar el contenido de la pantalla.
El registro base apunta a cada lı́nea de la pantalla y el ı́ndice
apunta a cada elemento de la lı́nea.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 43 / 59
Modos de Direccionamiento Base + Índice + Desplazamiento

Formas mas útiles de direccionar en forma indirecta


1 ; E l s i g u i e n t e c ó d i g o l i m p i a l a p a n t a l l a d e j ándola en modo
2 ; blanco sobre n e g r o . E l b u f f e r de v i d e o comienza en l a
3 ; d i r e c c i ón f ı́ s i c a 0x000B8000. U t i l i z a m o s e s t e v a l o r como
4 ; desplazamiento en e l c á l c u l o de l a d i r e c c i ón e f e c t i v a .
5 xor ebx , ebx ; r e s u l t a d o ebx = 0 .
6 ; ebx apunta a l a 1 e r . f i l a de 80 c a r a c t e r e
7 col :
8 xor edi , e d i ; resultado edi = 0 .
9 ; e d i apunta a l p r i m e r elemento de l a f i l a
10 mov ecx , s i z e r o w ; ecx = c a n t i d a d de f i l a s para l o o p
11 row :
12 ; c a r a c t e r n u l o no imprime nada en p a n t a l l a
13 mov b y t e [ ebx + e d i + 0x000B8000 ] , 0 x00
14

15 add edi , 2 ; e d i apunta a l p o r x . elemento de 2 b y t e s


16 loop row ; s i CX = 0 se complet ó f i l a
17 add ebx ,160 ; Apunta a l a s i g u i e n t e f i l a
18 cmp ebx , 0 x1000 ; f i n d e l b u f f e r ?
19 jle col
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 44 / 59
Modos de Direccionamiento Modo Base + Índice * Escala + Desplazamiento

Formas mas útiles de direccionar en forma indirecta


1 ; E l s i g u i e n t e c ó d i g o l i m p i a l a p a n t a l l a d e j ándola en modo
2 ; blanco sobre n e g r o . E l b u f f e r de v i d e o comienza en l a
3 ; d i r e c c i ón f ı́ s i c a 0x000B8000. U t i l i z a m o s e s t e v a l o r como
4 ; desplazamiento en e l c á l c u l o de l a d i r e c c i ón e f e c t i v a .
5 xor ebx , ebx ; r e s u l t a d o ebx = 0 .
6 ; ebx apunta a l a 1 e r . f i l a de 80 c a r a c t e r e
7 col :
8 xor edi , e d i ; resultado edi = 0 .
9 ; e d i apunta a l p r i m e r elemento de l a f i l a
10 mov ecx , s i z e r o w ; ecx = c a n t i d a d de f i l a s para l o o p
11 row :
12 ; c a r a c t e r n u l o no imprime nada en p a n t a l l a
13 mov b y t e [ ebx + e d i ∗2 + 0x000B8000 ] , 0 x00
14

15 inc edi ; e d i apunta a l p o r x . elemento de 2 b y t e s


16 loop row ; s i CX = 0 se complet ó f i l a
17 add ebx ,160 ; Apunta a l a s i g u i e n t e f i l a
18 cmp ebx , 0 x1000 ; f i n d e l b u f f e r ?
19 jle col
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 45 / 59
Tipos de Datos

Tipos básicos de datos

Figura: IA-32 e Intel


R
64 : Tipos de datos fundamentales

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 46 / 59
Tipos de Datos Almacenamiento en memoria

Little endian
Desde el procesador 8086, esta familia maneja el
almacenamiento en memoria de las variables en el formato little
endian.
Dicho de otra forma: una variable de varios bytes de tamaño
almacena su byte menos significativo en la dirección con que se
referencia la variable y a partir de allı́ coloca el resto de los bytes
en orden de significancia, terminando con el almacenamiento del
byte mas significativo, en la dirección de memoria mas alta (es
decir termina con el menor, de allı́ little endian).
Esta situación se representa en próximo slide. A simple vista
pareciera que están almacenados al revés, ya que si lo miramos
en la memoria está de atrás hacia adelante.
Otros procesadores utilizan el formato Big Endian, es decir
colocando la información en el orden en el que normalmente
esperamos encontrarla.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 47 / 59
Tipos de Datos Almacenamiento en memoria

Little endian

Figura: IA-32 e Intel


R
64 : Alineamiento en memoria para los diferentes tipos
de datos

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 48 / 59
Tipos de Datos Almacenamiento en memoria

Little endian

La razón por la que Intel adoptó Little Endian, obedece a que el


procesador 8086 (y sus sucesores por cuestión de
compatibilidad), administra la memoria de a bytes.
Esto significa que cada dirección de memoria tiene una capacidad
de almacenamiento de 8 bits.
Por lo tanto, y debido a esta decisión de diseño, es que un bus de
datos de 16 bits primero, 32 mas tarde, y 64 actualmente, se
conecta a bancos de memoria RAM Dinámica organizados en
bytes.
Por lo tanto, cuando el procesador lee un dato de 64 bits a través
del bus de datos, cada byte de las direcciones de memoria que se
leen viaja por un byte del bus de datos, de acuerdo al
ordenamiento que la información tiene en la memoria, de la
manera en que se muestra en el próximo slide.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 49 / 59
Tipos de Datos Almacenamiento en memoria

Little endian
Quadword
0x1A4BAA072157DF33

Banco 0 Banco 1 Banco 2 Banco 3 Banco 4 Banco 5 Banco 6 Banco 7


0x00000000 0x7E 0x31 0x9C 0XB3 0x4D 0x00 0xCE 0xB7
0x00000008 0x33 0xDF 0x57 0X21 0x07 0xAA 0x4B 0x1A
0x00000010
0x00000018

0xFFFFFFF0
0xFFFFFFF8

Data0
0x33
Terminales de Datos

0xDF
del procesador

0x57

0X21

0x07

0xAA

0x4B

0x1A
Data63
Bus de datos
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 50 / 59
Tipos de Datos Alineación en memoria

¿Porque conviene alinear los datos?


Los procesadores IA-32 e Intel R
64 no ponen restricciones
respecto de la alineación en memoria para las diferentes variables
de los programas (consecuencia favorable de la administración de
memoria de a bytes).
Esto otorga gran flexibilidad a la hora de aprovechar al máximo la
memoria.
Pero si una variable queda repartida en dos filas diferentes, se
requerirán dos ciclos de lectura para accederla.
Esta situación se representa en el siguiente slide.
La variable se trae al procesador con dos lecturas de memoria
Estas dos lecturas de memoria son transparentes a nivel de
software (la aplicación no debe ser modificada en absoluto), ya
que el procesador autónomamente realiza las dos lecturas.
Entonces ¿cual es el problema?. La respuesta es: performance.
Dos ciclos de lectura en lugar de uno solo tornan mas lento el
acceso a la variable. Esto puede evitarse usando las directivas de
alineación que todos los lenguajes poseen.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 51 / 59
Tipos de Datos Alineación en memoria

Acceso a datos no alineados


Quadword
0x1A4BAA072157DF33

Banco 0 Banco 1 Banco 2 Banco 3 Banco 4 Banco 5 Banco 6 Banco 7


0x00000000 0x7E 0x31 0x9C 0XB3 0x4D 0x00 0xCE 0xB7
0x00000008 0x33 0xDF 0x57 0X21 0x07 0xAA 0x4B 0x1A
0x00000010
0x00000018

0xFFFFFFF0
0xFFFFFFF8

Data0
0x33
Terminales de Datos
del procesador

0xB7
Data63
Bus de datos
egundo Ciclo
Primer ciclo
de lectura

e Lectura

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 52 / 59
Tipos de Datos Representación de datos numéricos

Formato de Enteros con y sin signo

7 0
Byte Entero No Signado
15 0
Word Entera No Signada
31 0
Doble Word Entera No Signada
63 0
Quad Word Entera No Signada

76 0
Byte Entero Signado
15 14 Signo
0
Word Entera Signada
31 30 Signo
0
Doble Word Entera Signada
63 62 Signo
0
Quad Word Entera Signada
Signo

Figura: IA-32 e Intel


R
64 : Tamaños de datos enteros con y sin signo

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 53 / 59
Tipos de Datos Representación de datos numéricos

Rangos de Enteros con y sin signo


Formato Codificación Ca2
Signo
Positivo Máximo 0 11....11
. .
. .
Mı́nimo 0 00....01
Cero 0 00....00
Negativo Mı́nimo 1 11....11
. .
. .
Máximo 1 00....01
Indefinido 1 00....00
Byte entero Signado ← 7 bits →
Word entero Signado ← 15 bits →
DoubleWord entero Signado ← 31 bits →
QuadWord Signado ← 63 bits →

Alejandro Furfaro
Cuadro: Codificaci ón de enteros c
Procesadores IA-32 e Intel 64
signados Marzo de 2017 54 / 59
Tipos de Datos Representación de datos numéricos

Representación en punto flotante


79 64 63 0

Extended Double: 1:15:64

63 52 51 0

Bit de Signo 0

Double Precision 1:11:52

Bits de exponente (Ca2) 31 23 22 0

Bits de la Mantisa o significando (1.mantisa)


Single Precisión 1:8:23

15 10 9 0

Half Precisión 1:5:10

Figura: Formato de Datos en representación de Punto Flotante

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 55 / 59
Tipos de Datos Representación de datos numéricos

Rangos de Números en punto flotante

Tipo de Dato Longitud Precisión Rango Normalizado (aproximado)


Binario Decimal
Half Precision 16 11 2−14 a 215 3,1x10−5 a 6,50x104
Single Precision 32 24 2−126 a 2127 1,18x10−38 a 3,40x1038
Double Precision 64 53 2−1022 a 211023 2,23x10−308 a 1,79x10308
Extended Double Precision 80 64 2−16382 a 216383 3,37x10−4932 a 1,18x104932

Cuadro: Codificación de números en Punto Flotante

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 56 / 59
La Pila Bases

Funcionamiento básico
La pila (stack) es un área de memoria contigua, referenciada por un
segmento cuyo selector está siempre en el registro SS del procesador.
El tamaño de este segmento en el modo IA-32, puede llegar hasta 4
Gbytes de memoria, en especial cuando el sistema operativo utiliza el
modelo de segmentación Flat (como veremos en clases subsiguientes).
El segmento se recorre mediante un registro de propósito general,
denominado habitualmente en forma genérica stack pointer, y que en
estos procesadores según el modo de trabajo es el registro SP, ESP, o
RSP (16, 32, o 64 bits respectivamente).
Para guardar un dato en el stack el procesador tiene la instrucción
PUSH, y para retirarlo, la instrucción POP.
Cada vez que ejecuta PUSH, el procesador primero decrementa el
stack pointer (SP, ESP, o RSP) y luego escribe el dato en el stack, en la
dirección apuntada por el registro de segmento SS, y el stack pointer
correspondiente al modo de trabajo.
Cada vez que ejecuta un POP, el procesador lee el ı́tem apuntado por el
pas SS y el stack pointer, y luego incrementa éste último registro.
Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 57 / 59
La Pila Bases

Funcionamiento básico

El stack es un segmento expand down, ya que a medida que lo utilizamos


(PUSH) su registro de desplazamiento se decrementa tendiendo a las
direcciones mas bajas de memoria (numéricamente menores).
Estas operaciones se pueden realizar en cualquier momento, pero hablando
mas generalmente, podemos afirmar que la pila se usa cuando:

Cuando llamamos a una subrutina desde un programa en Assembler,


mediante la instrucción CALL.
Cuando el hardware mediante la interfaz adecuada envı́a una
Interrupción al Procesador.
Cuando desde una aplicación, ejecutamos una Interrupción de software
mediante la instrucción INT type.
Cuando desde un lenguaje como el C se invoca a una función
cualquiera.

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 58 / 59
La Pila Bases

Funcionamiento básico

El stack pointer debe apuntar a direcciones de memoria alineadas de


acuerdo con su ancho de bits.
Por ejemplo, el ESP (32 bits) debe estar alineado a double words.
Al definir un stack en memoria se debe cuidar el detalle de la alineación.
El tamaño de cada elemento de la pila se corresponde con el atributo de
tamaño del segmento (16, 32, o 64 bits), es decir, con el modo de
trabajo en el que está el procesador, y no con el del operando en sı́.
Ej: PUSH AL, consume 16, 32, o 64 bits dependiendo del tamaño del
segmento. Nunca consume 8 bits.
El valor en que se decrementa el Stack Pointer se corresponde con el
tamaño del segmento (2, 4, u 8 bytes).

Alejandro Furfaro c
Procesadores IA-32 e Intel 64 Marzo de 2017 59 / 59

También podría gustarte