2012-10-26 29 views
9

我正在使用GCC處理自己的內核,當從asm代碼調用C函數時,我必須自己做add esp,xx。經過一番搜索後,我發現stdcall是微軟的發明,不能在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

相關問題