12

私は GCC を使用して独自のカーネルに取り組んでおり、asm コードから C 関数を呼び出すときは、add esp,xx自分で行う必要があります。いくつかの検索の後、これstdcallは Microsoft の発明であり、GCC では使用できないことがわかりました。この作業を行う便利な方法はありますか?

4

1 に答える 1

10

Linux に stdcall と同等のものはありますか?

Linux 環境での私のカーネル

待ってください、これはあなた自身のカーネルですか、それとも Linux カーネルですか? それが独自のカーネルである場合、それはもはや Linux ではないからです。

  1. Linux で作業している場合は、通常の呼び出し規則に固執し、それに合わせてアセンブリを作成する必要があります。

  2. 独自のカーネルで作業している場合、やりたいことは何でもできます。GCC と Clang は両方ともstdcall、ix86 プロセッサでの呼び出し規約をサポートしています。

     #define stdcall __attribute__((stdcall))
    

    参照:関数属性 (GCC マニュアル)

于 2012-10-27T00:09:21.040 に答える