--cpu=name

このオプションを使用すると、選択した ARM プロセッサまたはアーキテクチャのコードを生成できます。

Show/hide構文

--cpu=name

各パラメータには以下の意味があります。

name

プロセッサまたはアーキテクチャの名前です。

name がプロセッサ名の場合は、ARM7TDMIARM1176JZ-SMPCore など、ARM データシートに記載されているとおりに名前を入力します。

name がアーキテクチャ名の場合は、名前がTable 3 のアーキテクチャのリストに含まれている必要があります。

プロセッサ名とアーキテクチャ名では、大文字と小文字は区別されません。

ワイルドカード文字は使用できません。

Table 3. サポートされている ARM アーキテクチャ

アーキテクチャ説明プロセッサの例
4Thumb をサポートしていない ARMv4SA-1100
4TThumb をサポートしている ARMv4ARM7TDMI、ARM9TDMI、ARM720T、ARM740T、ARM920T、ARM922T、ARM940T、SC100
5TThumb およびインターワークをサポートしている ARMv5 
5TEThumb、インターワーク、DSP 乗算、およびダブルワード命令をサポートしている ARMv5ARM9E、ARM946E-S、ARM966E-S
5TEJThumb、インターワーク、DSP 乗算、ダブルワード命令、および Jazelle® 拡張をサポートしている ARMv5[a]ARM926EJ-S、ARM1026EJ-S、SC200
6Thumb、インターワーク、DSP 乗算、ダブルワード命令、非境界整列、混合エンディアン、Jazelle 拡張、およびメディア拡張をサポートしている ARMv6ARM1136J-S、ARM1136JF-S
6-MThumb のみとプロセッサステート命令をサポートしている ARMv6 マイクロコントローラプロファイルCortex-M1(OS 拡張なし)、Cortex-M0、SC000
6S-MThumb のみと、プロセッサステート命令および OS 拡張をサポートしている ARMv6 マイクロコントローラプロファイルCortex-M1(OS 拡張あり)
6KSMP 拡張をサポートしている ARMv6MPCore
6T2Thumb-2 をサポートしている ARMv6ARM1156T2-S、ARM1156T2F-S
6ZSecurity Extensions をサポートしている ARMv6ARM1176JZF-S、ARM1176JZ-S
7Thumb-2 のみをサポートし、ハードウェア除算をサポートしていない ARMv7Cortex-A5
7-A仮想 MMU ベースメモリシステムをサポートする、ARM 命令セット、Thumb-2 命令セット、Thumb-2EE 命令セット、DSP サポート、および 32 ビット SIMD サポトが指定された ARMv7 アプリケーションプロファイルCortex-A8、Cortex-A9、Cortex-A15
7-A.securityv7-A アーキテクチャ向けにアセンブルする場合に SMC 命令(以前の SMI)の使用を許可するCortex-A5、Cortex-A8、Cortex-A9、Cortex-A15
7-RARM、Thumb-2、DSP サポート、および 32 ビット SIMD サポートが指定された ARMv7 リアルタイムプロファイルCortex-R4、Cortex-R4F、Cortex-R7
7-MThumb-2 のみとハードウェア除算をサポートしている ARMv7 マイクロコントローラプロファイルCortex-M3、SC300
7E-MDSP(サチュレートおよび 32 ビット SIMD)命令による ARMv7-M 拡張Cortex-M4

[a] ARM コンパイラは Java バイトコードを生成できません。


Note

ARMv7 は実際の ARM アーキテクチャではありません。--cpu=7 は、ARMv7-A、ARMv7-R、および ARMv7-M のすべてのアーキテクチャに共通の機能を示します。すなわち、--cpu=7 とともに使用される機能が ARMv7-A、ARMv7-R、ARMv7-M のすべてのアーキテクチャ上に存在します。

7-A.security は実際の ARM アーキテクチャではなく、7-A にセキュリティ拡張機能を追加したものを表します。

Show/hideデフォルト

--cpu オプションを指定しない場合は、--cpu=ARM7TDMI が想定されます。

