En ciencias de la computación, la convención de llamadas a funciones es un esquema de implementación de bajo nivel para determinar la manera en que las subrutinas reciben parámetros de su "llamador" y devuelven un resultado. Entre las diferencias que existen entre las diferentes implementaciones se encuentran el lugar donde los parámetros, valores de retorno, direcciones de retorno y "scope links" son colocados, así como la distribución de procesos (a la hora de llamar a una función), entre la subrutina "llamante" y la "llamada", y la posterior restauración del entorno tras la ejecución de la misma.
La convención de llamadas a funciones puede ser relacionada con la estrategia de evaluación de un lenguaje de programación particular, pero a menudo no es considerada como parte de la misma ya que, normalmente, la estrategia de evaluación es definida en un nivel de abstracción superior, y vista como parte del mismo lenguaje de programación, en vez de una implementación de bajo nivel de un compilador particular.
Variaciones Las convenciones de llamadas pueden diferir en:
El lugar en el que los parámetros, los valores de retorno y las direcciones de retorno son colocados (en registros, en la pila, una mezcla de ambos, o en otras estructuras de memoria). El orden en el que se pasan los argumentos a los parámetros formales (o las partes de un argumento complejo). La forma en la que un valor de retorno (posiblemente complejo) es devuelto desde la función "llamante" a la "llamada" (mediante la pila, en un registro, o dentro del heap). La forma en la que se distribuyen las tareas de preparación y limpieza, antes y después (respectivamente) de una llamada a función, entre el "llamador" y el "llamado". La forma en la que se distribuyen las variables locales también puede formar parte de la convención de llamadas.
En algunos casos, las diferencias también incluyen:
Las convenciones en las cuales los registros pueden ser directamente utilizados por el "llamador", sin ser preservados (considerado, de otra manera, como un detalle ABI) Los registros considerados como volátiles y, si lo son, cuales no necesitan ser restaurados por el "llamador" (considerado, a menudo, como un detalle ABI)
Categoría:Subrutinas