【发布时间】:2012-10-17 05:55:40
【问题描述】:
我正在使用 GCC 开发自己的内核,当从 asm 代码调用 C 函数时,我必须自己执行add esp,xx。经过一番搜索,我发现stdcall是微软的发明,不能在GCC中使用。有什么方便的方法来完成这项工作吗?
【问题讨论】:
-
既然你提到它是你自己的内核,我已经删除了对 Linux 的引用。
标签: gcc assembly kernel stdcall
我正在使用 GCC 开发自己的内核,当从 asm 代码调用 C 函数时,我必须自己执行add esp,xx。经过一番搜索,我发现stdcall是微软的发明,不能在GCC中使用。有什么方便的方法来完成这项工作吗?
【问题讨论】:
标签: gcc assembly kernel stdcall
在linux中有stdcall的等价物吗?
我在 linux 环境中的内核
等等,这是你自己的内核,还是 Linux 内核?因为如果它是你自己的内核,它就不再是 Linux。
如果您在 Linux 上工作,则需要坚持常规调用约定并编写您的程序集以匹配。
如果您正在开发自己的内核,您可以做任何您想做的事情。 GCC 和 Clang 都支持 ix86 处理器上的 stdcall 调用约定,例如,
#define stdcall __attribute__((stdcall))
【讨论】: