Variables locales de la subrutina

Para que una subrutina con variables locales sea re-entrante y por tanto recursiva es necesario crear un conjunto nuevo de variables locales cada vez que se produce una nueva llamada sin haber finalizado la anterior.

Para ello se puede utilizar de nuevo la Pila, que se convierte así en el soporte de la gestión dinámica de la memoria en las llamadas a subrutinas.

El conjunto de información que se introduce en la pila como consecuencia de una llamada a subrutina se conoce como Registro de Activación (RA)

Variables locales de subrutina

La evolución de la Pila en el proceso de llamada, ejecución con variables locales y vuelta de subrutina sería la siguiente:

Evolución de la pila en el proceso de llamada

Finalmente, para que el RA de una subrutina pueda recuperarse cuando se vuelve de una llamada a otra subrutina, es necesario que antes de realizar la llamada se guarde en el nuevo RA (el de la subrutina llamada) la dirección del antiguo RA (el de la subrutina que realiza la llamada, o subrutina padre).

De esta manera todos los RAs quedan enlazados a través de este nuevo campo:

RA de subrutina

Fuente: Estructura de Computadores, Facultad de Informática, UCM

Publicado en Estructura de computadores

Suscríbete:

who's online