【问题标题】:aarch64: NEON registers when compiling with gccaarch64:使用 gcc 编译时 NEON 寄存器
【发布时间】:2017-02-24 01:25:47
【问题描述】:

我正在尝试使用 gcc 为 aarch64 编译我的代码。但是,输出二进制确实使用了 NEON 寄存器 (q0 ~ q7)。如何指示编译器不要使用它们!?

【问题讨论】:

  • 如果您正在生成 aarch64,则没有 Q 寄存器。 armv8 的 NEON 向量寄存器命名为 v0-v31。
  • @BitBank,这并不完全准确,根据上下文,它们也被命名为 b*,h*,s*,d* 或 q*,例如,ldr q0, [x0] 或 @987654322 @
  • @JamesGreenhalgh 是对的。

标签: gcc arm neon arm64


【解决方案1】:

您可以使用-mgeneral-regs-only,它指示编译器仅使用通用寄存器(在GCC Documentation 中了解更多信息)。

但是,请注意,AArch64 的唯一 ABI 确实假设将支持浮点和高级 SIMD。如果您在代码中使用浮点,将被标记为错误。如果您在 linux 环境中,您将链接到假定支持高级 SIMD 和浮点的二进制文件。

【讨论】:

  • 谢谢@james,我想在内核中使用它。
猜你喜欢
  • 2020-04-11
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-09
相关资源
最近更新 更多