/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
是從 0
到 9
1的必要擴充值。 根據預設,如果未指定任何架構,編譯程式會 /arch:armv8.0
使用 行為。
/arch:armv9.x
2
指定Armv9-A架構,其中 x
是從 0
到 4
的必要擴充值。 根據預設,如果未指定任何架構,編譯程式會 /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
編譯程式選項
開啟專案的 [ 屬性頁 ] 對話框。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。
在 [ 其他選項 ] 方塊中,新增
/arch:armv8.0
或取代armv8.0
為不同的ARM64擴充功能。 選取 [確定] 儲存您的變更。
若要以程式方式設定這個編譯器選項
- 請參閱 AdditionalOptions。
1 Armv8-A 架構延伸模組 armv8.9
可從Visual Studio 2022 17.10版開始提供。
2 Armv9-A 架構延伸模組可從Visual Studio 2022 17.10版開始提供。
3 從 Visual Studio 2022 17.10 版開始,即可啟用架構功能。