【问题标题】:What calling convention is this in Linux?在 Linux 中这是什么调用约定?
【发布时间】:2012-01-06 22:32:13
【问题描述】:

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

push xxx
push xxx
call xxx
add esp, xxx

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

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

push xxx
push xxx
call xxx

没有add esp, xxx

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

【问题讨论】:

  • 我不知道这里的问题是什么,也不知道这对任何人有什么用处。

标签: linux gcc


【解决方案1】:

我怀疑这与调用约定有什么关系,更可能与“defer-pop”之类的编译器优化有关(编译器将等待稍后弹出堆栈)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多