O Convenție de Apel (Calling Convention / ABI) reprezintă contractul strict agreat între compilatoare și limbajul de asamblare privind modul în care se transmit argumentele către funcții, unde se returnează rezultatele și ce registre trebuie păstrate intacte.
| Platformă | Registri folosiți pentru primii 6 parametri | Unde se returnează | Cerință specială |
|---|---|---|---|
| System V AMD64 (Linux, macOS, BSD) |
RDI, RSI, RDX, RCX, R8, R9 |
RAX (și RDX pentru 128-bit) |
Aliniere RSP % 16 == 0 înainte de call. |
| Microsoft x64 (Windows) |
Doar 4 parametri: RCX, RDX, R8, R9 |
RAX |
Shadow Space obligatoriu de 32 octeți alocați pe stivă de apelant! |
Registre Callee-Saved (Prezervate de funcție): Dacă o funcție dorește să utilizeze registrele
RBX, RBP, R12, R13, R14 sau R15, ea are obligația contractuală să le salveze pe stivă la intrare (push) și să le restaureze înainte de ret (pop). Registrele temporare (RAX, RCX, RDX, RSI, RDI, R8-R11) pot fi suprascrise liber.
Întrebări & Exemple de Cod:
Convenții de Apel (Calling Conventions): System V AMD64 ABI vs Microsoft x64Ai o nelămurire despre utilizarea comenzii
Convenții de Apel (Calling Conventions): System V AMD64 ABI vs Microsoft x64sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.