Widziałem w kilku miejscach, że konwencje wywoływania Microsoft dla platform x64
zostały zawężone do jednego: Caller czyści stos (cdecl
), a parametry są przekazywane w kombinacji stosu i rejestrów (nie wchodzę w dokładne szczegóły tutaj). Zakładam, że jeśli jest to konwencja wywołująca system operacyjny, prawdopodobnie wszystkie pozostałe kompilatory kierujące do systemu Windows (np. Mingw-w64) również ją śledzą.Konwencja wywoływania na x64
Czy ta konwencja wywołująca jest prawdziwa także na innych głównych platformach (x64
Linux itp.)? Czy Linux wciąż używa wielu konwencji wywołań, czy nawet tylko jednego, ale innego? Czy GCC
lub Clang
pozwala na wiele konwencji połączeń na Linuksie x64
?
Te szczęśliwe dni wkrótce się zakończą. Microsoft dodaje konwencję wywoływania __vectorcall. Do sześciu wartości "__m128" przekazywanych przez rejestry SSE2. –