x86のカーネルモジュールでの呼び出しに使用されるABIの公式定義を探しています。私は最近コンパイルされたモジュールを調べましたが、次のことに驚きました。
レジスタを使用して、最初の3つの引数(、、
eax
およびedx
) を渡しecx
ます。fastcall
GCCドキュメントで説明されているものとは異なります。ドキュメントには、fastcall
ecxとedx(Microsoftスタイル)を 使用していると書かれています。
私が見つけた唯一のやや関連性のある情報はこれでしたが、それはまったく何も言っていません。
それで:
1)カーネルモジュールで使用されるABIに関する公式ドキュメントはありますか(syscall ABIではなく、関数リストだけでなく、私が見つけたもの)。
2)この奇妙なfastcallはコンパイラによってどのように生成されますか?見逃したスイッチはありますか?