Saltar al contenido

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