次の方法で共有


/arch (ARM64)

ARM64 でコードを生成するための Arm A プロファイル アーキテクチャ拡張機能を指定します。 その他のターゲット アーキテクチャの詳細/archについては、(x86)、(x64)/archおよび/arch(ARM) を参照してください。/arch

構文

/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。 既定では、アーキテクチャが指定されていない場合、コンパイラは動作を /arch:armv8.0 使用します。

/arch:armv9.x2
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_LSElse/arch:armv8.0+lseが . 使用可能な機能とその要件の詳細については、(ARM64)3 を参照してください/feature

Note

Visual Studio のバージョンによっては、指定した拡張機能レベルで必要なすべての機能セットから命令がまだコンパイラによって生成されない場合があります。 たとえば、/arch:armv8.1組み込み関数で Armv8.1-A 拡張機能でFEAT_LSE導入された適切なアトミック命令を使用できますが*Interlocked*、コンパイラのサポートには 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 マネージド関数のコード生成には影響しません。

Visual Studio で /arch コンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳しくは、「Visual Studio で C++ コンパイラとビルド プロパティを設定する」をご覧ください。

  2. [構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。

  3. [その他の オプション ] ボックスで、別の ARM64 拡張機能を追加 /arch:armv8.0 または置き換えます armv8.0[OK] を選択して変更を保存します。

このコンパイラ オプションをコードから設定するには

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 コンパイラのコマンド ライン構文