8.42 --cpu=name コンパイラオプション

構文

--cpu= name
name はプロセッサまたはアーキテクチャの名前です。
  • name がプロセッサ名の場合は、ARM7TDMIARM1176JZ-SMPCoreなど、 ARM データシートに記載されているとおりに名前を入力します。
  • name がアーキテクチャ名の場合は、名前が以下の表に示すアーキテクチャのリストに含まれている必要があります。
プロセッサ名とアーキテクチャ名では、大文字と小文字は区別されません。
ワイルドカード文字は使用できません。
以下の表に、各アーキテクチャでサポートされるプロセッサ名の例を示します。サポートされるアーキテクチャ名およびプロセッサ名の完全なリストを取得するには、--cpu=list オプションを指定します。

表 8-3 サポートされている ARM アーキテクチャ

アーキテクチャ 説明 プロセッサ名の例
4 Thumb をサポートしていない ARMv4 -
4T Thumb をサポートしている ARMv4 ARM7TDMIARM9TDMIARM720TARM920TARM922TSC100
5T ARMv5 with Thumb and interworking -
5TE ARMv5 with Thumb, interworking, DSP multiply, and double-word instructions ARM9E-SARM946E-SARM966E-S
5TEJ
ARMv5 with Thumb, interworking, DSP multiply, double-word instructions, and Jazelle® extensions

armcc cannot generate Java bytecodes.
ARM926EJ-SSC200
6 Thumb、インターワーク、DSP 乗算、ダブルワード命令、非境界整列、混合エンディアン、Jazelle 拡張、およびメディア拡張をサポートしている ARMv6 ARM1136J-SARM1136JF-S
6-M Thumb のみ、およびプロセッサステート命令をサポートしている ARMv6 マイクロコントローラプロファイル Cortex-M1.no_os_extensionCortex-M0SC000Cortex-M0plus
6S-M Thumb のみと、プロセッサステート命令および OS 拡張をサポートしている ARMv6 マイクロコントローラプロファイル Cortex-M1.os_extension
6K SMP 拡張をサポートしている ARMv6 MPCore
6T2 Thumb をサポートしている ARMv6(Thumb-2 テクノロジ) ARM1156T2-S
6Z Security Extensions をサポートしている ARMv6 ARM1176JZF-SARM1176JZ-S
7 Thumb(Thumb-2 テクノロジ)のみをサポートし、ハードウェア除算をサポートしていない ARMv7 -
7-A 仮想 MMU ベースメモリシステムをサポートする、ARM、Thumb(Thumb-2 テクノロジ)および ThumbEE をサポートし、DSP サポート、および 32 ビット SIMD サポートが指定された ARMv7 アプリケーションプロファイル Cortex-A5Cortex-A7Cortex-A8Cortex-A9Cortex-A15Cortex-A17
7-A.security v7-A アーキテクチャ向けにアセンブルする場合に SMC 命令(以前の SMI) の使用を許可する Cortex-A5Cortex-A7Cortex-A8Cortex-A9Cortex-A15Cortex-A17
7-R ARM、Thumb(Thumb-2 テクノロジ)、DSP サポート、および 32 ビット SIMD サポートが指定された ARMv7 リアルタイムプロファイル Cortex-R4Cortex-R4FCortex-R5Cortex-R5FCortex-R7
7-M Thumb(Thumb-2 テクノロジ)のみとハードウェア除算をサポートしている ARMv7 マイクロコントローラプロファイル Cortex-M3SC300
7E-M DSP(サチュレートおよび 32 ビット SIMD)命令による ARMv7-M 拡張 Cortex-M4Cortex-M7

  • 7-A.security は実際の ARM アーキテクチャではなく、7-A にセキュリティ拡張機能を追加したものを表します。
  • サポートされているアーキテクチャとプロセッサがすべて記載された一覧は、ライセンスによって異なります。

デフォルト

--cpu オプションを指定しない場合、armcc は、--cpu=ARM7TDMI と見なします。

Usage

以下に、プロセッサとアーキテクチャに関するオプションの一般的な特徴を示します。
プロセッサ
  • プロセッサを選択すると、適切なアーキテクチャ、浮動小数点ユニット(FPU)、およびメモリ構成が選択されます。
  • --cpu の値には、現時点でのすべての ARM 製品名またはアーキテクチャバージョンを指定できます。
    Marvell Feroceon や Marvell XScale など、他の ARM アーキテクチャベースのプロセッサもサポートされています。
  • --cpu オプションでプロセッサを指定すると、生成されるコードはそのプロセッサ用に最適化されます。このオプションにより、コンパイラは特定のコプロセッサまたは命令スケジューリングの機能を使用して、最適なパフォーマンスを実現できます。
Architectures
  • --cpu オプションでアーキテクチャ名を指定すると、生成されたコードは、そのアーキテクチャをサポートしているすべてのプロセッサで実行できます。たとえば、--cpu=5TE と指定すると、ARM926EJ-S プロセッサによって使用されるコードが生成されます。
FPU
  • --cpu を選択すると、--fpu が暗黙的に選択されることがあります。
    例えば、--arm オプションを指定してビルドする場合、--cpu=ARM1136JF-S を指定すると暗黙的に --fpu=vfpv2 が選択されます。同様に、--cpu=Cortex-R4F を指定すると、--fpu=vfpv3_d16 が暗黙的に選択されます。

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

    ターゲットプロセッサまたはアーキテクチャを指定すると、生成されたオブジェクトコードの他の ARM プロセッサとの互換性が失われることがあります。たとえば、生成されたオブジェクトコードに ARMv6 固有の命令が含まれている場合、アーキテクチャ ARMv6 用に生成されたコードは ARM920T プロセッサでは実行できないことがあります。したがって、目的に応じた最小公分母のプロセッサを選択する必要があります。
  • 混合 ARM/Thumb システム向けに、ARMv4T または ARMv5T をサポートするプロセッサ用にビルドしている場合は、インターワークオプションの --apcs=/interwork を指定する必要があります。ARMv5T 以降をサポートするプロセッサでは、デフォルトでインターワークオプションが有効になります。
  • コマンドラインで --thumb オプションを指定して Thumb 用にビルドすると、コンパイラ は可能な範囲で Thumb 命令セットを使用してコードを生成します。ただし、コンパイラ では一部のコンパイルに対して ARM コードを生成することがあります。例えば、16 ビット Thumb プロセッサ用のコードを生成しており、VFP を使用している場合は、浮動小数点演算を含むすべての関数が ARM 用にコンパイルされます。
  • アーキテクチャが Thumb のみをサポートしている場合、コマンドラインで --thumb を指定する必要はありません。例えば、--cpu=7-M で ARMv7-M 用にビルドする場合、ARMv7-M は Thumb しかサポートしていないので、コマンドラインに --thumb を指定する必要はありません。ARMv6-M やその他の Thumb 専用アーキテクチャも同様です。

制約条件

同じコマンドラインでプロセッサとアーキテクチャの両方を指定することはできません。
関連する参考文書
8.6 --apcs=qualifier...qualifier
8.41 --cpu=list
8.88 --fpu=name コンパイラオプション
8.180 --thumb
10.14 __smc
関連情報
SMC
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.