Linux中有什么调用约定?

时间:2012-01-06 22:32:14

标签: linux gcc

我在使用此程序集调用的程序中有一个函数:

push xxx
push xxx
call xxx
add esp, xxx

据我所知,这个函数有 cdecl 调用约定。 在GCC中,我使用__attribute__((cdecl))使另一个函数与上面的函数相同。

但是当我调试它时,显示了这个程序集:

push xxx
push xxx
call xxx

没有add esp, xxx

我应该使用什么调用约定来生成相同的程序集?

1 个答案:

答案 0 :(得分:4)

我怀疑这与调用约定有什么关系,并且更可能与编译器优化有关,比如“defer-pop”(编译器会等到弹出堆栈直到以后)