分享方式:


/arch (ARM64)

指定 ARM64 上產生程式代碼的 Arm A-Profile 架構延伸模組。 如需其他目標架構的詳細資訊/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 是從 091的必要擴充值。 根據預設,如果未指定任何架構,編譯程式會 /arch:armv8.0 使用 行為。

/arch:armv9.x2
指定Armv9-A架構,其中 x 是從 04的必要擴充值。 根據預設,如果未指定任何架構,編譯程式會 /arch:armv8.0 使用 行為。

備註

您可以從Armv8.0-A到Armv8.9-A 指定ARM64延伸模組,以及透過Armv9.4-A的Armv9.0-A。 選擇性地將功能自變數附加至選項3,以啟用一或多個架構功能。 例如,若要以 Armv8.0-A 為目標並啟用功能 FEAT_LSE,請附加 feature 自變數 lse ,讓選項變成 /arch:armv8.0+lse。 如需可用功能及其需求的詳細資訊,請參閱 (ARM64)3/feature

注意

根據您的 Visual Studio 版本,編譯程式可能尚未從您指定的擴充層級所需的所有功能集產生指示。 例如, /arch:armv8.1 允許 *Interlocked* 內部函數使用Armv8.1-A擴充功能 FEAT_LSE引進的適當不可部分完成指令,但編譯程序支援需要Visual Studio 2022 17.2版或更新版本。

編譯 _M_ARM64 ARM64 目標時,預設會定義巨集。 如需詳細資訊,請參閱 預先定義的宏\

__ARM_ARCH巨集已針對 /arch:ARMv8.0 和更新版本定義。 它指出編譯程序的目標 ARM 架構擴充層級。 如需詳細資訊,請參閱 預先定義的宏

#if __ARM_ARCH >= 802
    // code that requires ARMv8.2...
#endif

/arch 只會影響原生函式的程式代碼產生。 當您使用 /clr 來編譯時, /arch 對 Managed 函式的程式代碼產生沒有任何影響。

在 Visual Studio 中設定 /arch 編譯程式選項

  1. 開啟專案的 [ 屬性頁 ] 對話框。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。

  3. 在 [ 其他選項 ] 方塊中,新增 /arch:armv8.0 或取代 armv8.0 為不同的ARM64擴充功能。 選取 [確定] 儲存您的變更。

若要以程式方式設定這個編譯器選項

1 Armv8-A 架構延伸模組 armv8.9 可從Visual Studio 2022 17.10版開始提供。
2 Armv9-A 架構延伸模組可從Visual Studio 2022 17.10版開始提供。
3 從 Visual Studio 2022 17.10 版開始,即可啟用架構功能。

另請參閱

/arch (最小 CPU 架構)
預先定義巨集
MSVC 編譯器選項
MSVC 編譯器命令列語法