En programación, un sitio de llamada de una función o subrutina es la ubicación (línea de código) donde se llama a la función (o se puede llamar, a través del envío dinámico ). Un sitio de llamada es donde se pasan cero o más argumentos a la función y se reciben cero o más valores de retorno .
Ejemplo
// esta es una función '' definición '' function sqr ( x ) { return x * x ; }
function foo () { // estos son dos sitios de llamada de la función sqr en esta función a = sqr ( b ); c = sqr ( b ); }
Ejemplo de ensamblador
* ( normalmente ) llamada externa .... R13 normalmente apunta a un área de guardado para registros de propósito general de antemano * y R1 apunta a una lista de direcciones de parámetros ( si los hay ) LA R1 , = A ( B ) apunta a ( dirección de ) variable ' B ' L R15 , = A ( SQR ) Cargar puntero ( constante de dirección ) a la subrutina compilada / ensamblada por separado BALR R14 , R15 Ir a la subrutina , que regresa , generalmente con desplazamiento cero en R14 * llamada interna ( generalmente una sobrecarga mucho menor y posiblemente parámetros ' conocidos ' ) BAL R14 , SQR Ir a la etiqueta del programa y regresar
En algunas ocasiones, la devolución es un método eficaz para indicar el éxito o el fracaso. el retorno se puede lograr regresando en +0 o + 4, + 8, +12, etc. requiriendo [ aclaración necesaria ] una pequeña tabla de rama en el punto de retorno - para ir directamente a procesar el caso (como en la instrucción HLL Switch ).
BAL R14 , SQR Ir a la etiqueta del programa y regresar ( usando el desplazamiento en R14 como dirección de retorno ) B FAIL ( RET + 0 ) - ALGO INCORRECTO * ( RET + 4 ) - OK
Sin embargo, convencionalmente, un código de retorno se establece en R15
( 0
= OK, 4
= falla o similar ..) pero requiere una instrucción separada para probar R15
o usar directamente como un índice de bifurcación.