我得到了所有的“架构”使用这:
llc --version
它列出了架构。
然后,对于每个架构,您可以获得 CPU 和“功能”(不确定“功能”是什么),如下所示:
llc -march=arm -mattr=help # for arm architecture
但https://clang.llvm.org/docs/CrossCompilation.html谈到供应商、FPU 和其他内容时,它说道:
目标三倍
基本选项是定义目标架构。为此,请使用 -target 。如果不指定目标,则 CPU 名称将不匹配(因为 Clang 假定主机三元组),并且编译将继续进行,为主机平台创建代码,该代码将在稍后汇编或链接时中断。
该三元组的一般格式为
<arch><sub>-<vendor>-<sys>-<env>
,其中:
- arch = x86_64、i386、arm、thumb、mips 等。
- sub = 例如在 ARM 上:v5、v6m、v7a、v7m 等。
- 供应商 = pc、apple、nvidia、ibm 等。
- sys = none、linux、win32、darwin、cuda 等。
- env = eabi、gnu、android、macho、elf 等。
它还谈到了这一点:
CPU、FPU、ABI
指定目标后,就该选择要编译到的硬件了。对于每个架构,都会选择一组默认的 CPU/FPU/ABI,因此您几乎总是需要通过标志来更改它。
典型的标志包括:
-mcpu=<cpu-name>
,例如 x86-64、swift、cortex-a15-mfpu=<fpu-name>
,如 SSE3、NEON,控制可用的 FP 单元-mfloat-abi=<fabi>
,如软、硬,控制使用哪些寄存器进行浮点运算
那么这 4 个<sub>-<vendor>-<sys>-<env>
FPU 和 2 个 FPU 以及 ABI 是什么?我如何通过某些 CLI 调用列出所有这些?它们通常是什么意思?