2017-02-24 31 views
0

我想使用gcc编译aarch64的代码。但是,输出二进制使用NEON寄存器(q0〜q7)。我如何指示编译器不使用它们?aarch64:使用gcc编译NEON时注册

+1

如果你正在生成aarch64,那么没有Q寄存器。 ARMv8的NEON向量寄存器命名为v0-v31。 – BitBank

+1

@BBBank,这并不完全准确,它们也根据上下文命名为b *,h *,s *,d *或q *,例如在'ldr q0,[x0]'或sqdmlsl s0中, h1,v2.h [0]' –

+0

@JamesGreenhalgh是对的。 – amrzar

回答

1

您可以使用-mgeneral-regs-only指示编译器仅使用通用寄存器(详见GCC Documentation)。

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

+0

谢谢@james,我想在内核中使用它。 – amrzar