我正在使用GCC处理我自己的内核,当从asm代码调用C函数时,我必须自己做add esp,xx
。经过一番搜索后,我发现stdcall
是微软的发明,不能在GCC中使用它。有没有方便的方法来做这项工作?
答案 0 :(得分:5)
linux中是否存在stdcall等价?
我的内核在linux环境中
等等,这是你自己的内核还是Linux内核?因为如果它是你自己的内核,那就不再是Linux了。
如果您正在使用Linux,那么您需要坚持使用常规调用约定并编写程序集以匹配。
如果您正在使用自己的内核,则可以执行任何操作。 GCC和Clang都支持ix86处理器上的stdcall
调用约定,例如,
#define stdcall __attribute__((stdcall))