【问题标题】:Is there any equivalent for stdcall in GCC?GCC中的stdcall有什么等价物吗?
【发布时间】:2012-10-17 05:55:40
【问题描述】:

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

【问题讨论】:

  • 既然你提到它是你自己的内核,我已经删除了对 Linux 的引用。

标签: gcc assembly kernel stdcall


【解决方案1】:

在linux中有stdcall的等价物吗?

我在 linux 环境中的内核

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

  1. 如果您在 Linux 上工作,则需要坚持常规调用约定并编写您的程序集以匹配。

  2. 如果您正在开发自己的内核,您可以做任何您想做的事情。 GCC 和 Clang 都支持 ix86 处理器上的 stdcall 调用约定,例如,

     #define stdcall __attribute__((stdcall))
    

    见:Function Attributes (GCC manual)

【讨论】:

  • 非常感谢!我正在用 gcc 编译我自己的内核,有人说 linux gcc 中没有 stdcall。但它适用于您的代码!
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 2011-01-08
  • 2022-10-04
  • 1970-01-01
相关资源
最近更新 更多