/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
から 9
1 に必要な拡張値です。 既定では、アーキテクチャが指定されていない場合、コンパイラは /arch:armv8.0
動作を使用します。
/arch:armv9.x
2
armv9-A アーキテクチャを指定します。ここで、 x
は、 0
から 4
に必要な拡張値です。 既定では、アーキテクチャが指定されていない場合、コンパイラは /arch:armv8.0
動作を使用します。
解説
ARM64 拡張機能は、Armv8.0-A から Armv8.9-A まで、Armv9.0-A から Armv9.4-A まで指定できます。 必要に応じて、オプション3に機能引数を追加して、1 つ以上のアーキテクチャ機能を有効にします。 たとえば、Armv8.0-A をターゲットにして機能FEAT_LSE
を有効にするには、オプションが/arch:armv8.0+lse
になるように機能引数lse
追加します。 使用可能な機能とその要件の詳細については、「 /feature
(ARM64)3を参照してください。
Note
Visual Studio のバージョンによっては、指定した拡張機能レベルで必要なすべての機能セットから命令がまだコンパイラによって生成されない場合があります。 たとえば、 /arch:armv8.1
を使用すると、 *Interlocked*
組み込み関数は Armv8.1-A 拡張機能の FEAT_LSE
で導入された適切なアトミック命令を使用できますが、コンパイラのサポートには Visual Studio 2022 バージョン 17.2 以降が必要です。
_M_ARM64
マクロは、ARM64 ターゲットのコンパイル時に既定で定義されます。 詳細については、「 Predefined マクロ」を参照してください。\
__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
を追加するか、別の ARM64 拡張機能でarmv8.0
を置き換えます。 [OK] を選択して変更を保存します。
このコンパイラ オプションをコードから設定するには
- 以下を参照してください。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 以降では、アーキテクチャ機能の有効化を使用できます。
関連項目
/arch
(最小 CPU アーキテクチャ)
定義済みマクロ
MSVC コンパイラ オプション
MSVC コンパイラのコマンド ライン構文