12

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

4

1 回答 1

10

linux中的stdcall有什么等价的吗?

我在linux环境中的内核

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

  1. 如果你在 Linux 上工作,你会想要坚持常规的调用约定并编写你的程序集来匹配。

  2. 如果你在自己的内核上工作,你可以做任何你想做的事情。GCC 和 Clang 都支持stdcallix86 处理器上的调用约定,例如,

     #define stdcall __attribute__((stdcall))
    

    请参阅:函数属性(GCC 手册)

于 2012-10-27T00:09:21.040 回答