3

x86のカーネルモジュールでの呼び出しに使用されるABIの公式定義を探しています。私は最近コンパイルされたモジュールを調べましたが、次のことに驚きました。

  • レジスタを使用して、最初の3つの引数(、、eaxおよびedx) を渡しecxます。

  • fastcallGCCドキュメントで説明されているものとは異なります。ドキュメントにはfastcallecxとedx(Microsoftスタイル)を 使用していると書かれています。

私が見つけた唯一のやや関連性のある情報はこれでしたが、それはまったく何も言っていません。

それで:

1)カーネルモジュールで使用されるABIに関する公式ドキュメントはありますか(syscall ABIではなく、関数リストだけでなく、私が見つけたもの)。

2)この奇妙なfastcallはコンパイラによってどのように生成されますか?見逃したスイッチはありますか?

4

1 に答える 1

7

-mregparm=3がこれを担当しています。

于 2012-08-07T13:57:44.503 に答える