禁止通过寄存器(gcc,clang)将参数传递给函数

时间:2018-05-26 15:17:15

标签: gcc clang++

对于大学我们需要为变量参数列表实现我们自己的va_start和va_arg(不使用库)。

这不是一个真正的问题,但是gcc和clang让我们很难过。

他们正在优化代码,以便参数通过寄存器而不是堆栈传递,这使我们的任务无法完成。

我已经尝试过使用优化-O0,但即使这样,他们似乎也会将它们传递给寄存器。

有没有办法禁用该功能?

最好的祝福 利奥

修改 我们只使用64位计算机

EDIT2: 我找到了这个网站: https://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_17.html 它描述了定义参数是否在堆栈上传递的宏。 我能以某种方式使用这些marcos告诉gcc传递堆栈中的所有参数吗?

我和他们一起玩,但遗憾的是没有存档任何东西......

0 个答案:

没有答案