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
* (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 R15
ou à utiliser directement comme index de branche.
Voir également
Les références
Cet article relatif au langage de programmation est un bout . Vous pouvez aider Wikipedia en le développant . |