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.
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:
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