stringtranslate.com

Sitio de llamada

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 puede llamarse, a través de un 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 . [1] [2]

Ejemplo

 // esta es una función ''definición'' function sqr ( x ) { return x * x ; }        
 función 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

IBM/360 o Z/Arquitectura

 * ( 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 hay alguno ) LA R1 , = A ( B ) apunta a ( dirección de ) variable ' B ' L R15 , = A ( SQR ) Carga el puntero ( constante de dirección ) a la subrutina compilada / ensamblada por separado BALR R14 , R15 Va a la subrutina , que retorna - normalmente en desplazamiento cero en R14 * llamada interna ( normalmente una sobrecarga mucho menor y posiblemente parámetros ' conocidos ' ) BAL R14 , SQR Va a la etiqueta del programa y retorna                                                                               

En algunas ocasiones, el retorno es un método eficiente para indicar éxito o fracaso. El retorno se puede lograr retornando a +0 o +4, +8, +12, etc., requiriendo código, por ejemplo una pequeña rama table , en el punto de retorno, para ir directamente a procesar el caso (como en la declaració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 OK ( RET + 0 ) - OK * ( RET + 4 ) - Error                       

Sin embargo, convencionalmente se establece un código de retornoR15 ( 0=OK, 4= error o similar), pero se requiere una instrucción separada para probar R15o usar directamente como índice de rama.

Véase también

Referencias

  1. ^ "General | Subrutina". Codecademy . Consultado el 12 de septiembre de 2024 .
  2. ^ "Capítulo 7 - Subrutinas". www.neurobs.com . Consultado el 12 de septiembre de 2024 .