CPU アーキテクチャおよびプロセッサがすべて記載された一覧を表示するには、--cpu=list オプションを使用します。

Show/hide使用法

以下に、プロセッサとアーキテクチャに関するオプションの一般的な特徴を示します。

プロセッサ
  • プロセッサを選択すると、適切なアーキテクチャ、浮動小数点ユニット(FPU)、およびメモリ構成が選択されます。

  • --cpu の値には、現時点でのすべての ARM 製品名またはアーキテクチャバージョンを指定できます。

    Marvell Feroceon や Marvell XScale など、他の ARM アーキテクチャベースのプロセッサもサポートされています。

  • --cpu オプションでプロセッサを指定すると、コンパイルされるコードはそのプロセッサ用に最適化されます。このオプションにより、コンパイラは特定のコプロセッサまたは命令スケジューリングの機能を使用して、最適なパフォーマンスを実現できます。

アーキテクチャ
  • --cpu オプションでアーキテクチャ名を指定すると、コンパイルされたコードは、そのアーキテクチャをサポートしているすべてのプロセッサで実行できます。例えば、--cpu=5TE を指定すると、ARM926EJ-S® によって使用されるコードが生成されます。

FPU
  • --cpu を指定すると、--fpu が暗黙的に選択されることがあります。例えば、--arm オプションを指定してコンパイルする場合、--cpu=ARM1136JF-S を指定すると暗黙的に --fpu=vfpv2 が選択されます。同様に、--cpu=Cortex-R4F を指定すると、--fpu=vfpv3_d16 が暗黙的に選択されます。

    Note

    暗黙的な FPU は、コマンドラインで --fpu によって明示的に指定された FPU によってオーバーライドされることに注意して下さい。

  • --fpu オプションも --cpu オプションも指定されていない場合には、--fpu=softvfp が使用されます。

ARM/Thumb
  • --cpu=ARM7TDMI などの Thumb 命令対応プロセッサまたはアーキテクチャを指定しても、ARM コンパイラは Thumb コードを生成しません。Long 乗算など、使用されるプセッサの機能だけが有効になります。Thumb コードを生成するには、--thumb オプションを使用して下さい。ただし、プロセッサが Thumb 専用プロセッサ(Cortex-M4 など)である場合は除きます。この場合、--thumb はなくても構いません。

    Note

    ターゲットプロセッサまたはアーキテクチャを指定すると、他の ARM プロセッサに対するオブジェクトコードの互換性が失われることがあります例えば、アーキテクチャ ARMv6 用にコンパイルされたコードに ARMv6 固有の命令が含まれている場合、そのコードは ARM920T プロセッサでは実行できいことがあります。したがって、目的に応じた最小公分母のプロセッサを選択する必要があります。

  • ARMv4T または ARMv5T をサポートするプロセッサ用のコードをコンパイルしており、そのコードを ARM/Thumb 混合システムで使用する場合は、インターークオプションの --apcs=/interwork を指定する必要があります。ARMv5T 以降をサポートするプロセッサでは、デフォルトでインターワークオプションが有効になります。

  • コマンドラインで --thumb オプションを指定して Thumb 用にコンパイルすると、コンパイラは可能な範囲で Thumb 命令セットを使用してコードをコンパイルします。ただし、部のコードは ARM コードにコンパイルされることがあります。例えば、Thumb-1 プロセッサ用のコードをコンパイルしており、VFP を使用している場合は、浮動小数点演算を含むすべての関数が ARM 用にコンパイルされます。

  • コードのコンパイル対象のアーキテクチャが Thumb しかサポートしていない場合、コマンドラインで --thumb を指定する必要はありません。例えば、--cpu=7-M で ARMv7-M 用にコードをコンパイルする場合、ARMv7-M は Thumb-2 しかサポートしていないので、コマンドラインに --thumb を指定する必要はありません。ARMv6-M やその他の Thumb 専用アーキテクチャも同様です。

Show/hide制約条件

同じコマンドラインでプロセッサとアーキテクチャの両方を指定することはできません。

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711