Appeler le site - Call site

En programmation, un site d'appel d'une fonction ou d'un sous-programme est l'emplacement (ligne de code) où la fonction est appelée (ou peut être appelée, par répartition dynamique ). Un site d'appel est l'endroit où zéro ou plusieurs arguments sont passés à la fonction et zéro ou plusieurs valeurs de retour sont reçues.

Exemple

 // this is a function ''definition''
 function sqr(x)
 {
   return x * x;
 }
 function foo() {
   // these are two call sites of function sqr in this function
   a = sqr(b);
   c = sqr(b);
 }

Exemple d'assembleur

IBM / 360 ou Z / Architecture

 * (usually) external call.... R13 usually points to a save area for general purpose registers beforehand
 *                         and R1 points to a list of addresses of parameters (if any)
         LA    R1,=A(B)         point to (address of) variable 'B'
         L     R15,=A(SQR)      Load pointer (address constant) to separately compiled/assembled subroutine
         BALR  R14,R15          Go to subroutine, which returns - usually at zero displacement on R14
 * internal call            (usually much smaller overhead and possibly 'known' parameters)
         BAL   R14,SQR          Go to program label and return

Dans certaines occasions, le retour est une méthode efficace pour indiquer le succès ou l'échec. le retour peut être accompli en retournant à +0 ou + 4, + 8, +12, etc. nécessitant une petite table de branchement au point de retour - pour aller directement traiter le cas (comme dans l' instruction HLL Switch ).

         BAL   R14,SQR          Go to program label and return (using offset on R14 as return address)
         B     FAIL             (RET+0) - SOMETHING WRONG
 *                              (RET+4) - O.K.

Cependant, de manière conventionnelle, un code de retour est défini dans R15( 0= OK, 4= échec ou similaire ..) mais nécessitant une instruction distincte à tester R15ou à utiliser directement comme index de branche.

Voir également

Les références