我在用这个程序集调用的程序中有一个函数:
push xxx
push xxx
call xxx
add esp, xxx
据我所知,此函数具有 cdecl 调用约定。
在 GCC 中,我使用 __attribute__((cdecl))
使另一个函数的行为与上述函数相同。
但是当我调试它时,显示了这个程序集:
push xxx
push xxx
call xxx
没有add esp, xxx
!
我应该使用什么调用约定来生成相同的程序集?
最佳答案
我怀疑这与调用约定有任何关系,更可能与编译器优化有关,如“defer-pop”(编译器将等待弹出堆栈,直到稍后)
关于linux - Linux 中这是什么调用约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8765344/