En informàtica, una convenció de crida és un esquema de nivell d'implementació (nivell baix) sobre com les subrutines o funcions reben paràmetres de la persona que truca i com retornen un resultat. Quan algun codi crida a una funció, s'han pres opcions de disseny per on i com es passen els paràmetres a aquesta funció, i on i com es retornen els resultats d'aquesta funció, amb aquestes transferències normalment fetes a través de determinats registres o dins d'un marc de pila a la crida. pila. Hi ha opcions de disseny sobre com es divideixen les tasques de preparació per a una crida de funció i restauració de l'entorn un cop finalitzada la funció entre qui truca i el destinatari. Algunes convencions de crida especifica la manera com s'ha de cridar cada funció. S'ha d'utilitzar la convenció de crida correcta per a cada crida de funció, per permetre l'execució correcta i fiable de tot el programa utilitzant aquestes funcions.

Introducció Les convencions de crida solen considerar-se part de la interfície binària de l'aplicació (ABI).

Conceptes relacionats Els noms o significats dels paràmetres i els valors de retorn es defineixen a la interfície de programació d'aplicacions (API, a diferència de l'ABI), que és un concepte separat encara que relacionat amb l'ABI i la convenció de crida. Els noms dels membres dins d'estructures i objectes passats també es considerarien part de l'API, i no de l'ABI. De vegades, les API inclouen paraules clau per especificar la convenció de crida per a funcions.

Diferents convencions de crida Les convencions de crida poden diferir en:

On es col·loquen els paràmetres. Les opcions inclouen registres, a la pila de crides, una barreja de tots dos o en altres estructures de memòria. L'ordre en què es passen els paràmetres. Les opcions inclouen l'ordre d'esquerra a dreta, de dreta a esquerra o alguna cosa més complexa. Com es gestionen les funcions que prenen un nombre variable d'arguments (funcions variàdiques). Les opcions inclouen només passar en ordre (suposant que el primer paràmetre està en una posició òbvia) o les parts variables d'una matriu. Com s'entreguen els valors de retorn des del destinatari de la crida a la persona que truca. Les opcions inclouen a la pila, en un registre o referència a alguna cosa assignada a la pila. Quant de temps o complexos es gestionen, potser dividint-se en diversos registres, dins del marc de pila o amb referència a la memòria. Es garanteix quins registres tindran el mateix valor quan torna el destinatari que ho feien quan es va cridar al destinatari. Es diu que aquests registres es guarden o es conserven, de manera que no són volàtils . Com es divideix la tasca de configurar i netejar després d'una crida de funció entre la persona que truca i la persona que truca. En particular, com es restaura el marc de pila perquè la persona que truca pugui continuar després que el destinatari hagi acabat. Si i com es transmeten les metadades que descriuen els arguments. On s'emmagatzema el valor anterior del punter de marc, que s'utilitza per restaurar el marc de pila quan acaba la subrutina. Les opcions inclouen dins de la pila de crides o en un registre específic On es col·loquen qualsevol enllaç d'àmbit estàtic per a l'accés a dades no locals de la rutina (normalment en una o més posicions del marc de pila, però de vegades en un registre general o, per a algunes arquitectures, en registres especials). Per als llenguatges orientats a objectes, com es fa referència a l'objecte de la funció.

Referències

Categoria:Programari