2013-08-08 27 views
5

Microsoft'un x64 platformları için çağrıları tek bir noktaya daraltdığı birçok yerde gördüm: Arayıcı yığını temizler (cdecl) ve parametreler yığının ve kayıtların birleşimiyle iletilir (tam detaylar burada). Eğer bu işletim sistemi çağırma kuralıysa, muhtemelen Windows (örneğin, mingw-w64) hedefleyen tüm diğer derleyiciler de bunu izler.x64 üzerinde çağrı sözleşmesi

Bu çağrı kuralı diğer büyük platformlarda da geçerlidir (x64 Linux, vb.)? Ya da Linux hala birden fazla arama kuralı, hatta sadece bir tane değil, başka bir tane kullanıyor mu? GCC veya Clang, x64 Linux'ta birden çok çağrı sistemi için izin veriyor mu?

+6

Bu mutlu günler bitmek üzeredir. Microsoft, __vectorcall çağrı kuralı ekliyor. SSE2 kayıtlarından en çok altı '__m128'lik değer geçti. –

cevap

8

Yalnızca here ve here numaralı yanıtı buldum. Temel olarak, Windows bunu bir şekilde yapar, herkes başka bir şekilde yapar, ancak her platform tek başına (x86 ile platform başına birden çok yolun aksine)

+1

Her iki taraftaki bir parmağı işaret etmiyorsunuz, ancak tüm x86 çağırma kurallarının neden olduğu acıdan sonra, bir standart üzerinde anlaşmanın x64 ile bir öncelik olacağını düşünürsünüz. – Basic