是否有编译选项可以使用整数代码中的浮点指令停止 gcc?



当我收到有关浮点指令的意外异常时,我的纯整数裸机C项目刚刚停止。

查看 gcc 生成的代码,罪魁祸首是一个fmov d0, x0,用于将值临时存储在浮点寄存器中,而不是堆栈上。

我不希望它那样做!

我可以使用noinline属性标记一两个函数,但这并不能保证问题不会在其他地方再次发生。

此选项可以解决问题:

-mgeneral-regs-only

https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AArch64-Options.html

生成仅使用通用寄存器的代码。这将阻止编译器使用浮点和高级 SIMD 寄存器,但不会对汇编器施加任何限制。

您需要通知编译器您的目标没有浮点硬件。确切的标志取决于您的目标(对于 ARM,它是-msoft-float(。

相关内容

  • 没有找到相关文章

最新更新