2012-10-26 23 views
9

私はGCCを使って自分のカーネルで作業していますが、asmコードからC関数を呼び出すときには自分でadd esp,xxを実行しなければなりません。いくつかの検索の後、私はstdcallがMicrosoftの発明であり、GCCでそれを使用することができないことを発見しました。この作業を行う便利な方法はありますか?GCCのstdcallに相当するものはありますか?

+0

は、私は、Linuxへの参照を削除しました。 –

答えて

5

Linuxでstdcallに相当するものはありますか?

Linux環境での私のカーネル

待って、これは自分自身のカーネル、またはLinuxカーネルのですか?自分のカーネルであれば、Linuxではないからです。

  1. Linuxで作業している場合は、通常の呼び出し規約に従い、一致するようにアセンブリを書きたいと思うでしょう。

  2. 自分のカーネルで作業している場合は、何でもできます。 GCCとクランIX86プロセッサの両方をサポートstdcall呼び出し規約、例えば、

    #define stdcall __attribute__((stdcall)) 
    

    を参照してください:あなたはそれはあなた自身のカーネルだと述べているのでFunction Attributes (GCC manual)

+0

ありがとう!私は自分のカーネルをgccでコンパイルしています。誰かがlinux gccにstdcallがないと言っています。しかし、それはあなたのコードでうまくいきます! – babel92

関連する問題