3

明確にするために更新:

ラッパー関数は、ユーザーモードで呼び出される関数として定義され、システムコールの呼び出しを開始します(カーネルモードで)。たとえば、open、またはprintfです。

ラッパー関数が取得できる引数の数に制限があるかどうか疑問に思っていますか?

私の直感では、レジスタ数の関係で6になるはずですが、よくわかりません。システムコールは6つの引数に制限されていることを私は知っています。(より多くのレジスタが存在する32ビットと64ビットについて話しています)。

ありがとう

4

1 に答える 1

0

ラッパー関数は、(カーネル モードで) システム コールへの呼び出しを開始する、ユーザー モードで呼び出される関数として定義されます。たとえば、 open 、または printf.

あなた自身の定義によれば、受け取ることができる引数の数に制限はありませんprintfすぐに言うべきでした。(ただし、openそれ自体がシステムコールであり、引数の数に制限があることに注意してください)

しかし、などのシステム コールに関しては、Linux-x86の引数は 6 つに制限されています。その理由と方法については、こちらをお読みください。openwrite

これについて深く掘り下げた別のSO投稿があります

x86-64 での UNIX および Linux システム コールの呼び出し規約は何ですか?

于 2012-04-09T18:37:32.327 に答える