我在使用此程序集调用的程序中有一个函数:
push xxx
push xxx
call xxx
add esp, xxx
据我所知,这个函数有 cdecl 调用约定。
在GCC中,我使用__attribute__((cdecl))
使另一个函数与上面的函数相同。
但是当我调试它时,显示了这个程序集:
push xxx
push xxx
call xxx
没有add esp, xxx
!
我应该使用什么调用约定来生成相同的程序集?
答案 0 :(得分:4)
我怀疑这与调用约定有什么关系,并且更可能与编译器优化有关,比如“defer-pop”(编译器会等到弹出堆栈直到以后)