Arquitectura basica-FURFARO
Arquitectura basica-FURFARO
Arquitectura basica-FURFARO
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
IA-32
Arquitectura Intel
R
64
3 Modos de Direccionamiento
Modo Implı́cito
Modo Inmediato
Modo Registro
Base + 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
Primeras conclusiones
Primeras conclusiones
Primeras conclusiones
Modos de Operación
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 8 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 9 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 12 / 59
Inroducción Arquitectura Básica
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
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
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
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 16 / 59
Modelo del Programador de aplicaciones IA-32
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
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 17 / 59
Modelo del Programador de aplicaciones IA-32
79 64 63 0
63 52 51 0
Bit de Signo 0
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 18 / 59
Modelo del Programador de aplicaciones IA-32
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
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
Extensiones MMX
ESI SI GS
EDI DI
31 16 15 0
EBP BP EIP IP
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
63 Registros MMX 0
MM0
MM1
MM2
MM3
MM4
MM5
MM6
MM7
ESI SI GS
EDI DI
31 16 15 0
EBP BP EIP IP
63 Registros MMX 0
MM0
MM1
MM2
MM3
MM4
MM5
MM6
MM7
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
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
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
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
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
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017
R 26 / 59
Modos de Direccionamiento
Un registro
Un port de E/S
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 27 / 59
Modos de Direccionamiento
Un registro
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
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 29 / 59
Modos de Direccionamiento Modo Implı́cito
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
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 33 / 59
Modos de Direccionamiento Modos de Direccionamiento a memoria
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 34 / 59
Modos de Direccionamiento Modos de Direccionamiento a memoria
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:
Casos particulares
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 37 / 59
Modos de Direccionamiento Modo Desplazamiento
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 38 / 59
Modos de Direccionamiento Modo Base Directo
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 39 / 59
Modos de Direccionamiento Base + Desplazamiento
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 40 / 59
Modos de Direccionamiento Base + Desplazamiento
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 43 / 59
Modos de Direccionamiento Base + Índice + Desplazamiento
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
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 48 / 59
Tipos de Datos Almacenamiento en memoria
Little endian
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 49 / 59
Tipos de Datos Almacenamiento en memoria
Little endian
Quadword
0x1A4BAA072157DF33
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
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
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
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 53 / 59
Tipos de Datos Representación de datos numéricos
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
63 52 51 0
Bit de Signo 0
15 10 9 0
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 55 / 59
Tipos de Datos Representación de datos numéricos
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
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 58 / 59
La Pila Bases
Funcionamiento básico
Alejandro Furfaro c
Procesadores IA-32 e Intel
64 Marzo de 2017 59 / 59