Un registro de pila es un registro de una CPU de computadora cuyo propósito es mantener la pista de la posición actual de la pila de llamadas. En una máquina de arquitectura basada en acumulador, este puede ser un registro dedicado como el puntero de pila (SP del inglés stack pointer) de una máquina Intel x86. En una máquina de registro general, puede ser un registro reservado por convención, como el de las máquinas PDP-11 o RISC. Algunos diseños como el Data General Eclipse no tenían ningún registro dedicado para el puntero de pila, pero usaron una dirección de memoria de hardware reservada para esta función.

Antes de finales de los años 1960, las máquinas como el PDP-8 y el HP 2100 no tuvieron compiladores que soportaran la recursión. Sus instrucciones de subrutinas, típicamente guardarían la localización actual de la dirección del salto, y después fijarían el contador de programa a la dirección siguiente.[1]​ Mientras que esto era más simple que mantener una pila, ya que solamente hay una localización de retorno por sección de código de subrutina, de esta manera no podía haber recursión sin un esfuerzo considerable por parte del programador.

A diferencia de una máquina de registro, una máquina de pila tiene dos o más pilas. Una máquina de dos pilas (similar a la usada en la implementación del lenguaje Forth), tiene un pila de llamadas, que mantiene información sobre las llamadas a subrutinas en ejecución (que no han retornado) entre otras cosas, y el otro es un pila de parámetros, que mantiene información sobre los parámetros o datos con los que trabajan las subrutinas.

Referencias

editar
  1. David Salomon (febrero de 1993). Assemblers and Loaders. Ellis Horwood Ltd. ISBN 0130525642. Consultado el 1 de octubre de 2008. «Most computers save the return address in either the stack, in one of the registers, or in the first word of the procedure (in which case the first executable instruction of the procedure should be stored in the second word). If the latter method is used, a return from the procedure is a jump to the memory location whose address is contained in the first word of the procedure.» 

Véase también

editar

📚 Artikel Terkait di Wikipedia

Stack trace

de la pila de tiempo de ejecución llamado registro de activación (o stack pointer). En un nivel alto, un registro de activación asigna memoria para los

Pila de llamadas

pila se accede a menudo mediante un registro llamado puntero de pila (Stack Pointer) (ver registro de pila), que también sirve para indicar al tope actual

VAX

El PC (Program Counter, en español contador de programa) y el SP (Stack Pointer, en español puntero de pila) son los registros R15 y R14 respectivamente

PDP-11

seis primeros (%0 a %5) de propósito general. El séptimo (%6) es el Stack Pointer (puntero de la pila). El octavo (%7) es el Program Counter (contador

MC2 (microprocesador)

operaciones aritméticas. Es destacable la ausencia de puntero de pila (stack pointer). Como otras CPU de la época, guardan las direcciones de retorno en

CHIP-8

de 4-bit X e Y: registro de 4-bit PC: Contador de programa (del inglés Program Counter) SP: Puntero de pila (del inglés Stack Pointer) Datos: Q1023623

Intel 8080

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | H | L | HL +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Stack Pointer y Program Counter +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SP |

MOS 6510

señalar una situación provocada en la ejecución que se acaba de realizar. Stack Pointer: Se trata de un contador programable que direcciona la página 1 de la