Función prólogo y epílogo


En la programación en lenguaje ensamblador , el prólogo de la función son unas pocas líneas de código al comienzo de una función, que preparan la pila y los registros para su uso dentro de la función. De manera similar, el epílogo de la función aparece al final de la función y restaura la pila y los registros al estado en el que estaban antes de que se llamara a la función.

El prólogo y el epílogo no son parte del lenguaje ensamblador en sí; representan una convención utilizada por programadores de lenguaje ensamblador y compiladores de muchos lenguajes de nivel superior . Son bastante rígidos, teniendo la misma forma en cada función.

Un prólogo de función normalmente realiza las siguientes acciones si la arquitectura tiene un puntero base (también conocido como puntero de marco) y un puntero de pila:

Se pueden escribir varios prólogos posibles, lo que da como resultado una configuración de pila ligeramente diferente. Estas diferencias son aceptables, siempre que el programador o compilador use la pila de la manera correcta dentro de la función.

Se pueden obtener prólogos más complejos utilizando valores diferentes (distintos de 0) para el segundo operando de la enterinstrucción. Estos prólogos empujan varios punteros de base / marco para permitir funciones anidadas , como lo requieren lenguajes como Pascal . Sin embargo, las versiones modernas de estos lenguajes no usan estas instrucciones porque limitan la profundidad de anidación en algunos casos. [ cita requerida ]

El epílogo de la función invierte las acciones del prólogo de la función y devuelve el control a la función que llama. Normalmente realiza las siguientes acciones (este procedimiento puede diferir de una arquitectura a otra):