Protocolos de subrutinas

Cuando se accede a una subrutina no se altera ninguna ninguno de los registros existentes así como cuando se le devuelve el control al programa que la invocó . Por esto es importante ser conscientes de el programa tiene que respetar ciertos valores si no queremos tener resultados inesperados.

  1. Cuando se llama a la subrutina:

    Es importante no guardar información en los registros de tipo temporal t ni en los registros de argumento a . No se garantiza que estos registros mantenga su valor, y de hecho es una mala práctica utilizarlos en este contexto.

  2. En la subrutina

    Los únicos valores que se pueden asumir son los enviados por los registros de tipo a argumentos.

    Se recomienda en la medida de lo posible solamente usar los registros temporales t estra práctica hace que los programas sean más rápidos más simples y más legibles.

    Se pueden usar todos los registros pero almacenándolos previamente en memoria y devolviendo sus valores despues de haber realizado las operaciones.

    Cuando una función llama a otra función

    En este caso es "obligatorio" hacer alamacenamiento de memoria.
    Si los registros s están reservados para el programa principal y los temporales no se deben tocar, alamacenar en memoria se convierte en la única opción

    La llamada a la función alacena en ra , x1 la dirección de retorno, si hago una nueva llamada a otra función sobrescribiré sobre este registro y no podré volver al retorno del programa principal, la solución almacenar este valor en memoria, donde a priori tengo almacenamiento de sobra.