2013-08-08 17 views
5

x64プラットフォームのマイクロソフトの呼び出し規則がいくつかの場所で1つに絞り込まれていることがわかりました。呼び出し元がスタックをクリーニングして(cdecl)、パラメータがスタックとレジスタの組み合わせで渡されます正確な詳細はこちら)。私はこれがOSの呼び出し規約であれば、おそらくWindowsをターゲットとする他のコンパイラ(例えばmingw-w64)もそれに従うと仮定します。x64の呼び出し規則

他の主要なプラットフォーム(x64 Linuxなど)でもこの呼び出し規約が当てはまりますか?あるいは、Linuxは複数の呼び出し規約を使用していますか? GCCまたはClangは、x64 Linuxで複数の呼び出し規約を許しますか?

+6

)。マイクロソフトでは、__vectorcall呼び出し規約を追加しています。 SSE2レジスタには6つまでの '__m128'値が渡されます。 –

答えて

8

私はちょうど答えを見つけましたherehere。基本的には、Windowsはそれを一方向に行いますが、他の人は別の方法で行いますが、プラットフォームごとに複数の方法があります(x86

+1

どちらの側も指を指差していませんが、x86の呼び出し規約が原因で発生したすべての苦痛の後、標準に同意することはx64の優先事項でした – Basic

関連する問題