Articulo de referencia

Registro de pila

Un registro de pila , también conocido como puntero de pila , es un registro del procesador central cuya función es mantener un registro de la pila de llamadas . En una máquina ...

Un registro de pila , también conocido como puntero de pila , es un registro del procesador central cuya función es mantener un registro de la pila de llamadas . En una máquina con arquitectura basada en acumulador , puede tratarse de un registro dedicado. En una máquina con múltiples registros de propósito general , puede ser un registro reservado por convención, como en las arquitecturas IBM System/360 a z/Architecture y RISC , o puede ser un registro que las instrucciones de llamada y retorno de procedimientos están cableadas para usar, como en las arquitecturas PDP-11 , VAX e Intel x86 . Algunos diseños, como el Data General Eclipse, no tenían un registro dedicado, sino que utilizaban una dirección de memoria de hardware reservada para esta función.

Las máquinas anteriores a finales de la década de 1960 , como la PDP-8 y la HP 2100 , no contaban con compiladores que admitieran la recursión . Sus instrucciones de subrutina normalmente guardaban la ubicación actual en la dirección de salto y luego establecían el contador de programa en la siguiente dirección. [ 1 ] Si bien esto es más sencillo que mantener una pila, dado que solo hay una ubicación de retorno por sección de código de subrutina, no puede haber recursión sin un esfuerzo considerable por parte del programador.

Una máquina de pila puede tener 2 o más registros de pila : uno de ellos realiza un seguimiento de una pila de llamadas , y los otros realizan un seguimiento de otras pilas .

Motor de pila

Los procesadores más sencillos almacenan el puntero de pila en un registro de hardware regular y utilizan la unidad aritmético-lógica (ALU) para manipular su valor. En los procesadores con instrucciones que insertan y extraen elementos de la pila, dichas instrucciones se ejecutan con múltiples ciclos de CPU o microinstrucciones cableadas , o bien se traducen en múltiples microoperaciones para sumar/restar el puntero de pila y realizar la carga/almacenamiento en memoria por separado. [ 2 ]

Los procesadores más recientes de este tipo contienen un motor de pila dedicado para optimizar las operaciones de pila. El Pentium M fue el primer procesador x86 en introducir un motor de pila. En su implementación, el puntero de pila se divide entre dos registros: ESP O , que es un registro de 32 bits, y ESP d , un valor delta de 8 bits que se actualiza directamente mediante operaciones de pila. Los códigos de operación PUSH, POP, CALL y RET operan directamente con el registro ESP d . Si ESP d está cerca de desbordarse o el registro ESP es referenciado desde otras instrucciones (cuando ESP d ≠ 0), se inserta una microoperación de sincronización que actualiza ESP O usando la ALU y restablece ESP d a 0. Este diseño se ha mantenido prácticamente sin cambios en los procesadores Intel posteriores, aunque ESP O se ha ampliado a 64 bits. [ 3 ]

También se adoptó un motor de pila similar al de Intel en la microarquitectura AMD K8 . En Bulldozer , se eliminó la necesidad de microoperaciones de sincronización, pero se desconoce el diseño interno del motor de pila. [ 3 ]

Referencias

  1. Salomon, David (febrero de 1993) [1992]. Escrito en la Universidad Estatal de California, Northridge, California, EE. UU. Chivers, Ian D. (ed.). Ensambladores y cargadores (PDF) . Serie Ellis Horwood en computadoras y sus aplicaciones (1.ª  ed.). Chichester, West Sussex, Reino Unido: Ellis Horwood Limited / Simon & Schuster International Group . ISBN 0-13-052564-2Archivado (PDF) del original el 23/03/2020 . Consultado el 01/10/2008 . La mayoría de los ordenadores guardan la dirección de retorno en la pila, en uno de los registros o en la primera palabra del procedimiento (en cuyo caso la primera instrucción ejecutable del procedimiento debe almacenarse en la segunda palabra). Si se utiliza este último método, el retorno del procedimiento es un salto a la ubicación de memoria cuya dirección se encuentra en la primera palabra del procedimiento.(xiv+294+4 páginas)
  2. Stokes, Jon "Hannibal" (25 de febrero de 2004). "Una mirada al núcleo de Centrino: el Pentium M" . archive.arstechnica.com . pág. 5. 
  3. 1 2 Fog, Agner. "La microarquitectura de las CPU de Intel, AMD y VIA" (PDF) . Universidad Técnica de Dinamarca.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Stack_register&oldid=1336518714 "