Subrutinas

Supongamos que en diferentes puntos de un programa se realiza la operación de elevar al cuadrado un número. El código simbólico (MC68000) de la operación sería el siguiente:

MOVE.W        N, D0
MULS             D0, D0
MOVE,W        D0, N

El programador tiene dos opciones para repetir el código en los puntos donde aparezca la operación: las macros y las subrutinas.

a) Una MACRO o subrutina abierta es una llamada que se realiza en aquellos puntos donde aparece la operación y que el ensamblador sustituye por el código correspondiente en un proceso denominado de expansión de macros.

Subrutina abierta

b) Una SUBRUTINA o subrutina cerrada por el contrario no repite el código en cada llamada, bifurca a un único código que una vez ejecutado devuelve control a la instrucción siguiente a la que realizó la bifurcación:

Subrutina cerrada

Cuatro problemas hay que resolver en el mecanismo de una subrutina (cerrada):

‰- Controlar la dirección de vuelta a la instrucción siguiente a la que realizó la llamada

‰- Organizar el paso de parámetros

‰- Ubicar las variables locales de la subrutina

‰- Preservar el contexto del programa

Analizaremos las diferentes alternativas de resolución de estos problemas resaltando las ventajas e inconvenientes de cada una.

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