/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 到 91。 默认情况下,如果未指定任何体系结构,编译器将使用 /arch:armv8.0 该行为。

/arch:armv9.x2
指定 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 编译器选项

  1. 打开项目的“属性页”对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 选择“配置属性”>“C/C++”>“命令行”属性页

  3. “其他选项 ”框中,添加 /arch:armv8.0 或替换 armv8.0 其他 ARM64 扩展。 选择“确定”以保存更改 。

以编程方式设置此编译器选项

从 Visual Studio 2022 版本 17.10 开始,可以使用 1 个 Armv8-A 体系结构扩展 armv8.9
从 Visual Studio 2022 版本 17.10 开始,可以使用 2 Armv9-A 体系结构扩展。
从 Visual Studio 2022 版本 17.10 开始,可以使用 3 体系结构功能启用。

另请参阅

/arch(最小 CPU 体系结构)
预定义宏
MSVC 编译器选项
MSVC 编译器命令行语法