Ho visto in diversi punti che le convenzioni di chiamata Microsoft per le piattaforme x64
sono state ridotte a una sola: Caller cleans stack (cdecl
) ei parametri sono passati in una combinazione di stack e registri (non sto entrando in i dettagli esatti qui). Suppongo che, se questa è la convenzione di chiamata del sistema operativo, probabilmente seguiranno anche tutti gli altri compilatori che utilizzano Windows (ad esempio mingw-w64).Chiamata convenzione su x64
Questa convenzione di chiamata è valida anche su altre piattaforme principali (x64
Linux, ecc.)? O Linux usa ancora più convenzioni di chiamata, o anche solo una, ma una diversa? Do GCC
o Clang
consentire più convenzioni di chiamata su x64
Linux?
Quei giorni felici stanno per finire. Microsoft sta aggiungendo la convenzione di chiamata __vectorcall. Fino a sei valori di '__m128' sono passati attraverso i registri SSE2. –