GCC中的stdcall是否有任何等价物?

时间:2012-10-26 23:54:36

标签: gcc assembly kernel stdcall

我正在使用GCC处理我自己的内核,当从asm代码调用C函数时,我必须自己做add esp,xx。经过一番搜索后,我发现stdcall是微软的发明,不能在GCC中使用它。有没有方便的方法来做这项工作?

1 个答案:

答案 0 :(得分:5)

  

linux中是否存在stdcall等价?

     

我的内核在linux环境中

等等,这是你自己的内核还是Linux内核?因为如果它是你自己的内核,那就不再是Linux了。

  1. 如果您正在使用Linux,那么您需要坚持使用常规调用约定并编写程序集以匹配。

  2. 如果您正在使用自己的内核,则可以执行任何操作。 GCC和Clang都支持ix86处理器上的stdcall调用约定,例如,

    #define stdcall __attribute__((stdcall))
    

    请参阅:Function Attributes (GCC manual)