Registro de pila
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]- ↑ 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.»