/arch
(ARM64)
指定 ARM64 上代码生成的 Arm A 配置文件体系结构扩展。 有关其他目标体系结构的详细信息/arch
,请参阅/arch
(x86)、/arch
(x64)和 /arch
(ARM)。
语法
/arch:<armv8.0|armv8.1|armv8.2|armv8.3|armv8.4|armv8.5|armv8.6|armv8.7|armv8.8|armv8.9>
[+feature]
/arch:<armv9.0|armv9.1|armv9.2|armv9.3|armv9.4>
[+feature]
参数
/arch:armv8.x
指定 Armv8-A 体系结构,其中 x
所需的扩展值从 0
1 到 9
1。 默认情况下,如果未指定任何体系结构,编译器将使用 /arch:armv8.0
该行为。
/arch:armv9.x
2
指定 Armv9-A 体系结构,其中 x
需要从其 0
扩展值到 4
. 默认情况下,如果未指定任何体系结构,编译器将使用 /arch:armv8.0
该行为。
注解
可以通过 Armv8.0-A 到 Armv8.9-A 和 Armv9.0-A 通过 Armv9.4-A 指定 ARM64 扩展。 (可选)通过将功能参数追加到选项3 来启用一个或多个体系结构功能。 例如,若要以 Armv8.0-A 为目标并启用功能 FEAT_LSE
,请追加功能参数 lse
,使选项变为 /arch:armv8.0+lse
。 有关可用功能及其要求的详细信息,请参阅 (ARM64)3。/feature
注意
根据 Visual Studio 的版本,编译器可能尚未从你指定的扩展级别所需的所有功能集生成指令。 例如, /arch:armv8.1
允许 *Interlocked*
内部函数使用 Armv8.1-A 扩展功能 FEAT_LSE
引入的相应原子指令,但编译器支持需要 Visual Studio 2022 版本 17.2 或更高版本。
在编译 ARM64 目标时,默认定义 _M_ARM64
宏。 有关详细信息,请参阅 预定义宏\
__ARM_ARCH
为更高版本定义/arch:ARMv8.0
巨集。 它指示编译器面向的 ARM 体系结构扩展级别。 有关详细信息,请参阅预定义宏。
#if __ARM_ARCH >= 802
// code that requires ARMv8.2...
#endif
/arch
仅影响本机函数的代码生成。 当使用 /clr
进行编译时,/arch
对托管函数的代码生成没有影响。
在 Visual Studio 中设置 /arch
编译器选项
打开项目的“属性页”对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“配置属性”>“C/C++”>“命令行”属性页。
在 “其他选项 ”框中,添加
/arch:armv8.0
或替换armv8.0
其他 ARM64 扩展。 选择“确定”以保存更改 。
以编程方式设置此编译器选项
- 请参阅 AdditionalOptions。
从 Visual Studio 2022 版本 17.10 开始,可以使用 1 个 Armv8-A 体系结构扩展 armv8.9
。
从 Visual Studio 2022 版本 17.10 开始,可以使用 2 Armv9-A 体系结构扩展。
从 Visual Studio 2022 版本 17.10 开始,可以使用 3 体系结构功能启用。