【发布时间】:2020-02-27 20:31:58
【问题描述】:
我如何强制 gcc/g++ 不使用寄存器而只使用 x86_64 中的堆栈 将参数传递给函数, 就像在 32 位版本中一样 (并且可能以这种方式获取函数结果)。 我知道它破坏了官方 ABI 以及调用方和被调用方 必须以这种方式编译才能正常工作。我不在乎是 push/pop 还是 mov/sub 方式 用来。我希望编译器应该有一个可以强制执行它的标志 但我没找到。
【问题讨论】:
-
作为一种解决方法,如果它是您自己的代码,您可以在超过 32 个字节的结构中传递参数,因为这些参数根据 sysv abi 在堆栈上传递。
标签: gcc assembly x86-64 calling-convention abi