realview compilation tools...

94
Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJ RealView ® Compilation Tools バージ ョ ン 4.0 エッセンシャルガイド

Upload: hoangliem

Post on 24-Apr-2018

239 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RealView® Compilation Toolsバージ ョ ン 4.0

エッセンシャルガイド

Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0202IJ

Page 2: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RealView Compilation Toolsエッセンシャルガイド

Copyright © 2002-2008 ARM Limited. All rights reserved.

リ リース情報

本書には以下の変更が加えられています。

著作権

® または ™ のマークが付いた言葉およびロゴは、 この著作権情報で別段に規定されている場合を

除き、 ARM Limited の EU またはその他の国における登録商標および商標です。 本書に記載され

ている他の製品名は、 各社の所有する商標です。

本書に記載されている情報の全部または一部、 ならびに本書で紹介する製品は、 著作権所有者の

文書による事前の許可を得ない限り、 転用 ・ 複製するこ とを禁じます。

本書に記載されている製品は、 今後も継続的に開発 ・ 改良の対象とな り ます。 本書に含まれる製

品およびその利用方法についての情報は、 ARM が利用者の利益のために提供するものです。 し

たがって当社では、 製品の市販性または利用の適切性を含め、 暗示的 ・ 明示的に関係なく一切の

責任を負いません。

本書は、 本製品の利用者をサポートするこ とだけを目的と しています。 本書に記載されている情

報の使用、 情報の誤り または省略、 あるいは本製品の誤使用によって発生したいかなる損失 ・ 損

傷についても、 ARM Limited は一切責任を負いません。

ARM とい う用語が使用されている場合、 “ARM または必要に応じてその子会社” を指します。

変更履歴

日付 発行 機密保持ステータス 変更

2002 年 8 月 A 非機密扱い 第 1.2 版

2003 年 1 月 B 非機密扱い 第 2.0 版

2003 年 9 月 C 非機密扱い RealView Developer Suite 向け リ リース 2.0.1

2004 年 1 月 D 非機密扱い RealView Developer Suite 向け リ リース 2.1

2004 年 12 月 E 非機密扱い RealView Developer Suite 向け リ リース 2.2

2005 年 5 月 F 非機密扱い RealView Developer Suite 向け リ リース 2.2SP1

2006 年 3 月 G 非機密扱い RealView Development Suite 向け リ リース 3.0

2007 年 3 月 H 非機密扱い RealView Development Suite 向け リ リース 3.1

2008 年 9 月 I 非機密扱い RealView Development Suite v4.0 向け リ リース 4.0

ii Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 3: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

機密保持ステータス

本書は非機密扱いであ り、 本書を使用、 複製、 および開示する権利は、 ARM および ARM が本書

を提供した当事者との間で締結した契約の条項に基づいたライセンスの制限によ り異な り ます。

アクセス制限は、 ARM 社内による分類です。

製品ステータス

本書の情報は 終版であ り、 開発済み製品に対応しています。

Web アドレス

http://www.arm.com

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. iiiNon-Confidential

Page 4: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

iv Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 5: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

目次RealView Compilation Toolsエッセンシャルガイド

序章本書について ............................................................................................... viiiフ ィードバック ............................................................................................. xii

第 1 章 はじめに1.1 RealView Compilation Tools について ........................................................ 1-21.2 RVCT で使用する環境変数 ......................................................................... 1-71.3 追加の詳細情報 ........................................................................................... 1-9

第 2 章 アプリケーシ ョ ンの作成2.1 ARM Compilation Tools の使用 .................................................................. 2-22.2 ARM コンパイラの使用 .............................................................................. 2-32.3 ARM リンカの使用 ..................................................................................... 2-72.4 ARM アセンブラの使用 .............................................................................. 2-82.5 fromelf ユーティ リテ ィの使用 .................................................................... 2-92.6 ARM Workbench IDE の使用 .................................................................... 2-10

第 3 章 RVCT v4.0 と RVCT v3.1 の相違点3.1 RealView Compilation Tools v4.0 の概要 .................................................... 3-23.2 RVCT v4.0 のドキュメン トの変更点 .......................................................... 3-3

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. vNon-Confidential

Page 6: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

3.3 RVCT v4.0 における ARM コンパイラの変更点 ........................................ 3-43.4 RVCT v4.0 におけるライブラリサポートの変更点 .................................... 3-73.5 RVCT v4.0 における ARM リンカの変更点 ............................................... 3-83.6 RVCT v4.0 における ARM アセンブラの変更点 ........................................ 3-93.7 RVCT v4.0 における fromelf ユーティ リテ ィの変更点 ............................ 3-103.8 RVCT v4.0 での使用が制限される機能 .................................................... 3-123.9 RVCT v4.0 で廃止された機能 .................................................................. 3-133.10 RVCT v4.0 と従来のオブジェク トおよびライブラリ との互換性 ............ 3-14

付録 A 以前のリ リースについてA.1 RVCT v3.1 と RVCT v3.0 の相違点 ........................................................... A-2A.2 RVCT v3.0 と RVCT v2.2 の相違点 ......................................................... A-12A.3 RVCT v2.2 SP1 と RVCT v2.2 の相違点 .................................................. A-24A.4 RVCT v2.2 と RVCT v2.1 の相違点 ......................................................... A-26A.5 RVCT v2.1 と RVCT v2.0 の相違点 ......................................................... A-39A.6 RVCT v2.0 と RVCT v1.2 の相違点 ......................................................... A-44

vi Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 7: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

序章

本章では、 『RealView Compilation Tools エッセンシャルガイ ド』 について概説

します。 以下のセクシ ョ ンから構成されています。

• 「本書について」 (ページ viii)

• 「フ ィードバッ ク」 (ページ xii)

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. viiNon-Confidential

Page 8: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

序章

本書について

本書では、 ARM® RealView® Compilation Tools (RVCT) の概要について説明し

ます。

対象読者

本書は、 RVCT を使用してアプリ ケーシ ョ ンを作成している開発者を対象と

しています。 したがって、 本書の内容は、 経験豊富なソフ ト ウェア開発者を想定して記述されています。

本書の構成

本書は以下の章と付録から構成されています。

第 1 章 はじめに

RVCT の概要について説明します。 RVCT のコンポーネン ト とそ

のオンラインマニュアルを紹介します。

第 2 章 アプリ ケーシ ョ ンの作成

RVCT を使用したアプ リ ケーシ ョ ンの作成方法の概要について説

明します。

第 3 章 RVCT v4.0 と RVCT v3.1 の相違点

新のリ リースの RVCT と以前のリ リースの RVCT との相違点

について説明します。

付録 A 以前のリ リースについて

この付録では、 以前のリ リースの RVCT 間の相違点について説

明します。

本書では、 ARM ソフ ト ウェアがデフォルトの場所にインス トールされている

こ とを前提と しています。 例えば、 Windows 環境では、 デフォルトの場所は volume:\Program Files\ARM にな り ます。 パス名を参照する際、 install_directory の部分をこの場所に読み替えて下さい。 例えば、 本書では、install_directory\Documentation\... のよ うなパス名が使用されます。 ARM ソフ ト ウェアを別の場所にインス トールした場合は、 ファ イルパスの見方を変える必要があ り ます。

viii Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 9: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

序章

表記規則

本書では以下の表記規則を使用しています。

italic 重要事項、 重要用語、 相互参照、 引用箇所を斜体で記載し

ています。

bold メニュー名などのユーザインタフェース要素を太字で記載

しています。 また、 必要に応じて記述リ ス ト内の重要箇所、 ARM プロセッサの信号名、 重要用語、 および専門用

語にも太字を使用しています。

monospace コマンド、 ファ イル名、 プログラム名、 ソースコードな

ど、 キーボードから入力可能なテキス ト を示しています。

monospace コマンドまたはオプシ ョ ンに使用可能な略語を示します。

コマンド名またはオプシ ョ ン名をすべて入力する代わりに、 下線部分の文字だけを入力するこ とができます。

monospace italic コマンドまたは関数の引数で、 特定の値に置き換えるこ と

が可能なものを示しています。

monospace bold サンプルコード以外に使用される言語キーワードを示して

います。

参考資料

このセクシ ョ ンでは、 ARM プロセッサファ ミ リのコード開発関連情報を提供

している ARM Limited の出版物を紹介します。

ARM Limited は自社出版物の定期的な更新 ・ 修正を行っています。 新の正

誤表、 追補表、 および ARM に関する FAQ については、

http://infocenter.arm.com/help/index.jsp をご覧下さい。

ARM の出版物

本書では、 RVCT の概要について説明します。 このほか、 本製品には以下の

マニュアルが同梱されています。

• 『RealView Compilation Tools コンパイラユーザガイ ド』 (ARM DUI 0205)。本書では、 ARM コンパイラ armcc の基本関数と コンパイラ固有の機能に

ついて説明しています。 また、 NEON™ ベク トル化コンパイラ と、 自動

ベク トル化機能の使用方法についても説明しています。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. ixNon-Confidential

Page 10: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

序章

• 『RealView Compilation Tools コンパイラ リ ファレンスガイ ド』 (ARM DUI 0348)。 本書には、 ARM コンパイラの参照情報と コマンド ラ インオプ

シ ョ ンの説明が記載されています。 また、 ARM コンパイラにおける C や C++ の実装についても説明しています。

• 『RealView Compilation Tools ラ イブラ リ / 浮動小数点サポートガイ ド』

(ARM DUI 0349)。本書では、ARM の C ラ イブラ リおよび C++ ライブラ

リ、 ISO 標準への準拠、 ターゲッ ト依存関数のカスタマイズ、 およびア

プリ ケーシ ョ ン固有の要件について説明します。 また、 ARM における

浮動小数点演算のサポートについても説明します。

• 『RealView Compilation Tools アセンブラガイ ド』 (ARM DUI 0204)。 本書

には、 ARM アセンブラ armasm についての参照およびチュート リ アル情

報が記載されています。

• 『RealView Compilation Tools リ ンカユーザガイ ド』 (ARM DUI 0206)。 本

書には、 ARM リ ンカ armlink に関するユーザ情報が記載されています。

また、 スキャ ッ タロードについても概説します。

• 『RealView Compilation Tools リ ンカ リ ファレンスガイ ド』 (ARM DUI 0381)。 本書には、 コマンド ラ インオプシ ョ ンと ステア リ ングファ イル

の参照情報が記載されています。 また、 ARM アーキテクチャ用ベース

プラ ッ ト フォーム ABI (BPABI) と System V 共有ライブラ リおよび実行

可能ファイルについても説明されています。

• 『RealView Compilation Tools ユーティ リ ティガイ ド』 (ARM DUI 0382)。本書には、 ARM ライブラ リ アン armar および ARM イ メージ変換ユー

ティ リ ティ fromelf のコマンド ラ インオプシ ョ ンと実用サンプルが記載

されています。

• 『RealView Compilation Tools デベロ ッパガイ ド』 (ARM DUI 0203)。 本書

では、 ARM ファ ミ リのプロセッサをターゲッ ト と したコードの記述に

関するチュート リ アル情報を提供しています。

• 『ARM Workbench IDE ユーザガイ ド』 (ARM DUI 0330) では、統合開発環

境 (IDE) を使用して ARM ターゲッ ト用のプロジェク ト を設定および

ビルドする方法について説明します。

準拠する基本標準、 ソフ ト ウェアインタフェース、 および ARM でサポート

されている標準に関する詳細については、install_directory\Documentation\Specifications\... を参照して下さい。

x Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 11: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

序章

特定の ARM 製品に関する情報については、 以下のマニュアルを参照して下

さい。

• 『ARM アーキテクチャ リ ファレンスマニュアル』 (ARMv7-A および ARMv7-R エディシ ョ ン) (ARM DDI 0406)

• 『ARM7-M アーキテクチャ リ ファレンスマニュアル』 (ARM DDI 0403)

• 『ARM6-M アーキテクチャ リ ファレンスマニュアル』 (ARM DDI 0419)

• 『ARM アーキテクチャ リ ファレンスマニュアル』 (ARM DDI 0100)

• お使いのハード ウェアデバイスの ARM データシート またはテクニカル

リ ファレンスマニュアル

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. xiNon-Confidential

Page 12: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

序章

フ ィードバック

ARM Limited では RealView Compilation Tools および本書に関するフ ィード

バッ クをお待ちしており ます。

RealView Compilation Tools に関するフ ィードバック

RVCT に関して問題がある場合は、 購入元にお問い合わせ下さい。 このと き、

迅速かつ適切な対応をさせて頂くために、 以下の情報をご用意下さい。

• お名前と会社名

• 製品のシ リ アル番号

• 使用している リ リースのバージ ョ ン番号や日付など、 ツールのバージ ョン文字列

• プラ ッ ト フォームの詳細 (ハード ウェアプラ ッ ト フォーム、 オペレーティングシステムの種類とバージ ョ ンなど)

• 問題を再現するサイズの小さな独立したサンプルコード

• 操作の目的と実際の動作に関する詳しい説明

• 使用したコマンド (コマンド ラ インオプシ ョ ンを含む)

• 問題を例示するサンプル出力

本書に関するフ ィードバック

本書に関するご意見につきましては、 以下の内容を記載した電子メールを [email protected] までお送り下さい。

• マニュアル名

• 文書番号

• 問題のあるページ番号

• 問題点の簡潔な説明

補足すべき点や改善すべき点についてのご提案もお待ちしており ます。

xii Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 13: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

第 1 章 はじめに

本章では、 ARM® RealView® Compilation Tools (RVCT) の概要と、 収録されて

いるソフ ト ウェアコンポーネン ト とマニュアルについて説明します。 以下のセクシ ョ ンから構成されています。

• 「RealView Compilation Tools について」 (ページ 1-2)

• 「RVCT で使用する環境変数」 (ページ 1-7)

• 「追加の詳細情報」 (ページ 1-9)

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 1-1Non-Confidential

Page 14: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

はじめに

1.1 RealView Compilation Tools について

RVCT は、 サポート ドキュ メン ト とサンプルを備えたツールスイートです。

これらのツールを使用する と、 ARM プロセッサファ ミ リ用のアプ リ ケーシ ョ

ンを記述してビルドするこ とができます。

RVCT を使用する と、 C、 C++、 または ARM のアセンブリ言語でソフ ト ウェ

アプログラムをビルドできます。

1.1.1 RVCT のコンポーネン ト

このセクシ ョ ンでは、 RVCT コンポーネン トの概要について説明します。

開発ツール

RVCT には、 以下の開発者向けツールが収録されています。

armcc ARM コンパイラ。 C コード と C++ コードをコンパイルします。

armasm ARM と Thumb® に対応しているアセンブラ。ARM および Thumb アセンブ リ言語によるソースファ イルをアセンブルします。

armlink ARM リ ンカ。 1 つまたは複数のオブジェク ト ファ イルの内容と、

1 つまたは複数のオブジェク ト ラ イブラ リから選択された部分を

結合し、 実行可能プログラムを生成します。

Rogue Wave C++ ラ イブラ リ

Rogue Wave ライブラ リは、 標準 C++ ラ イブラ リ を実装したもの

です。 Rogue Wave ライブラ リの詳細については、 CD-ROM に収

録されている HTML 形式のマニュアルを参照して下さい。

C++ ラ イブラ リ

ARM C++ ラ イブラ リには、 以下の関数が用意されています。

• C++ コンパイル時に使用するヘルパ関数

• Rogue Wave ライブラ リでサポート されていないその他の C++ 関数

C ラ イブラ リ ARM C ラ イブラ リは、C 標準および C++ 標準で定義されている

ライブラ リ機能を実装したものです。 詳細については、 『ラ イブラ リ / 浮動小数点サポートガイ ド』 の 2-2 ページの 「C および C++ ラ イブラ リについて」 を参照して下さい。

1-2 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 15: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

はじめに

C マイ クロラ イブラ リ

ARM C マイ クロラ イブラ リ (microlib) には、 高度に 適化され

た一連の関数が用意されています。 これらの関数は、 システムの深部に組み込まれ、 極めて小容量のメモ リに収める必要があるアプ リ ケーシ ョ ンで使用されます。 詳細については、 『ラ イブラ リ / 浮動小数点サポートガイ ド』 の 「3. C マイ ク ロラ イブラ

リ 」 の章を参照して下さい。

fromelf ARM イ メージ変換ユーティ リ ティ。 逆アセンブ リおよびコード

サイズやデータサイズなど、 入力イ メージに関するテキス ト情報を生成するこ と もできます。

armar ARM ラ イブラ リ アン。 ELF 形式のオブジェク ト ファ イルをアー

カイブやライブラ リにま とめて保存するために使用します。 これによ り、 複数の ELF ファ イルの代わりにライブラ リやアーカ

イブを リ ンカに渡すこ とができます。 さ らに高度なアプリ ケーシ ョ ン開発でこのアーカイブを使用してサードパーティに配布するこ と もできます。

注 RealView Development Suite (RVDS) は 64 ビッ トの Linux プラ ッ ト フォームを

サポートするよ うにな り ましたが、 RVCT ツールがこれを利用できるよ うに

特別にビルド されたわけではあ り ません。 RVCT のファイル I/O ルーチンで

は、 標準のシステムコールが 32 ビッ トの (signed) int に収まるファ イルサイ

ズで使用されます。 つま り、 イ メージサイズは、 2GB を超える メモ リ容量を

備えた 64 ビッ トプラ ッ ト フォームまたはコンピュータ上でビルドする場合

も、 大 2GB に制限されているこ とにな り ます。 サイズがこの制限値を超え

る と、 メモ リが不足しているこ とを示すエラーメ ッセージがリ ンカによって返されます。 その結果、 十分なメモ リがあるにもかかわらず、 アプリ ケーシ ョ ンがメモ リにアクセスできないために混乱を引き起こすこ とがあ り ます。

標準への準拠

RVCT では、 以下の標準に準拠しています。 各標準ごとに、 準拠のレベルが

記載されています。

ar UNIX 方式のオブジェク ト コードアーカイブは armar によって生

成され、 armlink によって使用されます。 armar では、 ar 形式のほ

とんどのオブジェク ト コードアーカイブを リ ス ト して抽出する

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 1-3Non-Confidential

Page 16: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

はじめに

こ とができます。 また、 armlink では、 シンボルテーブルのメン

バを含んでいる場合、 別のアーカイブユーティ リ ティで作成された ar 形式のアーカイブを使用するこ とができます。

DWARF 3 DWARF 3 (DWARF Debugging Standard バージ ョ ン 3) のデバッグ

テーブルは、 RVDS のすべてのツールでサポート されています。

DWARF 2 DWARF 2 デバッグテーブルは、 RVCT に収録されているすべて

のツールでサポート されています。 また、 RealView Debugger など、 ELF や DWARF 2 と互換性のある ARM 製のデバッガでもサ

ポート されています。

ISO C ARM コンパイラでは、 ISO C 1990 および 1999 ソースが入力と し

てサポート されています。 詳細については、 『コンパイラユーザガイ ド』 の 「ソース言語モード」 を参照して下さい。

ISO C++ ARM コンパイラでは、 ISO C++ 2003 ソースが入力と してサポー

ト されています。

ELF ARM コード生成ツールは、 再配置可能なファイルと実行ファイ

ルを ELF 形式で生成します。 fromelf ユーティ リ ティ を使用する

と、 ELF ファ イルを別の形式のファイルに変換するこ とができ

ます。

注 DWARF 2 および DWARF 3 標準には、 フレームデータのデバッグなど、 一部

あいまいな領域があ り ます。 そのため、 ARM コード生成ツールによって生成

された DWARF をサードパーティ製のデバッガで使用できるかど うか、 また

はサードパーティ製のデバッガによって生成された DWARF を RealView Debugger で使用できるかど うかについての保証はあ り ません。

ARM アーキテクチャ用 ABI (基本標準) への準拠

ARM アーキテクチャ用 ABI (アプ リ ケーシ ョ ンバイナリ インタフェース) は標準の集合です。 オープンな標準と ARM アーキテクチャ固有の標準があ り

ます。 これらの標準によ り、 ベアメ タルから ARM Linux などの主要なオペ

レーティングシステムまで、 ARM ベースの実行環境におけるバイナリ コード

や開発ツールの相互動作が管理されます。

この標準に準拠する と、 プロデューサの異なる ARM および Thumb のオブ

ジェク トやオブジェク ト ラ イブラ リ を連動させるこ とができます。

1-4 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 17: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

はじめに

ARM アーキテクチャ用 ABI (基本標準) (BSABI) は、 以下の仕様から構成さ

れています。

AADWARF ARM アーキテクチャ DWARF 標準。 この ABI では、 DWARF 3 標準を使用して、 オブジェク トのプロデューサとデバッガ間のやり取り を規定しています。

AAELF ARM アーキテクチャ ELF 標準。 汎用的な ELF 標準をベースと

し、 プロデューサと コンシューマ間でのリ ンク可能ファ イルと実行可能ファイルのやり取り を規定しています。

AAPCS ARM アーキテクチャ向けプロシージャコール標準。 実行時の関

数間の制御とデータのやり取り を規定しています。 RVCT でサ

ポート されている主要な実行環境の種類ごとに、 AAPCS のバリ

アン トが用意されています。

BPABI ARM アーキテクチャ用ベースプラ ッ ト フォーム ABI。 静的な リ

ンカによって生成された実行可能ファイルや共有オブジェク トファ イルの形式と内容を規定しています。 ポス ト リ ンクを使用して、 プラ ッ ト フォーム固有の実行ファイルをサポート します。プラ ッ ト フォーム ABI を派生させるのに使用する基本標準を提

供します。

CLIBABI ARM アーキテクチャ用 C ライブラ リ ABI。 ABI と C ラ イブラ リ

の関係を定義しています。

CPPABI ARM アーキテクチャ用 C++ ABI。 IA-64 向けに開発された汎用的

な C++ ABI をベース と し、 独立した C++ コンパイラ間のイン

ターワークを規定しています。

EHABI ARM アーキテクチャ用例外処理 ABI。 例外がどのよ うにスロー

され処理されるのかについて、 言語に依存しない側面と C++ 固有の側面の両方から定義しています。

RTABI ARM アーキテクチャ用ラインタイム ABI。 個別に作成されたオ

ブジェク トが浮動小数点と コンパイラヘルパ関数のサポートにおいて実行環境に何を期待できるかをを規定しています。

基本標準、 ソフ ト ウェアインタフェース、 および ARM でサポート されてい

る標準の詳細については、install_directory\Documentation_Specifications_4.0\PDF を参照して下さい。

新版の詳細については、 http://www.arm.com を参照して下さい。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 1-5Non-Confidential

Page 18: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

はじめに

以前のリ リースの RVCT から 新バージ ョ ンの RVCT にアップグレードする

場合は、 ARM 仕様の 新版を使用して下さい。

支援ソフ トウェア

シ ミ ュレーシ ョ ン環境または ARM コアベースのハード ウェアでプログラム

をデバッグするには、 RealView Debugger などの適切なデバッガを使用しま

す。 このデバッガは、 GCC 3.4 または RVCT v2.2 以上で生成された ELF、DWARF 2、 および DWARF 3 と互換性があ り ます。

シ ミ ュレーシ ョ ン環境でプログラムをデバッグするには、 RealView ARMulator® ISS または Instruction Set System Model (ISSM) 支援ソフ ト ウェア

を使用します。 RealView Armulator ISS は、 RVDS に付属する命令セッ ト シ

ミ ュレータ (ISS) の 1 つです。 RVISS は、 デバッガと通信し、 デバッガと同

じホス ト コンピュータで実行した り、 デバッガを実行しているコンピュータとは異なる リモートのシステムで実行したりするこ とができます。 詳細については、 『RealView ARMulator ISS ユーザガイ ド』 を参照して下さい。

本リ リースでは、 Cortex™ プロセッサ用のシ ミ ュレータモデルが使用できるよ

うにな り ました。 これらのモデルには、 RealView Debugger の ISSM デバッグ

インタフェースを使用してアクセスできます。

サンプルコード

本書では、 RVDS に付属のサンプルを参照します。 これらは、 サンプルディ

レク ト リの install_directory\RVDS\Examples にあ り ます。 収録されているサン

プルの概要については、 『RealView Development Suite スタートガイ ド』 を参照

して下さい。

1-6 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 19: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

はじめに

1.2 RVCT で使用する環境変数

表 1-1 に RVCT で使用する環境変数を示します。

表 1-1 RVCT で使用する環境変数

環境変数 設定

ARMROOT インス トールディレク ト リルート (install_directory)。 デフォルトは C:\Program Files\ARM です。

ARMLMD_LICENSE_FILE ARM RealView ライセンスファ イルの場所。 この環境変数の情報については、

『ARM ツール用 FLEXnet ラ イセンス管理ガイ ド』 を参照して下さい。

RVCT40_ASMOPT 標準メークファイルの外部で使用される追加の ARM アセンブラオプシ ョ ン。 以下

に例を示します。

--licretry

リ ス ト されるオプシ ョ ンは、 メークファ イルの armasm コマンドで指定されるオプ

シ ョ ンの前に表示されます。 したがって、 この環境変数でリ ス ト されるオプシ ョンは、 メークファ イルで指定されるオプシ ョ ンによってオーバーライ ド されます。

RVCT40_CCOPT 標準メークファイルの外部で使用される追加の ARM コンパイラオプシ ョ ン。 以下

に例を示します。

--licretry

リ ス ト されるオプシ ョ ンは、 メークファ イルの armcc コマンドで指定されるオプ

シ ョ ンの前に表示されます。 したがって、 この環境変数でリ ス ト されるオプシ ョンは、 メークファ イルで指定されるオプシ ョ ンによってオーバーライ ド されます。

RVCT40_FROMELFOPT 標準メークファイルの外部で使用される追加の ARM fromelf オプシ ョ ン。 以下に

例を示します。

--licretry

リ ス ト されるオプシ ョ ンは、 メークファ イルの fromelf コマンドで指定されるオプ

シ ョ ンの前に表示されます。 したがって、 この環境変数でリ ス ト されるオプシ ョンは、 メークファ イルで指定されるオプシ ョ ンによってオーバーライ ド されます。

RVCT40_LINKOPT 標準メークファイルの外部で使用される追加の ARM リ ンカオプシ ョ ン。 以下に例

を示します。

--licretry

リ ス ト されるオプシ ョ ンは、 メークファ イルの armlink コマンドで指定されたオプ

シ ョ ンの前に表示されます。 したがって、 この環境変数でリ ス ト されるオプシ ョンは、 メークファ イルで指定されるオプシ ョ ンによってオーバーライ ド されます。

RVCT40BIN RVCT プログラム実行可能ファイル :

install_directory\RVCT\Programs\...\win_32-pentium

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 1-7Non-Confidential

Page 20: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

はじめに

RVCT40INC ARM コンパイラのインクルードファ イル :

install_directory\RVCT\Data\...\include\windows

RVCT40LIB ARM コンパイラのライブラ リ ファ イル :

install_directory\RVCT\Data\...\lib

RVDS_PROJECT プロジェク ト テンプレートディ レク ト リ を識別します。

RVDS_PROJECT_WORKDIR プロジェク ト作業ディ レク ト リ を識別します。

表 1-1 RVCT で使用する環境変数 (続き)

環境変数 設定

1-8 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 21: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

はじめに

1.3 追加の詳細情報

インス トールのタイプに応じて、 付属マニュアルには、 ブラウザベースの HTML 形式と PDF 形式があ り ます。

注 RVDS マニュアルで使用されている ARM 用語の用語集は、 『RealView Development Suite スタートガイ ド』 に付属しています。

付属マニュアルをすべてインス トールした場合、 これらのマニュアルには以下のいずれかの方法でアクセスできます。

• プラ ッ ト フォームに応じて、 付属マニュアルを表示するには、 以下の操作を実行します。

— Windows 環境では、 以下の順に選択します。

[スタート ] → [すべてのプログラム] → [ARM] → [Help viewer v1.0]

— Red Hat Linux 環境では、 以下の順に選択します。

[スタート ] メニュー → [プログラム] → [ARM] → [Help viewer v1.0]

これによってスタンドアロンのビューアが表示され、 そこでは以下の操作を実行できます。

— HTML 形式で RVDS マニュアルを表示する

— すべてのマニュアルまたはマニュアルのサブセッ トでテキス ト検索を実行する

— 各マニュアルに対応する PDF ファ イルにアクセスする

注 スタンドアロンビューアから PDF マニュアルを表示する場合、 すべて

の PDF マニュアルを検索するこ とはできません。

• プラ ッ ト フォームに応じて、 PDF マニュアルを表示するには、 以下の操

作を実行します。

— Windows 環境では、 以下の順に選択します。

[スタート ] → [すべてのプログラム] → [ARM] → [RealView Development Suite v4.0] → [RVDS v4.0 Documentation Suite]

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 1-9Non-Confidential

Page 22: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

はじめに

— Red Hat Linux 環境では、 以下の順に選択します。

[スタート ] メニュー → [プログラム] → [ARM] → [RealView Development Suite v4.0] → [RVDS v4.0 Documentation Suite]

これによって、 PDF 形式の RVDS マニュアルへのリ ンクを含んだ PDF マニュアルが表示されます。 すべての PDF マニュアルに対し、 テキス

ト検索を実行するこ と もできます。

Rogue Wave C++ ラ イブラ リに関するマニュアルは、 すべてのサポート されて

いるプラ ッ ト フォームで HTML 形式で用意されています。 標準インス トール

では、 デフォルトで、 このマニュアルがインス トールされます。 詳細については、 「Rogue Wave のマニュアル」 を参照して下さい。

1.3.1 Rogue Wave のマニュアル

RVCT の Rogue Wave Standard C++ ラ イブラ リのマニュアルは、製品 CD-ROM に HTML 形式で収録されています。 これらのマニュアルを表示するには、 標

準の Web ブラウザを使用します。 例えば、

install_directory\Documentation\RogueWave\1.0\release\stdref\index.htm ファ イル

を選択する と、 Rogue Wave の HTML 形式のマニュアルが表示されます。

図 1-1 (ページ 1-11) を参照して下さい。 この場合、 install_directory は D:\ARM です。

1-10 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 23: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

はじめに

図 1-1 Rogue Wave の HTML マニュアル

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 1-11Non-Confidential

Page 24: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

はじめに

1-12 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 25: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

第 2 章 アプリケーシ ョ ンの作成

本章では、 ARM® RealView® Compilation Tools を使用してアプリ ケーシ ョ ンを

作成する方法について説明します。 以下のセクシ ョ ンから構成されています。

• 「ARM Compilation Tools の使用」 (ページ 2-2)

• 「ARM コンパイラの使用」 (ページ 2-3)

• 「ARM アセンブラの使用」 (ページ 2-8)

• 「ARM リ ンカの使用」 (ページ 2-7)

• 「fromelf ユーティ リ ティの使用」 (ページ 2-9)

• 「ARM Workbench IDE の使用」 (ページ 2-10)

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 2-1Non-Confidential

Page 26: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

アプリケーシ ョ ンの作成

2.1 ARM Compilation Tools の使用

通常、 アプ リ ケーシ ョ ン開発には、 以下のファイルや作業が必要になり ます。

• メ インアプ リ ケーシ ョ ンの C/C++ ソースコード (armcc)

• 割り込みサービスルーチンなど、 ハード ウェアに近いコンポーネン トのアセンブ リ ソースコード (armasm)

• すべてのオブジェク ト を リ ンク してイ メージを生成 (armlink)

• イ メージをフラ ッシュ メモ リ用の形式 (プレーンバイナリ形式、 Intel Hex 形式、 Motorola-S 形式) に変換 (fromelf)

図 2-1 に、 通常のアプリ ケーシ ョ ン開発で ARM Compilation Tools が互いにど

のよ うに リ ンク しているかを示します。

図 2-1 一般的なツール使用の流れ図

Flash format

.s

armcc

armasm

C/C++ ARM and Thumb

Assemblycode

armlink fromelf

ImageObject codeSource code

code

data

debug

Plain binaryIntel Hex

Motorola-S

.ocodedata

debug

.ocodedata

debug

.c

2-2 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 27: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

アプリケーシ ョ ンの作成

2.2 ARM コンパイラの使用

ARM コンパイラ (armcc) を使用する と、 C および C++ ソースコードを ARM および Thumb コードにコンパイルできます。

通常、 ARM コンパイラを起動するには以下のよ うに入力します。

armcc [options] ifile_1 ... ifile_n

複数の入力ファ イルを指定できます。

ARM および Thumb コードのコンパイルについて、 および指定したファ イル

名拡張子によってコンパイラの起動コンフ ィギュレーシ ョ ンがどのよ うに調整されるかについては、 『コンパイラユーザガイ ド』 の 「第 2 章 ARM コンパ

イラの使い方」 の章を参照して下さい。

2.2.1 Dhrystone サンプルのビルド

さまざまなアプ リ ケーシ ョ ンの C ソースコードのサンプルが、 サンプルディ

レク ト リにインス トールされています。 各サンプルには readme.txt ファ イル

が付属しており、 サンプルコードの説明と、 コードのビルド方法が記載されています。

例えば、 Dhrystone ベンチマークプログラムのソースコードは、 サンプルディ

レク ト リの ...\dhrystone にインス トールされています。 このプログラムは、

システムの整数処理のパフォーマンス測定に使用できます。

Dhrystone のサンプルをビルドするには

1. 以下のコマンドを使用して、 C ファ イル dhry_1.c と dhry_2.c をコンパイ

ルします。

armcc -c -W --debug -O3 -Otime --no_inline --no_multifile -DMSC_CLOCK \ dhry_1.c dhry_2.c

一般的に使用されるオプシ ョ ンは以下のとおりです。

-c コンパイルのみ (リ ンクなし) を行う よ うにコンパ

イラに指示します。

--debug ソースレベルのデバッグを行うためのデバッグテー

ブルを追加するよ うにコンパイラに指示します。

-O3 高度な 適化を使用してコードを生成するよ うにコ

ンパイラに指示します。

-Otime サイズではなく速度を重視してコードを 適化する

よ うにコンパイラに指示します。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 2-3Non-Confidential

Page 28: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

アプリケーシ ョ ンの作成

Dhrystone ベンチマークの考え方を踏襲するには、--no_inline および --no_multifile オプシ ョ ンが必要です。

• 関数のインライン化を無効にするには、--no_inline が必要です。

Dhrystone ではプロシージャをマージしません。

• マルチファ イルのコンパイルを無効にするには、--no_multifile が必

要です。 Dhrystone では 2 つのソースファ イルを別々にコンパイル

する必要があ り ます。

以下のオプシ ョ ンも、 Dhrystone ビルドファ イルのビルドに使用されま

す。

-W すべての警告メ ッセージを無効にするよ うにコンパ

イラに指示します。

-DMSC_CLOCK タイ ミ ングの測定に C ラ イブラ リ関数 clock() を使用

するよ うにコンパイラに指示します。

コンパイラオプシ ョ ンの詳細については、 『コンパイラ リ ファレンスガイ ド』 の 「第 2 章 コンパイラのコマンド ラ インオプシ ョ ン」 の章を参

照して下さい。

注 --arm は、 デフォルトのコンパイラオプシ ョ ンです。 詳細については、

「「ARM コードのコンパイル」」 を参照して下さい。

2. ファ イルを リ ンク します。 「ARM リ ンカの使用」 (ページ 2-7) を参照し

て下さい。

3. RealView Debugger などの互換性のあるデバッガを使用して、 イ メージ

をロード して実行します。

dhry_1.c と dhry_2.c の内容、 および Dhrystone のパフォーマンスの計算方法の

詳細については、 サンプル付属の readme.txt ファ イルを参照して下さい。

2.2.2 ARM コードのコンパイル

以下のコンパイラオプシ ョ ンを使用する と、 ARM コードが生成されます。

--arm Tnumb コードではなく ARM コードを優先して生成するよ うにコ

ンパイラに指示します。 ただし、 #pragma thumb を使用する と、 こ

のオプシ ョ ンはオーバーライ ド されます。 これはデフォルトのコンパイラオプシ ョ ンです。

2-4 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 29: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

アプリケーシ ョ ンの作成

--arm_only ARM コードのみを生成するよ うにコンパイラに指示します。 コ

ンパイラは、 Thumb コードがターゲッ ト アーキテクチャに存在

しない場合と同様に動作します。 #pragma thumb 宣言は無視されま

す。

関連項目

• 『コンパイラユーザガイ ド』 の 「#pragma thumb」 (ページ 4-79)

• 『コンパイラ リ ファレンスガイ ド』 の 「--arm」 (ページ 2-9)

• 『コンパイラ リ ファレンスガイ ド』 の 「--arm_only」 (ページ 2-17)

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 2-5Non-Confidential

Page 30: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

アプリケーシ ョ ンの作成

2.2.3 Thumb コードのコンパイル

Thumb バージ ョ ンをビルドするには、 以下のコマンドを使用します。

armcc --thumb ...

各項目には以下の意味があ り ます。

--thumb ARM コードではなく Thumb コードを優先して生成するよ

うにコンパイラに指示します。 ただし、 #pragma arm を使用

する と、 このオプシ ョ ンはオーバーライ ド されます。

関連項目

• 『コンパイラユーザガイ ド』 の 「#pragma arm」 (ページ 4-63)

• 『コンパイラ リ ファレンスガイ ド』 の 「--thumb」 (ページ 2-136)

2-6 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 31: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

アプリケーシ ョ ンの作成

2.3 ARM リンカの使用

リ ンカは、 複数のオブジェク ト ファ イルの内容をオブジェク ト ラ イブラ リの選択した部分と結合して、 イ メージファ イルまたはオブジェク ト ファ イルを生成します。

通常、 ARM リ ンカを起動するには以下のよ うに入力します。

armlink [options] file_1 ... file_n

詳細については、 『 リ ンカユーザガイ ド』 の 「第 2 章 ARM リ ンカの使い方」

の章を参照して下さい。

2.3.1 Dhrystone サンプルのリンク

Dhrystone サンプルプログラムのオブジェク ト ファ イルを リ ンクするには、 次

のコマンドを使用します。

armlink dhry_1.o dhry_2.o -o dhrystone.axf --info totals

各項目には以下の意味があ り ます。

-o 出力ファイルと して dhrystone.axf を指定します。

--info totals 入力オブジェク ト と ラ イブラ リについて、 コード とデータ

のサイズの合計を表示するよ うに リ ンカに指示します。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 2-7Non-Confidential

Page 32: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

アプリケーシ ョ ンの作成

2.4 ARM アセンブラの使用

ARM アセンブラ (armasm) を使用するための基本的な構文を以下に示します。

armasm [options] inputfile

例えば、 myfile.s とい う ファ イル内のコードをアセンブルし、 生成されるオブ

ジェク ト ファ イル内にデバッグ情報を含めるには、 以下のよ うに入力します。

armasm --debug myfile.s

これによ り、 myfile.o とい うオブジェク ト ファ イルが生成されます。

オプシ ョ ンと構文の詳細については、 『アセンブラガイ ド』 の 「コマンド構文」 (ページ 3-2) を参照して下さい。

2.4.1 アセンブラソースからのサンプルのビルド

サンプルディ レク ト リには、 アセンブ リ言語コードのサンプルがインス トールされています。 各サンプルには readme.txt ファ イルが付属しており、 サン

プルコードの説明と、 コードのビルド方法が記載されています。 例えば、 単純なプログラム word.s のコードは、 サンプルディ レク ト リの ...\asm にインス

トールされています。

サンプルをビルドするには

1. 以下のコマンドを使用して、 ソースファ イルをアセンブルします。

armasm --debug word.s

2. 以下のコマンドを使用して、 ファ イルを リ ンク します。

armlink word.o -o word.axf

3. RealView Debugger などの互換性のあるデバッガを使用して、 イ メージ

をロード してテス ト します。

プログラムをステップスルーし、 レジスタがどのよ うに変更されるかを調べます。 この方法の詳細については、 デバッガのマニュアルを参照して下さい。

2-8 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 33: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

アプリケーシ ョ ンの作成

2.5 fromelf ユーティ リテ ィの使用

ARM fromelf ユーティ リ テ ィには以下の特徴があ り ます。

• ELF 実行可能形式の実行可能イ メージを他のファイル形式に変換しま

す。

• 出力ファ イル内にデバッグ情報を含めるかど うかを制御します。

• ELF イ メージや ELF オブジェク ト ファ イルを逆アセンブルします。

• サードパーティに配信されるイ メージとオブジェク トの知的所有権を保護します。

• ELF イ メージや ELF オブジェク ト ファ イルに関する情報を出力します。

詳細については、 『ユーティ リ ティガイ ド』 の 「第 2 章 fromelf ユーティ リ

ティの使用」 の章を参照して下さい。

2.5.1 fromelf サンプルの使用

以下に、 fromelf ユーティ リ ティの使用例を示します。

fromelf --text -c -s --output=outfile.lst infile.axf

逆アセンブルされたコード と ELF イ メージのシンボルテーブル

を含むプレーンテキス ト形式の出力ファイルを生成します。

fromelf --bin --16x2 --output=outfile.bin infile.axf

2 バンク、 16 ビッ ト メモ リ幅のメモ リ コンフ ィギュレーシ ョ ンを

持つターゲッ ト システム向けに、 バイナリ形式で 2 つのファ イル

(outfile0.bin および outfile1.bin) を生成します。

2 番目の使用例で生成される出力ファ イルは、 フラ ッシュ メモ リデバイスへ

の直接書き込みに適しています。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 2-9Non-Confidential

Page 34: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

アプリケーシ ョ ンの作成

2.6 ARM Workbench IDE の使用

ARM Workbench IDE によ り、 グラフ ィカルユーザインタフェースを使用して

ソフ ト ウェア開発プロジェク ト を管理できます。 ARM Workbench は、 ソフ ト

ウェア開発とすべての RealView ツールのコンパイルおよびデバッグテク ノ ロ

ジが組み合わされた統合開発環境を実現します。 このワークベンチには、 いくつかの作業プロジェク トが一式、 試用サンプルと して用意されています。これらのサンプルプロジェク ト を使用するには、 ワークベンチを起動し、 サンプルをワークスペースにインポートする必要があ り ます。 詳細については、『ARM Workbench IDE ユーザガイ ド』 を参照して下さい。

2-10 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 35: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

第 3 章 RVCT v4.0 と RVCT v3.1 の相違点

本章では、 ARM® RealView® Compilation Tools (RVCT) v4.0 と RVCT v3.1 の主

な相違点について説明します。 以下のセクシ ョ ンから構成されています。

• 「RealView Compilation Tools v4.0 の概要」 (ページ 3-2)

• 「RVCT v4.0 のドキュ メン トの変更点」 (ページ 3-3)

• 「RVCT v4.0 における ARM コンパイラの変更点」 (ページ 3-4)

• 「RVCT v4.0 におけるライブラ リサポートの変更点」 (ページ 3-7)

• 「RVCT v4.0 における ARM リ ンカの変更点」 (ページ 3-8)

• 「RVCT v4.0 における ARM アセンブラの変更点」 (ページ 3-9)

• 「RVCT v4.0 における fromelf ユーティ リ ティの変更点」 (ページ 3-10)

• 「RVCT v4.0 での使用が制限される機能」 (ページ 3-12)

• 「RVCT v4.0 で廃止された機能」 (ページ 3-13)

• 「RVCT v4.0 と従来のオブジェク トおよびライブラ リ との互換性」 (ペー

ジ 3-14)

RVCT の以前のリ リース間の相違点については、 「付録 A 以前のリ リースにつ

いて」 を参照して下さい。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 3-1Non-Confidential

Page 36: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

3.1 RealView Compilation Tools v4.0 の概要

RVCT v4.0 と RVCT v3.1 の も重要な相違点を以下に示します。

• Cortex™-A9 (RVDS Professional エディシ ョ ンのみ) および Cortex-R4F プロセッサがサポート されました。 サポート されているアーキテクチャおよびプロセッサの詳しいリ ス ト を参照するには、 --cpu=list コマンド ラ

インオプシ ョ ンを使用して下さい。

• RVCT および CodeSourcery ツールを使用した Linux アプリ ケーシ ョ ンの

ビルドのサポートが強化されました。

• シンボルの可視性が強化されました。

• fromelf 機能が強化されました。

• リ ンカのコールグラフ機能が強化されました。

• 事前リ ンクに適したイ メージの生成がサポート されました。

• アーキテクチャを認識した逆アセンブ リがサポート されました。

• Cortex™-M3 プロセッサの初期のビッ トバンディングがサポート されまし

た。

• Cortex™-M1 プロセッサの浮動小数点性能が改善されました。

• コード 適化が強化されました。

• プロファ イ ラによる 適化がサポート されました。

• リ ンク時のコード生成がサポート されました。

3-2 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 37: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

3.2 RVCT v4.0 のドキュメン トの変更点

RVCT v4.0 ではドキュ メン トに以下の変更が加えられました。

• 『 リ ンカ / ユーティ リ ティガイ ド』 の内容が以下のマニュアルに分割さ

れました。

— リ ンカユーザガイ ド

— リ ンカ リ ファレンスガイ ド

— ユーティ リ ティガイ ド

• 『NEON™ ベク トル化コンパイラガイ ド』 が、 『コンパイラユーザガイ ド』

と 『コンパイラ リ ファレンスガイ ド』 に組み込まれました。

• 『デベロ ッパガイ ド』 が 新の ARM アーキテクチャおよびプロセッサを

反映して再編成され、 更新されました。

• --licretry オプシ ョ ンの説明が記載されました。 このオプシ ョ ンは、

ARM アセンブラ、 ARM コンパイラ、 ARM リ ンカ、 および fromelf ユー

ティ リ ティでサポート されています。

• すべてのドキュ メン トが、 関連ツールの機能を反映して更新されました。

この リ リースのツールに加えられた変更の詳細については、 本章の後半のセクシ ョ ンを参照して下さい。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 3-3Non-Confidential

Page 38: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

3.3 RVCT v4.0 における ARM コンパイラの変更点

RVCT v4.0 ではコンパイラに以下の変更が加えられました。

• Cortex-A9 および Cortex-R4F プロセッサについて --cpu=Cortex-A9 および --cpu=Cortex-R4F スイ ッチを使用できるよ うにな り ました。 『コンパイラ

リ ファレンスガイ ド』 の 「コマンド ラ インオプシ ョ ン」 (ページ 2-2)を参照して下さい。

• 多くの新しい組み込み関数が追加されました。 『コンパイラユーザガイド』 の 「コンパイラ組み込み関数」 (ページ 4-2) を参照して下さい。

• ARM コードのみを出力し、 #pragma thumb 宣言を無視するよ うにコンパイ

ラに指示する --arm_only コマンド ラ インオプシ ョ ンが追加されました。

『コンパイラ リ ファレンスガイ ド』 の 「コマンド ラインオプシ ョ ン」 (ページ 2-2) を参照して下さい。

• Linux アプリ ケーシ ョ ンのビルドに役立つ以下のコマンド ラ インオプ

シ ョ ンが追加されました。

— --arm_linux

— --arm_linux_config_file

— --arm_linux_configure

— --arm_linux_paths

— --configure_cpp_headers

— --configure_extra_includes

— --configure_extra_libraries

— --configure_gcc

— --configure_gld

— --configure_sysroot

— --shared

— --translate_g++

— --translate_gcc

— --translate_gld

• --fpu コマンド ラ インオプシ ョ ンに、 以下のオプシ ョ ンが追加されまし

た。

— vfpv3_fp16

— vfpv3_d16

— vfpv3_d16_fp16

3-4 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 39: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

— softvfp+vfpv3_fp16

— softvfp+vfpv3_d16

— softvfp+vfpv3_d16_fp16

対応する事前定義のマクロも追加されました。 『コンパイラユーザガイド』 の 「浮動小数点演算の使用」 (ページ 5-36) を参照して下さい。

• Cortex-M3 プロセッサのビッ トバンディングを可能にするため __attribute__((bitband)) 型属性が追加されました。 『コンパイラ リ ファレ

ンスガイ ド』 の 「型属性」 (ページ 4-47) を参照して下さい。

• Cortex-M1 プロセッサの浮動小数点性能が改善されました。 単精度演算

は 6 倍以上、 倍精度演算は 3.5 倍以上速度が改善されました。

• 明示的または暗黙的に dllexport とマーク されたオブジェク トおよび機

能に使用される ELF シンボルの可視性が変更されました。 RVCT v3.1 では STV_DEFAULT セクシ ョ ン (プ リエンプティブ) で定義されるシンボル

が、 RVCT v4.0 では STV_PROTECTED セクシ ョ ン (エクスポート され非プリ

エンプティブ) で定義されます。 ただし、 COMDAT セクシ ョ ンで定義され

るシンボルはそのまま STV_DEFAULT セクシ ョ ンで定義されます。

--no_hide_all コンパイラオプシ ョ ンは引き続き、 STV_HIDDEN ではなく STV_DEFAULT シンボルを可視化するので、 シンボルをエクスポートするこ

と と同義ではなくな り ます。

• 新しい --retain コンパイラオプシ ョ ンを使用する と、 コンパイラが実行

するコード変換を制限できます。 例えば、 インライン関数が未使用の場合、 それらを削除しないよ うにするこ とができます。 以下の属性も用意されています。

— __attribute__((notailcall))

— __attribute__((nomerge))

『コンパイラ リ ファレンスガイ ド』 の 「--retain=option」 (ページ 2-126) を参照して下さい。

『コンパイラ リ ファレンスガイ ド』 の 「関数属性」 (ページ 4-35) を参

照して下さい。

• プロファ イラによる 適化では、 ARM Profiler によって生成されたアプ

リ ケーシ ョ ンプロファ イルを利用します。 新しい --profile オプシ ョ ン

を使用してコンパイラやリ ンカにプロファ イルを入力する と、 サイズが小さ くパフォーマンスの優れたコードを生成できます。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 3-5Non-Confidential

Page 40: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

• 新しい --ltgc コンパイラおよびリ ンカオプシ ョ ンを使用する と リ ンク時

のコード生成を実行できるので、 以下の 適化が実現されます。

— モジュールをまたがったインライン化によるパフォーマンスの向上

— ベースアドレスの共有によるコードサイズの縮小

詳細については、 『コンパイラユーザガイ ド』 の 「関数のインライン展開」 (ページ 5-20) を参照して下さい。

• その他にも、 次のコマンド ラ インオプシ ョ ンが追加されました。

— --compatible

— --device

— --fp16_format

— --library_interface=rvct_c90

— --licretry

• GNU ライブラ リヘッダファ イルとの互換性を確保する関数が追加され

ました。 『コンパイラ リ ファレンスガイ ド』 の 「GNU 組み込み関数」 (ページ 4-126) を参照して下さい。

3-6 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 41: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

3.4 RVCT v4.0 におけるライブラリサポートの変更点

マイ クロライブラ リ と標準ライブラ リ との機能的な相違点が縮小されました。ワイ ド文字 IO もサポート されています。詳細については、 『ラ イブラ リ / 浮動

小数点サポートガイ ド』 を参照して下さい。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 3-7Non-Confidential

Page 42: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

3.5 RVCT v4.0 における ARM リンカの変更点

RVCT v4.0 ではリ ンカに以下の変更が加えられました。

• 以下のコマンド ラ インオプシ ョ ンが追加されました。

--[no_]add_needed

--arm_only

--arm_linux

--[no_]combreloc

--device

--filtercomment

--info=visibility

--no_largeregions

--licretry

--ltcg

--max_open_files

--[no_]muldefweak

--[no_]prelink_support

--profile

--section_index_display=type

以下も参照して下さい。

• 『 リ ンカユーザガイ ド』 の 「コマンド ラ インオプシ ョ ンの使用」 (ペー

ジ 2-7)

• 『 リ ンカ リ ファレンスガイ ド』 の 「第 2 章 リ ンカコマンド ラ インオプ

シ ョ ン」

3-8 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 43: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

3.6 RVCT v4.0 における ARM アセンブラの変更点

RVCT v4.0 ではアセンブラに以下の変更が加えられました。

• 以下の NEON™ 命令と VFP 命令が追加されました。

— 半精度拡張を備えた VCVT

— 半精度拡張を備えた VCVTB および VCVTT

『アセンブラガイ ド』 の 「NEON 汎用データ処理命令」 (ページ 5-43) お

よび 「VFP 命令」 (ページ 5-111) を参照して下さい。

• Cortex-A9 をサポートするため PLDW 命令が追加されました。 詳細につい

ては、 『アセンブラガイ ド』 の 「PLD、 PLDW、 PLI」 (ページ 4-26) を

参照して下さい。

• 以下のディ レクティブで、 シンボル型がサポート されました。

— EXPORT

— EXTERN

— GLOBAL

— IMPORT

• 以下のコマンド ラインスイ ッチが追加されました。

— --arm_only

— --cpreproc

— --device

— --licretry

詳細については、 『アセンブラガイ ド』 の 「第 3 章 アセンブラに関する

参考情報」 の章を参照して下さい。

『アセンブラガイ ド』 の 「一般的な情報」 (ページ 5-15) も参照して下さい。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 3-9Non-Confidential

Page 44: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

3.7 RVCT v4.0 における fromelf ユーティ リテ ィの変更点

RVCT v4.0 では fromelf ユーティ リ テ ィに以下のオプシ ョ ンが追加されまし

た。

• --base

• --bincombined

• --bincombined_base

• --bincombined_padding

• --cad

• --cadcombined

• --compare

• --cpu

• --datasymbols

• --device

• --disassemble

• --emit

• --fpu

• --globalize

• --hide

• --hide_and_localize

• --ignore_section

• --ignore_symbol

• --info=instruction_usage

• --in_place

• --interleave

• --licretry

• --localize

• --privacy

• --qualify

• --reinitialize_workdir

• --relax_section

• --relax_symbol

• --rename

• --show

• --show_and_globalize

• --source_directory

3-10 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 45: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

• --strip=symbols

• --strip=localsymbols

• --workdir

以前は説明されていなかったオプシ ョ ン --text -w の説明が記載されました。

アーキテクチャを認識した逆アセンブリがサポート されました。

詳細については、 『ユーティ リ ティガイ ド』 の 「第 2 章 fromelf ユーティ リ

ティの使用」 の章を参照して下さい。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 3-11Non-Confidential

Page 46: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

3.8 RVCT v4.0 での使用が制限される機能

RVCT v4.0 では以下の機能の使用が制限されています。

• --memaccess コンパイラオプシ ョ ンの使用が制限されています。

• 以下の mathlib 関数の使用が制限されています。

— gamma()

— gamma_r()

— lgamma_r()

— scalb()

— significand()

• 以下の Bessel 関数の使用が制限されています。

— j0()

— j1()

— jn()

— y0()

— y1()

— yn()

• ARM アセンブラオプシ ョ ン -O。 小文字ではなく、 大文字を使用します。

3-12 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 47: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

3.9 RVCT v4.0 で廃止された機能

RVCT v4.0 では以下の機能が廃止されています。

• 廃止されたツールは以下のとおりです。

— armcpp

— tcc

— tcpp

メークファ イルでの armcpp、 tcc、 または tcpp への参照は、 armcc --cpp、

armcc --thumb、 armcc --thumb --cpp にそれぞれ変更する必要があ り ます。

• C マクロを使用したロケールと CTYPE のカスタマイズは廃止されまし

た。

• ARM アセンブラオプシ ョ ン -D (--depend と同義) が廃止されました。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. 3-13Non-Confidential

Page 48: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

RVCT v4.0 と RVCT v3.1 の相違点

3.10 RVCT v4.0 と従来のオブジェク トおよびライブラリ との互換性

--apcs /adsabi を使用してコードをビルドせず、 RVCT v4.0 リ ンカおよび C/C++ ラ イブラ リ を使用している場合、 RVCT v2.x および v3.x オブジェク ト /ラ イブラ リ コードの下位互換性がサポート されます。 ただし、 上位互換性は保証されていません。

以上のよ うな制限事項があるため、 ユーザやサードパーティによって提供されるライブラ リ を含むプロジェク ト全体を RVCT v4.0 を使用して再ビルドす

るこ とをお勧めします。 これは、 潜在的な非互換性の問題を回避するためと、適化や拡張機能、 RVCT v4.0 が提供する新機能を十分に活用するためです。

3-14 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 49: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

付録 A 以前のリ リースについて

この付録では、 ARM® RealView® Compilation Tools (RVCT) の以前のリ リース

間の主な相違点について説明します。

以下のセクシ ョ ンから構成されています。

• 「RVCT v3.1 と RVCT v3.0 の相違点」 (ページ A-2)

• 「RVCT v3.0 と RVCT v2.2 の相違点」 (ページ A-12)

• 「RVCT v2.2 SP1 と RVCT v2.2 の相違点」 (ページ A-24)

• 「RVCT v2.2 と RVCT v2.1 の相違点」 (ページ A-26)

• 「RVCT v2.1 と RVCT v2.0 の相違点」 (ページ A-39)

• 「RVCT v2.0 と RVCT v1.2 の相違点」 (ページ A-44)

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-1Non-Confidential

Page 50: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.1 RVCT v3.1 と RVCT v3.0 の相違点

このセクシ ョ ンでは、 RVCT v3.1 と RVCT v3.0 との間の相違点について説明

します。

A.1.1 RVCT v3.1 の概要

• RVCT v3.1 では、 以下の新しい --cpu オプシ ョ ンがサポート されました。

— ARMv7 は認定された ARM アーキテクチャではあ り ません。

--cpu=7 は、 ARMv7-A、 ARMv7-R、 および ARMv7-M のすべての

アーキテクチャに共通の機能を示します。 すなわち、 --cpu=7 と と

もに使用される機能が ARMv7-A、 ARMv7-R、 ARMv7-M のすべて

のアーキテクチャ上に存在します。

— Cortex™ プロセッサ

--cpu=Cortex-R4--cpu=Cortex-M1--Cortex-A8NoNEON

— Marvell Feroceon プロセッサ --cpu=88FRxxx

サポート されるすべてのアーキテクチャ とプロセッサのリ ス ト を参照するには、 --cpu=list を使用します。 詳細については、 『コンパイラ リ ファ

レンスガイ ド』 の 「--cpu=list」 (ページ 2-34) および

「--cpu=name」 (ページ 2-35) を参照して下さい。

• RVCT v3.1 では、 オプシ ョ ン --apcs=/adsabi が使用できなくな り ました。

ADS 互換オブジェク トのコンパイルおよび古い ADS オブジェク ト と ラ

イブラ リの リ ンク も実行できな くな り ました。

• RVCT v3.1 では、 C99 言語が完全にサポート されています (複素数と ワ

イ ド I/O を除く)。 詳細については、 『コンパイラユーザガイ ド』 の

「C99 の新機能」 (ページ 5-51) を参照して下さい。

• RVCT v3.1 では、 NEON™ テク ノ ロジが完全にサポート されています。

詳細については、 『コンパイラユーザガイ ド』 の 「第 3 章 NEON ベク ト

ル化コンパイラの使用」 の章および 「NEON コンパイラ組み込み関数」 (ページ 4-12) を参照して下さい。

• RVCT v3.1 では、 システムの深部に組み込まれ、 極めて小容量のメモ リ

に収める必要があるアプ リ ケーシ ョ ンで使用するために、 標準的な C ライブラ リの代わりに C マイ クロラ イブラ リ (microlib) が用意されてい

A-2 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 51: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

ます。 microlib は ISO C 標準に完全には準拠していません。 詳細につい

ては、 『ラ イブラ リ / 浮動小数点サポートガイ ド』 の 「第 3 章 C マイ ク

ロライブラ リ 」 の章を参照して下さい。

• RVCT v3.1 では、 ロケール関数と CTYPE 関数をカスタマイズするため

のアセンブラマク ロが用意されています。 詳細については、 『ラ イブラリ / 浮動小数点サポートガイ ド』 の 「アセンブラマクロによるロケール

と CTYPE のカスタマイズ」 (ページ 2-51) を参照して下さい。

• RVCT v3.1 では、 固有のコンパイラ組み込み関数によって、 C および C++ で記述された ARM アーキテクチャベースのプロセッサの低レベル

機能に簡単にアクセスできます。 詳細については、 『コンパイラユーザガイ ド』 の 「命令のコンパイラ組み込み関数」 (ページ 4-4) を参照し

て下さい。

• RVCT v3.1 では、 ETSI コンパイラ組み込み関数もサポート されていま

す。 詳細については、 『コンパイラユーザガイ ド』 の 「ETSI の基本操

作」 (ページ 4-7) を参照して下さい。

• RVCT v3.1 では、 C55x コンパイラ組み込み関数もサポート されていま

す。 詳細については、 『コンパイラユーザガイ ド』 の 「TI C55x コンパイ

ラ組み込み関数」 (ページ 4-10) を参照して下さい。

• RVCT v3.1 では、 コールグラフ、 スキャ ッ タロードファ イル、 および実

行領域へのセクシ ョ ン配置のサポート も強化されました。 詳細については、 『 リ ンカ リ ファレンスガイ ド』 の 「--[no_]callgraph」 (ページ 2-8) を参照して下さい。

• RVCT v3.1 では、 配信可能なイ メージおよびオブジェク トの知的所有権

の保護が強化されました。詳細については、 「RVCT v3.1 における fromelf ユーティ リ ティの変更点」 (ページ A-11) を参照して下さい。

• RVCT v3.1 には、 ファ イルパスの冗長なパス名情報の除外を制御できる

オプシ ョ ンが用意されています。 このオプシ ョ ンは、 ARM コンパイラ、

リ ンカ、 およびアセンブラで使用するこ とができます。 詳細については、 『 リ ンカ リ ファレンスガイ ド』 の 「--[no_]reduce_paths」 (ページ 2-52) を参照して下さい。

• RVDS v3.1 には、 主なプロジェク ト管理機能と して Eclipse IDE が含まれ

ています。 Eclipse Plug-in for RVDS には、 RVCT のすべてのオプシ ョ ンを

設定するための統合コンフ ィギュレーシ ョ ンパネルが用意されています。 詳細については、 『RealView Development Suite Eclipse Plug-in ユーザ

ガイ ド』 を参照して下さい。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-3Non-Confidential

Page 52: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• RVDS v3.1 では、 --verbose コマンド ラインオプシ ョ ンで、 stderr ではな

く stdout に診断情報が出力されるよ うに変更されました。 この診断情報

をファイルに転送するには、 --errors ではなく --list を使用する必要が

あ り ます。

A.1.2 RVCT v3.1 で廃止された機能

RVCT v3.1 では、 以下の相違点に注意して下さい。

• Solaris プラ ッ ト フォームは、 RVCT v3.1 ではサポート されていません。

• Red Hat Linux Enterprise v3 32 ビッ ト ホス トプラ ッ ト フォームは、 RVCT v3.1 ではサポート されていません。

• コンパイラオプシ ョ ン --apcs=/adsabi は、RVCT v3.1 ではサポート されて

いません。

• RVCT v3.0 で使用が制限されていた機能はすべて、 RVCT v3.1 では使用

されなくな り ました。 詳細については、 「RVCT v3.0 での使用が制限され

る機能」 (ページ A-15) を参照して下さい。

A.1.3 RVCT v3.1 での使用が制限される機能

RVCT v3.1 では、 以下の相違点に注意して下さい。

• 以下のツール名は使用が制限されています。

— armcpp

— tcc

— tcpp

• .ac や .tc などのファ イル拡張子を使用して命令セッ ト を切り替える機能

は使用が制限されています。

• ARMv7-A、 ARMv7-R、 ARMv7-M およびそれ以降のアーキテクチャ向

けにコンパイルする と きは、 インラインアセンブラの使用が制限されます。 ARMv7-A と ARMv7-R の場合、 コンパイラによって警告が生成され

ます。 ARMv6-M と ARMv7-M の場合、 Thumb コードの生成時にコンパ

イラによってエラーが生成されます。

• 以下のオプシ ョ ンは使用が制限されています。

— --split_ldm

— --memaccess

A-4 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 53: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• C マクロを使用したロケールと CTYPE のカスタマイズは、 使用が制限

されています。

• fromelf オプシ ョ ン --no_comment_section は使用が制限され、 説明はド

キュ メン トに記載されていません。 代わりに、--strip=comment オプシ ョ ン

を使用して下さい。

• 以下のアセンブラ機能は使用が制限されています。

— VFP ベクタモードは新しいコードでは使用が制限され、 ベクタ表

記は統一アセンブラ言語ではサポート されていません。 ベク タ表記を使用するには、 古い VFP ニーモニッ クを使用する必要があ り

ます。

— 新の CPU では、 ユーザモードでアクセス可能なビッ トにアクセ

スするための CPSR の使用が制限されています。 この場合は、

APSR を使用して下さい。

— ARMv6T2 以降の STC および STC2 での PC 相対アドレシングの使用

が制限されています。

— --checkreglist (代わりに --diag_warning 1206 を使用して下さい)。

— レジスタ リ ス ト内のベースレジスタおよびライ トバッ クを指定した 16 ビッ ト LDM および STM の使用が制限されています。

A.1.4 RVCT v3.1 における ARM コンパイラの変更点

RVCT v3.1 のコンパイラでは、 以下の相違点に注意して下さい。

• --cpu コマンド ラ インオプシ ョ ンでは、 新しいアーキテクチャおよびプ

ロセッサがサポート されています。 詳細については、 「RVCT v3.1 の概

要」 (ページ A-2) を参照して下さい。

• C コードまたは C++ コードから直接 NEON™ ベクタ命令を生成するため

の --vectorize コマンド ラ インオプシ ョ ン。 詳細については、 『コンパイ

ラ リ ファレンスガイ ド』 の 「--vectorize, --no_vectorize」 (ペー

ジ 2-146) を参照して下さい。

注 このオプシ ョ ンを使用するには、 NEON ベク トル化コンパイラ ライセン

スが必要です。 このライセンスは、 RVDS Professional エディシ ョ ンに付

属しています。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-5Non-Confidential

Page 54: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• --c99 コマンド ラ インオプシ ョ ンでは、 C99 言語が完全にサポート され

ています (複素数と ワイ ド I/O を除く)。

• 関連するランタイムライブラ リ を選択するための --library_type=lib コマ

ンド ラインオプシ ョ ン。 詳細については、 『コンパイラ リ ファレンスガイ ド』 の 「--library_type=lib」 (ページ 2-90) を参照して下さい。

• 小容量のグローバル ZI データ項目の配置を制御するための --bss_threshold=num コマンド ラ インオプシ ョ ン。

• 適化用の診断メ ッセージを制御するための --diag_suppress=optimizations および --diag_warning=optimizations コマンド

ラ インオプシ ョ ン。

• 可変長配列のサポート を制御するための --[no_]vla コマンド ラ インオプ

シ ョ ン。

• wchar_t の型を変更するための --wchar16 および --wchar32 コマンド ラ イン

オプシ ョ ン。

• --apcs=/adsabi は、 RVCT v3.1 ではサポート されていません。

• ファ イルパスの冗長なパス名情報の除外を制御できる --[no_]reduce_paths オプシ ョ ン。

• C および C++ から SIMD 命令を生成できる NEON™ 組み込み関数が用意

されています。

• 選択した Texas Instruments C55x コンパイラ組み込み関数のエミ ュレー

シ ョ ンがサポート されています。

• スピーチコーデッ クを実装するための ETSI の基本操作がサポート され

ています。

• __attribute__((section("name")))。 --autoat コマンド ラ インオプシ ョ ンで

使用する配置アドレスをエンコード します。

• 固有のコンパイラ組み込み関数によって、 C および C++ で記述された ARM アーキテクチャベースのプロセッサの低レベル機能に簡単にアク

セスできます。

A-6 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 55: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.1.5 RVCT v3.1 におけるライブラリサポートの変更点

RVCT v3.1 のライブラ リサポートでは、 以下の相違点に注意して下さい。

• RVCT v3.1 には、 新しいライブラ リ命名規則があ り ます。

• RVCT v3.1 では、 システムの深部に組み込まれ、 極めて小容量のメモ リ

に収める必要があるアプリ ケーシ ョ ンで使用するライブラ リがサポートされています。 microlib に新たに導入された一連の関数は、 標準に完全

には準拠していませんが、 コードサイズが も小さ くなるよ うに十分に適化されています。

• RVCT v3.1 では、 ロケール関数と CTYPE 関数をカスタマイズするため

のアセンブラマク ロが用意されています。

以下も参照して下さい。

• RVCT ラ イブラ リ / 浮動小数点サポートガイ ド

A.1.6 RVCT v3.1 における ARM リンカの変更点

RVCT v3.1 のリ ンカでは、 以下の相違点に注意して下さい。

• イ メージコードおよびデータサイズを要約するための --info summarysizes 属性。

• --cpu=name コマンド ラ インオプシ ョ ンを使用する と、選択した ARM プロ

セッサまたはアーキテクチャの上限を指定できます。

• --fpu=name コマンド ラ インオプシ ョ ンを使用する と、 選択した FPU アー

キテクチャの上限を指定できます。

• --bpabi コマンド ラ インオプシ ョ ンを使用する と、 BPABI 実行可能ファ

イルを生成できます。

• --dll コマンド ラ インオプシ ョ ンを使用する と、 BPABI DLL を生成でき

ます。

• --predefine="string" コマンド ラ インオプシ ョ ンを使用する と、 スキャ ッ

タファ イルの 初の行で指定されているプ リプロセッサにコマンドが渡されます。

• --[no_]reduce_paths オプシ ョ ンを使用する と、 ファ イルパスの冗長なパ

ス名情報の除外を制御できます。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-7Non-Confidential

Page 56: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• --autoat コマンド ラ インオプシ ョ ンを使用する と、 実行領域への __at セクシ ョ ンの自動配置を制御できます。

• --verbose コマンド ラ インオプシ ョ ンを使用する と、 stout に診断結果を

出力できます。 この診断情報をファイルに転送するには、--list を使用

する必要があ り ます。 詳細については、 『 リ ンカ リ ファレンスガイ ド』の 「--verbose」 (ページ 2-68) を参照して下さい。

• __at セクシ ョ ンに変数を割り当てるには、

__attribute__((section("name"))) を使用してセクシ ョ ン名を明示的に指定

するか、 または __attribute__((at("name"))) を使用してセクシ ョ ン名を自

動的に設定します。 詳細については、 『 リ ンカユーザガイ ド』 の 「領域

アドレス とセクシ ョ ンアドレスの指定の例」 (ページ 5-9) を参照して

下さい。

• スキャ ッ タロードファ イルの境界調整のための ALIGN alignment 属性。

• 入力セクシ ョ ンを実行領域に割り当てる際の .ANYnum を使用した優先順

位付け。

• 実行領域の内容を処理するための属性

— ELF ファ イルのセクシ ョ ンを初期化するための ZEROPAD 属性。

— パディングバイ トの値を設定するための PADVALUE 属性。

— 値を含んでいる リ ンカ生成領域を作成するための FILL 属性。

• BPABI の異なるアドレシングモードに対応するテーブルを生成するため

の --pltgot=type、 --pltgot_opts=mode、 および --info pltgot コマンド ライ

ンオプシ ョ ン。

• 関連するランタイムライブラ リ を選択するための --library_type=lib コマ

ンド ラインオプシ ョ ン。 詳細については、 『コンパイラ リ ファレンスガイ ド』 の 「--library_type=lib」 (ページ 2-90) を参照して下さい。

• 以下のコールグラフオプシ ョ ン。

— --callgraph_file=filename は出力ファイルの名前を定義します。

— --callgraph_output=fmt は出力ファイルの種類を定義します。

— --cgfile=opt はコールグラフの内容を制御します。

— --cgsymbol=type はコールグラフの内容を制御します。

— --cgundefined=type はコールグラフの内容を制御します。

A-8 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 57: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• RVCT v3.1 のリ ンカは、 相対ベースアドレス時のロード領域の解釈が異

なっています。 以前のロード領域のゼロで初期化された (ZI) データを

考慮してロード領域のベースアドレスを調整するこ とはあ り ません。

例 A-1 に、 重複したデータを含むスキャ ッ タファ イルを示します。

例 A-1 LR2 の相対ベースアドレスを含むスキャッ タファイル

LR1 0x8000{

er_progbits +0{

*(+RO,+RW) ; Takes space in the Load Region}er_zi +0 {

*(+ZI) ; Takes no space in the Load Region}

}LR2 +0 ; Load Region follows immediately from LR1{

er_moreprogbits +0{

file1.o(+RO) ; Takes space in the Load Region}

}

RVCT v3.1 では、 データの重複が検出される とエラーメ ッセージが表示

されます。 これを回避するには、 LR2 のベースアドレスを計算するため

の式がスキャ ッ タファ イルに必要です。 例 A-2 に修正したスキャ ッ タ

ファ イルを示します。

例 A-2 LR2 のベースアドレスを計算したスキャッ タファイル

LR1 0x8000{

er_progbits +0{

*(+RO,+RW) ; Takes space in the Load Region}er_zi +0 {

*(+ZI) ; Takes no space in the Load Region}

}

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-9Non-Confidential

Page 58: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

LR2 ImageLimit(er_zi) ; Set the address of LR2 to limit of er_zi{

er_moreprogbits +0{

file1.o(+RO) ; Takes space in the Load Region}

}

A.1.7 RVCT v3.1 における ARM アセンブラの変更点

RVCT v3.1 のアセンブラでは、 以下の相違点に注意して下さい。

• --cpu コマンド ラ インオプシ ョ ンでは、 新しいアーキテクチャおよびプ

ロセッサがサポート されています。 詳細については、 「RVCT v3.1 の概

要」 (ページ A-2) を参照して下さい。

• 関連するランタイムライブラ リ を選択するための --library_type=lib コマ

ンド ラインオプシ ョ ン。

• ファ イルパスの冗長なパス名情報の除外を制御できる --[no_]reduce_paths オプシ ョ ン。

• CPSR のユーザモードビッ トには APSR を使用します。

• VFP ベクタモードは新しいコードでは使用が制限され、 ベク タ表記は統

合アセンブラ言語ではサポート されていません。

• Intel Wireless MMX2™ 命令がサポート されています。

• CODEALIGN 属性は、 AREA ディ レクティブで設定できます。

• --depend_format=string によって、 出力に依存するファ イルの形式が変更

されます。

• --no_code_gen オプシ ョ ンは、 --depend と と もに使用され、 オブジェク ト

ファ イルは生成されません。

• UND は新しいディ レクティブで、 アーキテクチャ上で定義されていない

命令をエンコード します。

詳細については、 『アセンブラガイ ド』 を参照して下さい。

A-10 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 59: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.1.8 RVCT v3.1 における fromelf ユーティ リテ ィの変更点

RVCT v3.1 では、 以下の相違点に注意して下さい。

• セクシ ョ ンの名前を変更するための --privacy コマンド ラ インオプシ ョ

ン。

• 配信可能なイ メージとオブジェク トの知的所有権を保護するための --strip コマンド ラ インオプシ ョ ン。

以下も参照して下さい。

• ユーティ リ ティガイ ド

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-11Non-Confidential

Page 60: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.2 RVCT v3.0 と RVCT v2.2 の相違点

このセクシ ョ ンでは、 RVCT v3.0 と RVCTv2.2 の相違点について説明します。

A.2.1 RVCT v3.0 における主な変更点

RVCT v3.0 では、 次の点が変更されました。

• RVCT v3.0 では、 以下の 2 つの ARMv7 アーキテクチャのプロファ イル

がサポート されます。

ARMv7-A

仮想 (MMU ベース) メモ リ システム向けの、 ARM 命令セッ

ト と Thumb-2 命令セッ ト をサポートするシステムに対応する、

Thumb®-2EE が指定されたアプリ ケーシ ョ ンプロファ イル。

ARMv7-M

Thumb-2 のみに対応するマイ ク ロコン ト ローラプロファ イル。

RVCT v3.0 では、 ARMv4 以降のすべての ARM アーキテクチャがサポー

ト されます。 ARMv4 よ り前のすべてのアーキテクチャ名は使用されな

くなったため、 サポート されていません。

• RVCT v3.0 では、 以下の 2 つの ARM Cortex™ プロセッサファ ミ リがサ

ポート されます。

— Cortex™-A8

— Cortex™-M3

サポート されるすべてのアーキテクチャ とプロセッサのリ ス ト を参照するには、 次のコマンドを使用します。

armcc --cpu list

• RVCT v3.0 では、 Advanced SIMD 拡張 (NEON™ テク ノ ロジと も呼ばれま

す) および VFPv3 とい う ARMv7 アーキテクチャの 2 つのコンポーネン

トが先行してサポート されます。 つま り、 多数の SIMD (単一命令複数

データ処理) 命令といくつかの VFPv3 命令を ARM 命令セッ ト と Thumb-2 命令セッ トの両方で使用できます。

NEON™ は、 信号処理アプリ ケーシ ョ ンおよび組み込みプロセッサを

ターゲッ トにした、 64 ビッ ト と 128 ビッ トのハイブ リ ッ ド SIMD テク ノ

ロジです。 NEON はプロセッサの一部と して実装されますが、 独自の実

行パイプラインと、 ARM のレジスタバンク とは別のレジスタバンクを

持ちます。 NEON 命令は、 ARM と Thumb-2 の両方で使用できます。

A-12 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 61: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

サポート されるすべての浮動小数点アーキテクチャのリ ス ト を参照するには、 次のコマンドを使用します。

armcc --fpu list

• RVCT v3.0 では、 ARMv7 用の Thumb-2 Execution Environment(Thumb-2EE) がサポート されます。 Thumb-2EE 命令セッ トは、

Thumb-2 をベースに、 動的に生成されるコードに合わせた変更や追加が

行われています。

Thumb-2EE 拡張機能によ り、 新しい命令セッ トの状態と して ThumbEE 状態が導入されます。 この状態の命令セッ トは、 Thumb-2 命令セッ ト と

ほぼ同一です。 ただし、 動作が変更された命令、 および新し く使用できるよ うになった命令があ り ます。

• ARM アセンブラを使用するこ とによ り、 Intel® ワイヤレス MMX™ テク

ノ ロジの命令をアセンブルし、 PXA270 プロセッサなどのコードを開発

できます。

• RVCT v3.0 では、 ARM アーキテクチャ用 ABI (基本標準) [BSABI] の

新のリ リースで必要と定義されているよ うに、 DWARF 3 (DWARF Debugging Standard バージ ョ ン 3) のデバッグテーブルが完全にサポート

されます。

DWARF 3 はデフォルトの形式で、 以下の内容を含んでいます。

— C++ ネームスペースのデバッグの完全なサポート

— デバッグ情報量の拡大

本リ リースのコンパイラおよびアセンブラは、 以下のよ うに動作します。

— 形式を指定しない場合は、 DWARF 3 が想定されます。

— --debug (-g) を指定する と、 デフォルトでは、 DWARF 3 が生成さ

れます。

コマンド ラインオプシ ョ ン --dwarf2 は、 下位互換性のために引き続きサ

ポート されます。

• ARM コンパイラおよびリ ンカでスレッ ド ローカル記憶域 (TLS) をサ

ポートするこ とによ り、 プログラムで複数のスレッ ドを使用できます。以下の 2 つの新しいキーワードを使用して、MPCore™ で TLS をサポート

できます。

— __declspec(thread)

— __thread

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-13Non-Confidential

Page 62: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• ARM コンパイラでは、 ループの展開など、 ハイレベルのスカラの 適

化が行われるよ うにな り ました。 これらの拡張機能は、-O3 を指定してコ

ンパイルする際に自動的に呼び出され、 小さなサイズのコードを加えるこ とによってパフォーマンスを大幅に向上できます。

• RVCT v3.0 では、 整数 (int または long long) をゼロで除算する と、 デ

フォルトでゼロが返されます。 これは、 実行時にエラーメ ッセージを表示してプログラムを終了していた以前の動作からの変更点です。

• RVCT v3.0 では、 エラーメ ッセージおよび警告メ ッセージに使用される

言語を変更できます。 例えば、 英語ベースのワークステーシ ョ ンで日本語のメ ッセージを表示するには、 次のコマンドを使用します。

--message_locale ja_JP

• 以前は ARM コンパイラでのみ使用できた --show_cmdline オプシ ョ ンが、

アセンブラ、 リ ンカ、 armar、 および fromelf でも使用できるよ うにな り

ました。 このオプシ ョ ンを使用する と、 コマンド ラ インがどのよ うに処理されたかを確認できます。 コマンドは正規化されて表示されます。 また、 via ファ イルの内容は展開されます。 ただし、 このコマンドを使用

してもコマンド ラ インの偶発的なエラーはト ラ ップされません。

• RVCT v3.0 では、 以下の環境変数が導入されます。

— RVCT30_CCOPT

— RVCT30_LINKOPT

— RVCT30_ASMOPT

この変数の値は、 RVCT ごとに、 必要に応じて、 コマンド文字列の先頭

に挿入されます。 環境変数で指定されたオプシ ョ ンは、 コマンド ラ インの引数でオーバーライ ドできます。

RVCT v3.0 で廃止された機能

RVCT v3.0 では、 次の点が変更されました。

• RVCT v2.2 で使用が制限されていたすべての機能およびオプシ ョ ンは、

RVCT v3.0 で廃止されました。 これらの機能およびオプシ ョ ンの リ ス ト

については、 『コンパイラユーザガイ ド』 の付録 A 「以前のコマンド ラ

インオプシ ョ ンの使用」 を参照して下さい。

• 1 つ前の RVCT のリ リースでは、 メ ッセージオプシ ョ ンを新しいリ リー

スに移行できるよ うにするため、 古いコンパイラオプシ ョ ンをサポートしていました。 v3.0 では、 これらのオプシ ョ ンは廃止されたため、 サ

A-14 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 63: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

ポート されていません。 詳細については、 『コンパイラユーザガイ ド』の付録 A 「以前のコマンド ラ インオプシ ョ ンの使用」 を参照して下さ

い。

• 複数行にまたがる文字列は ARM コンパイラでサポート されていません。

この動作は、 下位互換性のために、 これまで GNU モードでサポート さ

れていました。

• コンパイラ固有の以下のプラグマがサポート されな くな り ました。

— check_printf_formats、 check_scanf_formats、 および check_vprintf_formats

— [no_]debug

• ソフ ト ウェアスタ ッ クチェ ッ クのサポートが廃止されました。 本リ リースでは、 以下のコンパイラおよびアセンブラのオプシ ョ ンがサポート されていません。

— --apcs /swst

— --apcs /noswst

— --apcs /swstna

以下の項目は使用できなくな り ました。

— プラグマ [no_]check_stack

— 事前定義のマクロ __APCS_SWST

ソフ ト ウェアスタ ッ クチェ ッ クが行われたバージ ョ ンのライブラ リは提供されなくな り ました。

RVCT v3.0 での使用が制限される機能

RVCT v3.0 では、 次の点が変更されました。

• ARM コンパイラでは、 以前のバージ ョ ンの ARM Developer Suite™

(ADS) のアプ リ ケーシ ョ ンバイナリ インタフェース (ABI) と互換性

のあるコードをコンパイルするため、 オプシ ョ ン --apcs /adsabi がサ

ポート されます。 このオプシ ョ ンは RVCT 3.0 では現在使用が制限され

ていて、 RVCT 3.1 では廃止されています。

• 以下のアセンブラオプシ ョ ンは現在使用が制限されていて、 RVCT 3.1 で廃止されています。

— --no_cache

— --no_regs (代わりに --regnames=none を使用して下さい)

— --checkreglist (代わりに --diag_warning 1206 を使用して下さい)

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-15Non-Confidential

Page 64: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• セクシ ョ ン属性の修飾子 (RO、 RW、 ZI、 および DBG) と リ ンカオプシ ョ ン --remove の併用のサポートは、 現在制限されていて、 今後のリ リースで

廃止される予定です。

• C++ コンフ ィギュレーシ ョ ンオプシ ョ ン --dll_vtbl が、 新しいオプシ ョ

ン --export_all_vtbl に置き換わり ました。--dll_vtbl は、 現在使用が制限

されていて、 今後サポート されな くな り ます。

• --memaccess -UL41 のサポートは現在使用が制限されており、 将来のリ

リースでは廃止される予定です。 --memaccess -UL41 は --no_unaligned_access に置き換えられます。

• コンパイラオプシ ョ ン --depend_format=unix は --unix_depend_format に置き

換わり ました。 このオプシ ョ ンは現在使用が制限されていて、 今後のリリースで廃止される予定です。

• RVCT v3.0 では fromelf --text の構文が異なり ます。以下の形式は現在使

用が制限されていて、 今後のリ リースで廃止される予定です。

— fromelf --text=xx

— fromelf --text/xx

• ARM では、 __user_stack_slop 関数の使用をお勧めしません。 このオプ

シ ョ ンは現在使用が制限されていて、 今後のリ リースで廃止される予定です。

A.2.2 RVCT v3.0 における ARM コンパイラの変更点

RVCT v3.0 では、 次の点が変更されました。

• RVCT v3.0 の移植性の高い新機能の一部と して、 新しいコンパイラオプ

シ ョ ン --library_interface で、 コンパイラの出力が RVCT ラ イブラ リや AEABI 準拠のライブラ リ と連動するよ うに指定します。 例えば、 --library_interface=aeabi_glibc を使用して、 AEABI 準拠の GNU C ラ イ

ブラ リ と出力が連動するよ うに指定できます。

• ARM コンパイラでは、 スレッ ド ローカル記憶域 (TLS) をサポートす

るこ とによ り、 プログラムで複数のスレッ ドを使用できるよ うにな り ました。 TLS を使用する と、 各スレッ ドがグローバル変数を変更する場合

があ り ますが、 その変更は該当スレッ ドのみで認識されます。 以下の 2 つのキーワードが使用できるよ うにな り ました。

— __declspec(thread) は、 変数がスレッ ド ローカルで、 スレッ ドの保

存期間が設定されているこ とを示します。

A-16 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 65: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

— __thread は、 __declspec(thread) と同じ意味です。

• ARMv7 よ り前の ARM プロセッサでは、SWI 命令または SVC 命令を使用し

てセ ミ ホスティング呼び出しを行います。 ただし、 Cortex™-M3 プロセッ

サ用にコンパイルしている場合、 セ ミ ホスティングは BKPT 命令を使用し

て実装されます。

新しいコンパイラ組み込み関数 __semihost() を使用する と、 ターゲッ ト

アーキテクチャ とは関係のないセ ミ ホスティング呼び出しを C または C++ から行う こ とができます。

• ARM コンパイラでは、ARM 状態および Thumb 状態の両方で Cortex™-A8 プロセッサ用のコードを生成する組み込み関数を提供するこ とで、NEON™ テク ノ ロジをサポート します。

• ARM コンパイラでは、 フ ィードバッ ク 適化 (FDO : Feedback Directed Optimization) が実用的ではない場合に分岐予測情報を提供するために GCC builtin 関数 __builtin_expect がサポート されます。 この関数は、

GNU モードおよび ARM モードで使用できます。

• ARM コンパイラには、 オブジェク トのサイズを表示するための --info totals オプシ ョ ンがあ り ます。 このオプシ ョ ンを使用して、 コンパイル

されたオブジェク トのコード とデータ (RO データ、 RW データ、 ZI データ、 およびデバッグデータ) のサイズを確認します。

• ARM コンパイラには、 Windows 用の新しい --depend_format=string オプ

シ ョ ンがあ り ます。 これによ り、 UNIX の一部の make プログラムとの

互換性を確保するために、 出力に依存するファイルの形式が UNIX 形式

に変更されます。

• ARM コンパイラでは、C++ ファ イルの .cc 拡張子が認識されるよ うにな

り ました。 認識されない拡張子が、 filename.cmd のよ うに .c で始まる場

合は、 警告メ ッセージが表示されます。

• GNU コンパイラの拡張機能に対するサポートの一環と して、 armcc では、--gnu オプシ ョ ンの使用時に C と C++ 両方の条件を使用できます。条

件付きステート メン トの中間にあるオペランドは、 結果がテス ト と同じになる場合は省略できます。 例えば、 以下のよ うにな り ます。

i ? i : j

これは、 i が一度だけ評価されるよ うにテス トで値を変更する場合に

も役立ちます。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-17Non-Confidential

Page 66: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• RVCT v3.0 では、 POSIX 関数 wcstombs() でマルチバイ ト文字のシーケン

スをある配列から変換してその文字を別の配列に保存するためのコンパイラおよびライブラ リがサポート されます。

• ARM コンパイラでは、 オプシ ョ ン --unaligned_access がサポート されま

す (このオプシ ョ ンは、 現在使用が制限されているオプシ ョ ン --memaccess に代わるオプシ ョ ンです)。

• AAPCS では、 ビッ ト フ ィールドをデフォルトで符号なしの値にする必

要がなくな り ました。 これを受けて、 ビッ ト フ ィールドが符号付きであるこ とを指定する新しいオプシ ョ ン --signed_bitfields が追加されまし

た。 デフォルトは、--unsigned_bitfields です。

• ARM コンパイラでは、 書き込み先アドレスが不明なすべてのシンボル

について .directive セクシ ョ ンが作成されました。 この要件は、 ELF 標準メカニズムによって破棄されました。 そのため、 dllimport が指定され

たシンボルの動作が変更されるこ とがあ り ます。 以下に例を示します。

__declspec(dllimport) int f();int g() { return f(); }

この例では、 .directive セクシ ョ ンが生成されません。

• コンパイラには、 __user_initial_stackheap() と同じよ うに初期スタ ッ ク

およびヒープの場所を返す新しい __user_setup_stackheap() 関数が含まれ

ています。 テンポラ リ スタ ッ クについては要件がないので、__user_setup_stackheap() では、 __user_initial_stackheap() と比べてコード

サイズが小さ くな り ます。

• ARM コンパイラでは、 gcc でレポート される形式に一致する メ ッセージ

を表示するためのコマンド ラ インオプシ ョ ン --diag_style gnu がサポート

されるよ うにな り ました。 これは、 以前のリ リースで使用できる arm 形式および ide 形式に加えて新たに使用できるよ うになった形式です。

• 各関数の先頭にある組み込みアセンブラの状態は、 #pragma arm プラグマ

および #pragma thumb プラグマで変更されたよ うに、 コンパイラの呼び出

しで設定されています。

また、 組み込みアセンブラの状態は、 関数内部で変更できます (この状態は、 現在の関数内でのみ保持されます)。 これを行うには、 組み込みアセンブラ関数で、 明示的な ARM、 THUMB、 または CODE16 ディ レクティブ

を使用します。

A-18 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 67: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.2.3 RVCT v3.0 におけるライブラリサポートの変更点

RVCT v3.0 では、 次の点が変更されました。

• ARM アーキテクチャ用 C ライブラ リ ABI [CLIBABI] では、 コンパイラ _AEABI_PORTABILITY_LEVEL でチェッ ク される適合性のテス トについて定義

しています。 このテス ト を利用する と、 CLIBABI の他の実装に対する

コードの移植性を高めるこ とができます。

• ARM アーキテクチャ用 ABI (基本標準) [BSABI] の 新版では、

assert() マクロの定義の欠陥が修正され、 1 つの信号適合性の義務が導

入されています。 このマクロは、 新版で __aeabi_assert() と して定義

されています。 詳細については、 assert.h を参照して下さい。

• RVCT v3.0 には、 スレッ ドセーフな文字列関数 strlcpy および strlcat のライブラ リサポートが用意されています。

• RVCT v3.0 では、 新しいライブラ リによる __user_initial_stackheap() の実装が用意されています。 つま り、 ARM_LIB_STACK、 ARM_LIB_HEAP、

ARM_LIB_STACKHEAP などのディ レクティブが含まれた分散ロードファ イル

を使用する場合、 この関数を再実装する必要はあ り ません。

• RVCT v3.0 の新しいライブラ リ メカニズムでは、 コードで __use_no_heap や __use_no_semihosting などの __use_no_* シンボルを参照する際にシンボ

ルの競合が発生した場合、 よ り詳しいエラーメ ッセージが表示されます。

• POSIX に完全に準拠するために、 armar では、 直前に - がないコマンド ラ

インオプシ ョ ンが使用できなくな り ました。 例えば、 以下の形式のコマンドがある と します。

armar cru lib.a foo.o

この場合、 このコマンドは失敗します。 以前のバーシ ョ ンの RVCT で生

成したビルドスク リプ トやメークファ イルを使用している場合、 上記のコマンドの変更が必要になるこ とがあ り ます。

• armar では、 gcc でレポート される形式に一致する メ ッセージを表示する

ためのコマンド ラインオプシ ョ ン --diag_style gnu がサポート されるよ う

にな り ました。 これは、以前のリ リースで使用できる arm 形式および ide 形式に追加されています。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-19Non-Confidential

Page 68: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.2.4 RVCT v3.0 における ARM リンカの変更点

RVCT v3.0 では、 次の点が変更されました。

• 新リ リースの リ ンカでは、 SVr4 のイ メージおよび共有ライブラ リの

スレッ ド ローカル記憶域 (TLS) のみがサポート されます。 リ ンカの実

装の詳細については、 ARM アーキテクチャ用 ABI [ABI-addenda] の正

誤表および追捕表を参照して下さい。

• RVCT v3.0 には、 新しいリ ンカオプシ ョ ン --compress_debug があ り ます。

これによ り、 .debug_* セクシ ョ ンが強制的に圧縮されるため、 冗長性が

軽減され、 デバッグテーブルのサイズが改善されます。 ただし、--compress_debug オプシ ョ ンを使用する と、 リ ンク時間が長くな り ま

す。

• RVCT v3.0 には、 新しいリ ンカオプシ ョ ン --info libraries があ り ます。

これによ り、 リ ンクステージに対して自動的に選択されたすべてのライブラ リの完全パス名が出力されます。 このオプシ ョ ンを修飾子 --info_lib_prefix と共に使用する と、 特定のライブラ リに関する情報を

表示できます。

• RVCT v3.0 には、 新しいリ ンカオプシ ョ ン --no_legacyalign があ り ます。

これによ り、 リ ンカではセクシ ョ ンを配置する際に自然配列が使用されます。

• RVCT v3.0 には、 新しいリ ンカオプシ ョ ン --dynamic_debug があ り ます。

これによ り、 リ ンカではデバッグセクシ ョ ンのダイナミ ッ クな再配置が出力されます。

• RVCT v3.0 には、新しい リ ンカオプシ ョ ン --show_cmdline があ り ます。 こ

のオプシ ョ ンを使用する と、 リ ンカでコマンド ラ インがどのよ うに処理されたかを確認できます。

• ARM リ ンカでは、 gcc でレポート される形式に一致する メ ッセージを表

示するためのコマンド ラ インオプシ ョ ン --diag_style gnu がサポート され

るよ うにな り ました。 これは、 以前のリ リースで使用できる arm 形式お

よび ide 形式に追加されています。

A-20 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 69: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.2.5 RVCT v3.0 における ARM アセンブラの変更点

RVCT v3.0 では、 次の点が変更されました。

• RVCT v3.0 では、 ARMv7 に対する Thumb-2 Execution Environment(Thumb-2EE) アーキテクチャの拡張機能がサポート されます。 これは Thumb-2 をベースにしています。 主要な相違点は以下のとおりです。

— Thumb 状態と新しい ThumbEE 状態の両方で状態を変更する ENTERX および LEAVEX とい う新しい命令

— ハンド ラに分岐するための新しい HB、 HBL、 HBLP、 および HBP 命令

— ロードおよびス ト アでの NULL ポインタチェッ ク

— 配列の境界をチェッ クするために追加された ThumbEE 状態の CHKA 命令

— ロード命令、 ス ト ア命令、 および分岐命令 (BX、 BLX、 および BXJ)に対するその他の変更

• RVCT v3.0 では、ARMv7 アーキテクチャの 2 つのオプシ ョ ンコンポーネ

ン トであるアドバンス ト SIMD 拡張機能および VFPv3 の初期サポートが

提供されます。

ARM アドバンス ト SIMD 拡張機能の構成は以下のとおりです。

— アドバンス ト SIMD レジスタ。 このレジスタは、 VFPv3 レジスタ

バンク と同じですが、32 個の 64 ビッ ト レジスタまたは 16 個の 128 ビッ ト レジスタ と見なされます。

— アドバンス ト SIMD レジスタを要素のベクタ と見なす、 多数の新

しい命令。

これらの新しい命令は、 ARM 命令セッ ト と Thumb-2 命令セッ トの

両方で使用できます。

VFPv3 は、 VFPv2 から次のよ うに拡張されています。

— 以前の VFP レジスタバンクの 2 倍にあたる 32 個の 64 ビッ ト レジ

スタへの大幅な拡張。 これらのレジスタは、 メ インの ARM 汎用レ

ジスタを除いたものです。

— よ く使用される多数の浮動小数点数値のロードおよび浮動小数点形式と固定小数点形式間の変換を効率良くする複数の新しい命令。

これらの新しい命令は、 ARM 命令セッ ト と Thumb-2 命令セッ トの

両方で使用できます。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-21Non-Confidential

Page 70: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• Advanced SIMD 命令のサポートの一環と して、 浮動小数点ステータス /制御レジスタ (FPSCR) のビッ ト 27 は、 整数の飽和演算で飽和が発生

したと きに表示するための累積フラグと して予約されています。

• ARM アセンブラを使用するこ とによ り、 インテルワイヤレス MMX テク ノ ロジの命令をアセンブルし、 PXA270 プロセッサ用のコードを開発

できます。 2 つの新しいディ レクティブが導入され、 ロード命令とス ト

ア命令の構文がシンボルおよびリテラルをサポートするよ うに変更されました。

• リ ス ト をファ イルに出力するには、 次のオプシ ョ ンを使用します。

--list file

file が指定されていない場合は、--list= を使用して、 出力を inputfile.lst に送り ます。

注 --list を使用する と、 出力を .lst ファ イルに送信できます。 ただし、 こ

の構文は現在使用が制限されているため、 この構文を使用する とアセンブラによって警告メ ッセージが表示されます。

• 以下の 2 つの新しいディ レクティブが導入されました。

— RELOC。 オブジェク ト ファ イルで ELF の再配置をエンコード しま

す。

— QN。 指定した NEON™ クワ ッ ド ワードレジスタの名前を定義しま

す。

• ARM アセンブラでは、 gcc でレポート される形式に一致する メ ッセージ

を表示するためのコマンド ラ インオプシ ョ ン --diag_style gnu がサポート

されるよ うにな り ました。 これは、 以前のリ リースで使用できる arm 形式および ide 形式に加えて新たに使用できるよ うになった形式です。

• armasm --debug を指定したと きに、 ローカルシンボルが保持されなくな り

ました。 デバッグのためにローカルシンボルを保持する場合は、--keep を指定する必要があ り ます。

• RVCT v2.2 では、 Thumb アセンブラコードでローカルラベルと共に LDR 疑似命令を使用する と、 Thumb のビッ トが設定されていないアドレスに

な り ました。 使用中のコードでこの動作が必要な場合は、 armasm

--untyped_local_labels を使用して下さい。

A-22 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 71: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.2.6 RVCT v3.0 における fromelf ユーティ リテ ィの変更点

RVCT v3.0 では、 次の点が変更されました。

• fromelf ユーティ リ ティでは、 ELF 出力ファイルからコードセクシ ョ ンお

よびデータセクシ ョ ンを削除するための --debugonly オプシ ョ ンがサポー

ト されるよ うにな り ました。

• RVCT v3.0 では fromelf --text の構文が異なり ます。以下の形式は現在使

用が制限されていて、 今後のリ リースで廃止される予定です。

— fromelf --text=xx

— fromelf --text/xx

• RVCT v3.0 には、 fromelf の新しいオプシ ョ ン --show_cmdline があ り ます。

このオプシ ョ ンを使用する と、 fromelf ユーティ リ ティでコマンド ライ

ンがどのよ うに処理されたかを確認できます。

• fromelf ユーティ リ ティでは、 gcc でレポート される形式に一致する メ ッ

セージを表示するためのコマンド ラ インオプシ ョ ン --diag_style gnu がサ

ポート されるよ うにな り ました。 これは、 以前のリ リースで使用できる arm 形式および ide 形式に追加されています。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-23Non-Confidential

Page 72: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.3 RVCT v2.2 SP1 と RVCT v2.2 の相違点

このセクシ ョ ンでは、 RealView Developer Suite v2.2 Service Pack 1 (SP1) 付属

の RVCT v2.2 と、 その前のリ リースの相違点について説明します。

相違点を以下に示します。

• RVCT v2.2 SP1 では、 ARM1136J(F)-S-rev-1 コアがサポート されます。 サ

ポート されるすべてのコアのリ ス ト を参照するには、 次のコマンドを使用します。

armcc --cpu list

• 共有オブジェク ト を作成する と きは、 ARM リ ンカによ り提供される次

の新しいオプシ ョ ンを使用します。

— --pt_arm_exidx を使用する と、 例外テーブルの場所を記述する PT_ARM_EXIDX プログラムヘッダが作成されます。 リ ンカでは、 共有

オブジェク トに PT_ARM_EXIDX プログラムヘッダが含まれている と、

例外がスローされる可能性がある と判断します。

— --force_so_throw を使用する と、 リ ンカではすべての共有オブジェ

ク トが例外をスローする可能性がある と判断します。

これらのコマンド ラインオプシ ョ ンの詳細については、 『 リ ンカ / ユー

ティ リ ティガイ ド』 の System V 共有ライブラ リについて説明した章を

参照して下さい。

• プリプロセッシングディ レクティブ #warning がサポート されます。 その

結果、 コンパイル時にユーザ定義の警告が生成されますが、 コンパイルは停止しません。

• キーワード __restrict および __restrict__ は、 restrict の同義語と してサ

ポート されます。 本リ リースでは、--restrict だけでなくすべてのモード

でこの 2 つのキーワードを使用できます。

• GNU モード と ARM モードの両方で deprecated 関数属性がサポート され

ます。

int Function_Attributes_deprecated_0(int b) __attribute__ ((deprecated));

• fromelf ユーティ リ ティで、 ELF 出力ファ イルから .comment セクシ ョ ンを

削除するための --no_comment_section オプシ ョ ンがサポート されるよ うに

な り ました。

A-24 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 73: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• コンパイラオプシ ョ ン --enum_is_int のス ト レージ型の選択方法が変更さ

れました。 列挙子の範囲が signed int の範囲よ り大き く、 unsigned int の範囲内にある場合、 enum の格納型は unsigned int になり ます。

以下に例を示します。

enum E { k = 0x8000000 }; /* is treated as unsigned int */

• ARM アセンブ リ言語を開発する一環と して、 SWI 命令の名前が SVC(スーパーバイザコール) に変更されました。

命令は、 元は SWI だったという コ メン ト付きで SVC に逆アセンブルされ

ます。 例えば、 fromelf --text -c からは次の出力が生成されます。

...0x00000fbc: e3a00010 .... MOV r0,#0x100x00000fc0: ef123456 V4.. SVC 0x123456 ; formerly SWI...

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-25Non-Confidential

Page 74: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.4 RVCT v2.2 と RVCT v2.1 の相違点

このセクシ ョ ンでは、 RVCT v2.2 と RVCT v2.1 との間の相違点について説明

します。

A.4.1 RVCT v2.2 における主な変更点

RVCT v2.2 では、 次の点が変更されました。

• 新しい Thumb®-2 命令セッ トがサポート されます。 Thumb-2 には、 多数

の新しい 32 ビッ ト命令と、 いくつかの新しい 16 ビッ ト命令が導入され

ました。 ARM1156T2(F)-S など、 Thumb-2 をサポートするプロセッサ上

で、 ARM に匹敵するパフォーマンス と初代 Thumb と同等のコードサイ

ズを両立します。

Thumb-2 命令セッ トには、 以前の 16 ビッ ト Thumb 命令がサブセッ ト と

して含まれています。

• RVCT v2.2 では、 新しい ARMv6 コアがサポート されます。 例えば、

ARM TrustZone™ テク ノ ロジ向けに 適化したソフ ト ウェアが組み込ま

れた ARM1176JZ(F)-S、 ARM968EJ-S、 ARM1156T2(F)-S、 ARM MPCore™ などがサポート されます。

RVCT v2.2 アセンブラでは、 MPCore 命令がサポート されます。

• 新しいアセンブラ構文をサポートする と同時に、 従来のコードをアセンブルするため引き続き古い構文もサポート します。

• ARM アーキテクチャ用ベースプラ ッ ト フォーム ABI [BPABI] に完全に

準拠しているので、 ARM Linux、 Symbian OS など、 さまざまなオペレー

ティングシステムをサポート します。

• ARM アーキテクチャ用 ABI (基本標準) [BSABI] に記載されているよ

うに、 DWARF 3 (Draft Standard 9) デバッグテーブルの初期サポートが

提供されます。 コードをコンパイルする と きにこの形式を指定するために、 新しいコマンド ラ インオプシ ョ ン --dwarf3 を使用できるよ うにな り

ました。

• コマンド ラ インオプシ ョ ン --debug または -g を指定する と、 現在のコン

パイル用のデバッグテーブルが生成されます。 適化オプシ ョ ンを指定する場合は、-Onum を使用します。 デフォルトでは、--debug オプシ ョ ンや -g オプシ ョ ンを使用しても、 適化の設定に影響しません。

A-26 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 75: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

これは、 RVCT v2.2 で動作が変更された点です (RVCT v2.1 では、--debug または -g のみで [--debug|-g] -O0 と同じ意味でした)。 この新しいデフォ

ルト動作を除き、 適化オプシ ョ ン -Onum、-Ospace、 または -Otime の動作

は変更されていません。

• RVCT v2.2 では、コマンド ラ インオプシ ョ ン --apcs /fpic がサポート され

ており、 System V の共有ライブラ リ と互換性があるコードをコンパイル

できます。 このオプシ ョ ンを使用する と、 相対アドレス参照がプログラムをロード した場所に依存しない、 読み出し専用の位置非依存コードが生成されます。

• ARM リ ンカで、 共有ライブラ リのビルド と、 共有ライブラ リに対する

リ ンクがサポート されます。 また、 SVr4 の実行可能ファ イルと共有オ

ブジェク ト をビルド した り、 コードの生成方法を指定した りするための新しいコマンド ラインオプシ ョ ンも使用できます。

• ARM リ ンカは ARM アーキテクチャ用ベースプラ ッ ト フォーム ABI [BPABI] に準拠し、 GNU 拡張シンボルバージ ョ ン管理モデルをサポー

ト します。

• 浮動小数点演算に関する ARM の実装が、 C99 関数のサポート を強化す

るよ うに変更されています。 これによって動作が大幅に変更された部分では、 開発者は新し く導入された互換性モードを使用して、 容易にコードを移行して新機能を使用できます。 詳細については、 「RVCT v2.2 にお

けるライブラ リサポートの変更点」 (ページ A-33) を参照して下さい。

• 列挙値が範囲外の場合に警告が表示されるよ うにするため、 ARM コン

パイラの C 言語実装が変更されました。 範囲外の値は C++ の場合と同

様に処理されます。 つま り、 C を使用している場合、 RVCT の 新のリ

リースにアップグレードする と、 範囲外の値が含まれた enum 型はサイズ

が変わる可能性があ り ます。

C++、 またはコマンド ラ インオプシ ョ ン --enum_is_int、--strict、--strict_warnings のいずれかを使用している場合、

このよ う な変更はあ り ません。 詳細については、 「RVCT v2.2 における ARM コンパイラの変更点」 (ページ A-31) を参照して下さい。

• マルチスレッ ド処理のサポート を強化するため、 ARM ラ イブラ リが拡

張されました。 RTOS ベースのシステムを使用する開発者のための変更

です。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-27Non-Confidential

Page 76: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• 動的シンボルのエクスポート方法をよ り制御しやすくするため、 ARM コンパイラに以下の新しいオプシ ョ ンが用意されています。

— --dllexport_all

— --no_hide_all

• RVCT の他のコンポーネン トでは実行できない分岐の 適化を ARM リンカで実行できます。 セクシ ョ ンの 後で分岐命令を 適化する Tail の呼び出しセクシ ョ ンを処理するため、 2 つの新しいコマンド ラインオプ

シ ョ ンを使用できます。

• RVCT v2.1 で使用が制限されていたオプシ ョ ンは、 v2.2 で使用されなく

な り ました (詳細については、 「「RVCT v2.2 で廃止された機能」」 を参照

して下さい)。

• RVCT v2.1 でサポート されていたオプシ ョ ンの一部は、 v2.2 で使用が制

限されています (詳細については、 「RVCT v2.2 での使用が制限される機

能」 (ページ A-30) を参照して下さい)。

RVCT v2.2 で廃止された機能

RVCT v2.2 では、 次の点が変更されました。

• RVCT v2.1 で使用が制限されていたすべての機能およびオプシ ョ ンは、

RVCT v2.2 で廃止されました。 以下に例を示します。

— ARM Object Format (AOF)、 ARM Library Format (ALF) 形式のライ

ブラ リ など、 従来の Software Development Toolkit (SDT) 形式

— armlink -help のよ うに、 キーワードに単一のダッシュを使用するこ

— コンパイラオプシ ョ ン -ansi および -ansic

• -fy、-fd、-Ec、-zo など、 RVCT v2.1 で使用が制限されていた古いコンパイ

ラオプシ ョ ンの名前は、 RVCT v2.2 では廃止されました。

よ り適切なオプシ ョ ン名が存在する場合は、 コンパイラによって警告が表示されます。 以下に例を示します。

armcc -zoWarning: X0010W: Old syntax, please use '--split_sections'.

これらの機能およびオプシ ョ ンの リ ス トについては、 『コンパイラユーザガイ ド』 の付録 A 「以前のコマンド ラ インオプシ ョ ンの使用」 を参照

して下さい。

A-28 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 77: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• 以下の古い ARM プロセッサおよびアーキテクチャは廃止されました。

— ARM6

— ARMv3 および ARMv3M

サポート されるすべてのコアのリ ス ト を参照するには、 次のコマンドを使用します。

armcc --cpu list

• 以下の古い浮動小数点アーキテクチャは廃止されました。

— VFPv1 (デフォルトは VFPv2)

— FPA

— ソフ ト FPA

指定がない場合のデフォルトはソフ ト VFP です。

サポート されるすべての浮動小数点アーキテクチャのリ ス ト を参照するには、 次のコマンドを使用します。

armcc --fpu list

• 以下のコンパイラオプシ ョ ンを使用できな くな り ました。

— --fpu fpa、--fpu softfpa、 および --fpu vfpv1

— --fa

— --cpu 3 および --cpu 3M

— -Oldrd および -Ono_ldrd

— -Wletter および -Eletter

• SXT 命令および UXT 命令 (符号拡張またはゼロ拡張) の同義語がサポート

されません。

• FPA レジスタ f0-f7 および F0-F7 が使用されなくな り ました。

• 使用が制限されているオプシ ョ ンがある場合に警告メ ッセージを表示する環境変数 RVCT21_CLWARN がサポート されません。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-29Non-Confidential

Page 78: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

RVCT v2.2 での使用が制限される機能

RVCT v2.2 では、 次の点が変更されました。

• 以前のバージ ョ ンの ARM Developer Suite™ (ADS) のアプ リ ケーシ ョ ン

バイナリ インタフェース (ABI) と互換性があるコードをコンパイルす

るため、 コンパイラオプシ ョ ン --apcs /adsabi がサポート されます。 こ

のオプシ ョ ンは現在使用が制限されていて、 今後のリ リースで廃止される予定です。

• ARM リ ンカと fromelf では、--no_debug や --nodebug のよ うに無効化オプ

シ ョ ンを 2 つの形式で使用できます。 ただし、--nodebug などの非標準の

形式は現在使用が制限されており、 将来サポート されな くな り ます。 使用が制限されている構文を使用する と、 警告が表示されます。

• C++ コンフ ィギュレーシ ョ ンオプシ ョ ン --dll_vtbl が、 新しいオプシ ョ

ン --export_all_vtbl に置き換わり ました。 オプシ ョ ン --dll_vtbl は現在

使用が制限されており、 将来サポート されな くな り ます。

• RVCT アセンブラは Load Register EXclusive 命令を以下の 2 つの形式でサ

ポート します。

— LDREX{B|D|H}{cond} Rd, [Rn]

— LDR{B|D|H}EX{cond} Rd, [Rn]

2 番目の形式は現在使用が制限されていて、 今後のリ リースで廃止され

る予定です。

逆アセンブラでサポート されるのは 初の形式のみです。

• RVCT アセンブラは Store Register EXclusive 命令を以下の 2 つの形式でサ

ポート します。

— STREX{B|D|H}{cond} Rd, [Rn]

— STR{B|D|H}EX{cond} Rd, [Rn]

2 番目の形式は現在使用が制限されていて、 今後のリ リースで廃止され

る予定です。

逆アセンブラでサポート されるのは 初の形式のみです。

A-30 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 79: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.4.2 RVCT v2.2 における ARM コンパイラの変更点

RVCT v2.2 では、 次の点が変更されました。

• ARM コンパイラには、 動的なシンボルのエクスポート方法をよ り制御

しやすくするため、 以下の新しいオプシ ョ ンが用意されています。

— --export_all_vtbl を使用する と、 すべての仮想テーブル関数および

キー関数が含まれたク ラスの RTTI がエクスポート されます。

— --export_defs_implicitly を使用する と、 dllimport が指定されたプロ

ト タイプの定義がエクスポート されます。

• ARM コンパイラには、 共有オブジェク ト または DLL を作成する と きに

シンボルを可視化するための、 次の新しいオプシ ョ ンが用意されています。

— --dllexport_all を使用する と、 他に何も指定しな くても、 すべての

グローバルシンボルを動的に可視化できます。

— --no_hide_all を使用する と、すべての extern 定義がエクスポート さ

れ、 すべての未定義参照がインポート されます。

• r12 ではな く r7 を使用する点を除き、 新しい __swi_indirect_r7 は __swi_indirect_r12 と同様に動作します。 ARM Linux 上の Thumb アプ リ

ケーシ ョ ンでは、 __swi_indirect_r7 を使用してカーネルのシステムコー

ルを作成します。

• オーバーロード したグローバルの operator new を throw() と して処理でき

るよ う、--force_new_nothrow の動作が拡張されました。

• 列挙値が範囲外の場合に警告が表示されるよ うにするため、 ARM コン

パイラの C 言語実装が変更されました。

厳密な C では、 列挙値は -2147483648 ~ +2147483647 (境界値を含む)

の範囲の int で表現できる必要があ り ます。 以前のリ リースの RVCT では、--strict オプシ ョ ンを指定した場合を除き、 範囲外の値は警告が表示

されるこ とな く int にキャス ト されました。

RVCT v2.2 ではこのよ うな値は C++ でも同様に、unsigned int、long long、

または unsigned long long と して扱われます。 つま り、 C を使用している

場合、 RVCT の 新のリ リースを使用している と、 範囲外の値が含まれ

た enum 型はサイズが変わる可能性があ り ます。 以下に例を示します。

enum E1 { k1 = 0xffffffff }; /* value == 2147483648u; out-of-range in C *//* C: before 2.2: sizeof(enum E1) == 1 *//* C: 2.2: sizeof(enum E1) == 4 *//* C++: all: sizeof(enum E1) == 4 */

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-31Non-Confidential

Page 80: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

enum E2 { k2 = (int)0xffffffff }; /* value == -1; in range *//* C: before 2.2: sizeof(enum E1) == 1 *//* C: 2.2: sizeof(enum E1) == 1 *//* C++: all: sizeof(enum E1) == 1 */

enum E3 { k3 = -1, k4 = 0xffffffff }; /* value == 2147483648u; out-of-range in C *//* C: before 2.2: sizeof(enum E1) == 1 *//* C: 2.2: sizeof(enum E1) == 8; use long long *//* C++: all: sizeof(enum E1) == 8; use long long */

列挙値が範囲外であるこ とを示す警告が表示されるよ うにするには、 以下のコマンドを使用して警告をエラーに変更します。

armcc --diag_error 66 ...

C++、 またはコマンド ラインオプシ ョ ン --enum_is_int、--strict、--strict_warnings のいずれかを使用している場合、

このよ う な変更はあ り ません。

• ARM モード と GNU モードの両方で __attribute__ キーワードの使用がサ

ポート されます。

• イニシャライザが指定されていない変数を ZI データセクシ ョ ンに配置

するこ とを明示するため、新しい変数属性 zero_init または __zero_init__ がサポート されます。

• 新しいオプシ ョ ン --dwarf3 を使用する と、 C または C++ で記述された

コードのコンパイル時に ARM または Thumb のプログラムを記述するた

めに、 DWARF 3 標準のデバッグテーブルを指定できます。 形式を指定

しない場合は、 DWARF 2 が想定されます。

• ARM コンパイラに渡すコマンド ラ インオプシ ョ ンを指定するための新

しい環境変数 RVCT22_CCOPT がサポート されます。

• RVCT v2.2 では、コマンド ラ インオプシ ョ ン --apcs /fpic がサポート され

ており、 System V の共有ライブラ リ と互換性があるコードをコンパイル

できます。 このオプシ ョ ンを使用する と、 相対アドレス参照がプログラムをロード した場所に依存しない、 読み出し専用の位置非依存コードが生成されます。

• 割り込み処理を制御するための以下の新しい組み込み関数があ り ます。

— __enable_irq() および __disable_irq()

— __enable_fiq() および __disable_fiq()

• また、 適化を制御するための新しい以下の組み込み関数もあ り ます。

— __schedule_barrier()

— __force_stores()

A-32 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 81: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

— __memory_changed()

• テンプレートパラ メータに依存する名前の型の有無を、 状況から暗黙的に判断するかど うかを指定する次の新しいオプシ ョ ンがあ り ます。

— --implicit_typename

— --no_implicit_typename

デフォルトは --no_implicit_typename です。

• コンパイラを呼び出すと きに、--show_cmdline オプシ ョ ンを使用する と、

コマンド ラインがどのよ うに処理されたかを確認できます。 コマンドは正規化されて表示されます。 また、 via ファ イルの内容は展開されます。

ただし、 このコマンドを使用してもコマンド ラ インの偶発的なエラーはト ラ ップされません。

• 適化レベル -O3 での浮動小数点演算に関して、 ISO の C と C++ の標準

に準拠しているこ とが保証されなくな り ました。 ISO の C と C++ の標準

に準拠するには、--fpmode=std オプシ ョ ンを使用する必要があ り ます。

• ISO C 標準の規定に従い、 const volatile (および volatile const) データ

は、 RW セクシ ョ ンまたは ZI セクシ ョ ンに配置されるよ うにな り まし

た。 これらのデータは、 以前は RO セクシ ョ ンに配置されていました。

この仕組みでは、 コンパイラによるデータの配置を仮定した場合に、コードに影響する可能性があ り ます。

A.4.3 RVCT v2.2 におけるライブラリサポートの変更点

RVCT v2.2 では、 次の点が変更されました。

• 浮動小数点演算に関する ARM の実装が、 C99 関数のサポート を強化す

るよ うに変更されています。 これによって動作が大幅に変更された部分では、 開発者は新し く導入された互換性モードを使用して、 容易にコードを移行して新機能を使用できます。 fplib での新しい (または、 動作が

変更された) C99 関数は以下のとおりです。

— ilogb, ilogbf, ilogbl

— logb, logbf, logbl

— scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl

— nextafter, nextafterf, nextafterl, nexttoward, nexttowardf, nexttowardl

mathlib での新しい (または、 動作が変更された) C99 関数は以下のとお

りです。

— fpclassify および signbit

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-33Non-Confidential

Page 82: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

— isfinite、 isinf、 isnan、 および isnormal

— copysign, copysignf

— isgreater、 isgreaterequal、 isless、 islessequal、 islessgreater、 およ

び isunordered

コードを移植しやすくするため、 新しい互換性モードを使用するこ とで以下の関数とマクロの動作がエミ ュレート されます。

— ilogb, ilogbf, ilogbl

— finite

— isnan

注 この古い関数のサポートは、 今後のリ リースで廃止される予定です。 こ

れらの関数を使用している場合は、 新版のコンパイラの等価な関数に移行するこ とをお勧めします。

• マルチスレッ ド処理のサポート を強化するため、 ARM ラ イブラ リが拡

張されました。 RTOS ベースのシステムを使用する開発者のための変更

です。

ユーザがオーバーライ ドできる関数 __user_libspace() が以下の 2 つの

ラ ッパ関数に分割されました。

__user_perproc_libspace()

プロセス全体で使用される (つま り、 すべてのスレッ ドで共有する) グローバルデータを保存する __user_libspace データ領

域へのポインタを返します。

__user_perthread_libspace()

特定のスレッ ドのローカルデータを保存する __user_libspace データ領域へのポインタを返します。

この他に、 同時アクセスによって共有データが破損しないよ うにするロ ッ ク メカニズムを管理するため、 ユーザがオーバーライ ドできる以下の 3 つの新しい関数があ り ます。

_mutex_initialize()

32 ビッ ト ワードのポインタを取得し、 有効な ミ ューテッ クス

と して初期化します。

int _mutex_initialize(mutex *m);

_mutex_acquire()

この関数の呼び出し側スレッ ドは、 指定された ミ ューテッ クスのロ ッ クを取得します。

A-34 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 83: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

void _mutex_acquire(mutex *m);

_mutex_release()

この関数の呼び出し側スレッ ドは、 指定された ミ ューテッ クスを解放します。

void _mutex_release(mutex *m);

上記の変更によって、 マルチスレッ ド環境での一部関数の動作が変更され、 マルチプロセスシステムでこれらの関数を開発者がよ り簡単に使用できるよ うにな り ました。

• ARM ラ イブラ リ アン armar では、 行番号や文字数を含めるなど、 診断

メ ッセージの表示方法を指定するために、 コマンド ラ インオプシ ョ ン --diag_style がサポート されます。

armar --diag_style ide

デフォルトは ARM 形式 (つま り、 --diag_style arm) です。

A.4.4 RVCT v2.2 における ARM リンカの変更点

RVCT v2.2 では、 次の点が変更されました。

• ARM リ ンカは ARM アーキテクチャ用ベースプラ ッ ト フォーム ABI [BPABI] に準拠し、 GNU 拡張シンボルバージ ョ ン管理モデルをサポー

ト します。 ARM リ ンカには、 シンボルバージ ョ ン管理を制御する次の

新しいオプシ ョ ンがあ り ます。

— --symver_script file を使用する と、暗黙のシンボルバージ ョ ン管理

が有効になり、 シンボルバージ ョ ンスク リプ ト と して file を入力で

きます。

— --symver_soname を使用する と、 暗黙のシンボルバージ ョ ン管理およ

びバージ ョ ンシンボルが有効になり、 静的バインドが行われます。

シンボルにバージ ョ ンが定義されていない場合は、 リ ンク しているファ イルの SONAME が使用されます。

注 一般的に、 シンボルバージ ョ ン管理は、 DSO または共有ライブラ リ を

作成した り、 それらに リ ンク した りする と きにのみ有用です。 静的リ ンクには影響しません。

• RVCT の他のコンポーネン トでは実行できない分岐の 適化を ARM リンカで実行できます。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-35Non-Confidential

Page 84: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

適化を制御する新しいコマンド ラ インオプシ ョ ンは、 次の 2 つです。

— --inline を使用する と、 分岐のインライン化が可能になり ます。 デ

フォルトでは、 インライン化は無効です。

— --info inline を使用する と、 関数をインラインにするごとに情報が

表示され、 インラインの総数を確認できます。

--inline と --feedback file の両方を指定する と、 リ ンカによ り インライ

ン化された関数がフ ィードバッ クファ イルに書き込まれます。

• セクシ ョ ンの 後で分岐命令を 適化する Tail の呼び出しセクシ ョ ンを

処理するため、 次の 2 つの新しいコマンド ラ インオプシ ョ ンを使用でき

ます。

— --tailreorder を使用する と、可能であれば Tail の呼び出しセクシ ョ

ンをターゲッ トの上に移動します。

— --info tailreorder を使用する と、移動した Tail の呼び出しセクシ ョ

ンに関する情報が表示されます。

• ARM リ ンカでのベニア生成を制御するため、 次の 2 つのコマンド ラ イ

ンオプシ ョ ンがあ り ます。

— --no_inlineveneer を使用して、 インラインベニアを無効にします。

— --no_veneershare を使用する と、 ベニアが共有されません。

• ARM リ ンカで、 共有ライブラ リのビルド と、 共有ライブラ リに対する

リ ンクがサポート されます。 また、 SVr4 および BPABI の実行可能ファ

イルと共有オブジェク トである BPABI DLL をビルド した り、 コードの

生成方法を指定した りするための次の新しいコマンド ラ インオプシ ョ ンも使用できます。

— --sysv を使用する と、SVr4 形式の ELF ファ イルをビルドできます。

— --shared を使用する と、 SVr4 共有オブジェク ト をビルドできます。

— --soname name を使用する と、共有オブジェク トの SONAME を指定でき

ます。

— --fpic を使用する と、 位置非依存コードが リ ンク されます。

— --init symbol を使用する と、 初期化コードを指定できます。

— --fini symbol を使用する と、 実行可能ファ イルまたは共有オブジェ

ク ト をアンロードする と きにコードを実行できます。

— --linux_abitag id を使用する と、 小限の互換性を持つ Linux カー

ネルバージ ョ ンを指定できます。

A-36 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 85: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

— --dynamiclinker name を使用する と、デフォルトの動的リ ンカを変更

できます。

• スタート アップシンボルが異なる代替の C ラ イブラ リ を使用するため、

新しいリ ンカオプシ ョ ン --startup を使用できます。 同様に、 C++ 初期

化コードには --cppinit オプシ ョ ンを使用できます。

• ARM リ ンカオプシ ョ ン --symbols を使用する と、 リ ンク手順で使用され

ているローカルおよびグローバルのシンボルの一覧が作成されます。RVCT v2.2 のデフォルトでは、 この出力結果にマッピングシンボルが含

まれません。 新しいコマンド ラインオプシ ョ ン --list_mapping_symbols を使用する と、--symbols の出力結果にマッピングシンボルを含めるこ とが

できます。

• ARMv3 (RVCT v2.2 で使用されな くな り ました) を指定するオブジェク

ト を検出した場合、 そのオブジェク ト を ARMv4 にアップグレード して、

ARM ラ イブラ リで使用できるよ うにします。 ターゲッ ト アーキテク

チャレベルを上げた場合は、 警告メ ッセージが表示されます。

• ARM リ ンカを使用して、 スキャ ッ タロード記述ファイルでシンボル名

を使用して入力セクシ ョ ンを参照できます。 『 リ ンカ / ユーティ リ テ ィ

ガイ ド』 の input_symbol_pattern の説明を参照して下さい。

A.4.5 RVCT v2.2 における ARM アセンブラの変更点

RVCT v2.2 では、 次の点が変更されました。

• ARMv6T2 には、 Thumb 命令セッ トのメジャーアップデートである Thumb-2 が定義されています。 ARM 命令セッ ト とほぼ同一の機能が提

供されます。 16 ビッ ト と 32 ビッ トの命令を備え、 ARM に類似したパ

フォーマンス と Thumb に類似したコード密度を両立しています。

ARMv6T2 には、 ARM 命令セッ トの新しい命令も定義されています。

アセンブラでは ARM と Thumb-2 の新しい命令がすべてサポート されま

す。

• ARMv6 アーキテクチャの新しい拡張機能がサポート されます。

— ARMv6Z には、 ARM1176JZ(F)-S コアで使用される ARM Security Extensions (TrustZone) が定義されています。

— ARMv6K には、 ARM MPCore で使用されるシン メ ト リ ッ クマルチ

プロセッサシステム (SMP) の命令が定義されています。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-37Non-Confidential

Page 86: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• RVCT v2.2 アセンブラを使用する と、 記述したソースコードを ARM または Thumb-2 の命令にアセンブルできます。 Thumb-2 以前のプロセッサ

を使用する場合、 同じ言語を使用して Thumb 命令を記述できます。

ただし RVCT v2.2 では、 従来のコードをアセンブルするため、 古いアセ

ンブ リ言語の構文もサポート します。

• 指定されたサイズのメモ リブロ ッ クを指定されたシンボルに割り当てる COMMON ディ レクティブをサポート します。 また、 メモ リ をどのよ うに整

列させるかも指定できます。

COMMON symbol{,size{,alignment}}

• DWARF 3 標準のデバッグテーブルを指定するための新しいオプシ ョ ン --dwarf3 があ り ます。 デフォルトは DWARF 2 のままです。

• 共有オブジェク ト または DLL を作成する と きにシンボルを可視化する

ため、 次の新しいオプシ ョ ンが用意されています。

— --dllexport_all を使用する と、 他に何も指定しな くても、 すべての

グローバルシンボルを動的に可視化できます。

— --no_hide_all を使用する と、すべての extern 定義がエクスポート さ

れ、 すべての未定義参照がインポート されます。

• IMPORT ディ レクティブと EXPORT ディ レクティブに次の新しい属性を使用

して一定の可視度を設定し、 ELF シンボルを出力できます。

— DYNAMIC

— HIDDEN

— PROTECTED

A.4.6 RVCT v2.2 における fromelf ユーティ リテ ィの変更点

RVCT v2.2 では、 次の点が変更されました。

• fromelf ユーティ リ ティが強化され、--text=/s からの出力で、 GNU 拡張シ

ンボルバージ ョ ン管理テーブルをサポート します。 シンボルバージ ョ ン管理テーブルのデコードを無効にするには、 新しい --no_symbolversions オプシ ョ ンを使用します。

A-38 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 87: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.5 RVCT v2.1 と RVCT v2.0 の相違点

このセクシ ョ ンでは、 RVCT v2.1 と RVCT v2.0 との間の相違点について説明

します。

A.5.1 RVCT v2.1 における主な変更点

RVCT v2.1 では、 次の点が変更されました。

• 例外を含め、 C++ が完全にサポート されます。

• ARMv6 コアのサポートが強化されました。 サポート されるすべてのコ

アのリ ス ト を参照するには、 次のコマンドを使用します。

armcc --cpu list

• コンパイラ、 リ ンカ、 アセンブラ、 および fromelf で、 Microsoft Visual Studio などの IDE との互換性が高い形式で警告およびエラーを生成する

ための、 新しい --diag_style オプシ ョ ンがサポート されます。

• コンパイラおよびリ ンカで、使用されていない仮想関数を生成済み C++ コードから削除する新機能がサポート されます。

• コンパイラで新しい --min_array_alignment オプシ ョ ンがサポート されま

す。

• 次にファ イルをコンパイルする と きのため、 使用していない関数についてコンパイラに通知する リ ンカフ ィードバッ クを使用できます。 フ ィードバッ クは関数自体のセクシ ョ ン内に配置され、 後でリ ンカによって削除できるよ うになっています。

• ARM® ツールを使用する と き、 SHF_STRINGS セクシ ョ ンを使用して、 複数

のコンパイルユニッ トで適切な文字列を共有できます。 これは、 ARM アーキテクチャ用 ELF 標準 [AAELF] によって定義されています。

• VFPv1 のサポートは廃止される予定です。 デフォルトは VFPv2 にな り

ました。 サポート されるすべての FPU のリ ス ト を参照するには、 次の

コマンドを使用します。

armcc --fpu list

• キーワードで単一ダッシュを使用するこ とが制限され、 今後サポート されな くな り ます。 コンパイルツールを使用する と きは、 ダッシュを 2 つ使用します。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-39Non-Confidential

Page 88: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• コンパイルツールで現在使用が制限されているオプシ ョ ン (コンパイラオプシ ョ ン --fpu softfpa など) を使用する と、 デフォルトで警告メ ッ

セージが表示されます。

RVCT v2.1 でこの動作を変更するには、 環境変数 RVCT21_CLWARN を次のい

ずれかの値に設定します。

0 古い構文および現在使用が制限されているオプシ ョ ンに対し

て警告を表示します。

1 古い構文を許容して警告を表示せず、 現在使用が制限されて

いるオプシ ョ ンに対して警告を表示します。 これがデフォルトです。

2 古い構文および現在使用が制限されているオプシ ョ ンを許容

して、 警告を表示しません。

A.5.2 RVCT v2.1 における ARM コンパイラの変更点

RVCT v2.1 では、 次の点が変更されました。

• --gnu オプシ ョ ンを指定してコンパイラを実行する と、 GNU 拡張がサ

ポート されます。 ただし、 このオプシ ョ ンを指定せずにコンパイラを実行しても、 いくつかの拡張機能がサポート されます。 これらのコンパイルモードを、 それぞれ次のよ うに呼びます。

ARM モード

--gnu オプシ ョ ンを指定せずにコンパイルする、 デフォルトの

モードです。

GNU モード

--gnu オプシ ョ ンを指定してコンパイルします。

GNU 拡張のすべての機能のリ ス ト 、 およびそれらの機能をサポートす

るモード と言語の詳細については、 『RealView コード生成ツール v2.1 コンパイラ / ライブラ リガイ ド』 のコンパイラの参照について説明した章

を参照して下さい。

• Edison Design Group (EDG) のフロン トエンドを使用して、 ISO C++ のサポート を強化しました。 これによ り、 コード生成の際に ARM コンパ

イラにプログラム表現を渡す完全な C++ パーサが提供されます。 その結

果、 C++ 例外のスローとキャ ッチがサポート されます。

A-40 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 89: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• マルチファイルコンパイルによって、 複数のコンパイルユニッ トにまたがって 適化を実行できます。 新しい --multifile オプシ ョ ンを使用する

と、 この動作を指定できます。 マルチファ イルコンパイルを行うには、以下に示すよ うに、 コマンド ラインで複数のファ イルを指定する必要があ り ます。

armcc [options] --multifile ifile_1 ... ifile_n

• マルチファイルコンパイルがデフォルトで可能な新しい -O3 適化レベ

ルが採用されました。

• 新しいオプシ ョ ン --cpu list および --fpu list を使用する と、サポート さ

れている CPU とアーキテクチャについての詳細を表示できます。

• 新しい --min_array_alignment オプシ ョ ンを使用する と、 配列の 小境界

整列を指定できます。

• 新しい __breakpoint() 組み込み関数が採用されました。

• 戻り値を持たない関数が採用されました。

• --old_cfe オプシ ョ ンは使用されなくな り ました。

A.5.3 RVCT v2.1 におけるライブラリサポートの変更点

RVCT v2.1 では、 次の点が変更されました。

• C++ のライブラ リである Rogue Wave ラ イブラ リおよび C++ ランタイム

ライブラ リによって、 C++ 例外がサポート されるよ うにな り ました。 例

外のサポート を必要と しないアプリ ケーシ ョ ンも、 これらの C++ ラ イブ

ラ リで引き続きサポート されます。

• wchar.h のうち、 ファ イル I/O、 および printf と scanf における c99 の 16 進数浮動小数点演算のサポート を除くすべての機能が C ライブラ リでサ

ポート されます。

• 圧縮アルゴ リ ズムをサポートするため、 領域テーブルの新しい形式が採用されました。 この新しい形式には ZISection$$Table が含まれていませ

ん。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-41Non-Confidential

Page 90: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.5.4 RVCT v2.1 における ARM リンカの変更点

RVCT v2.1 では、 次の点が変更されました。

• ROM サイズを 適化するため、 読み出し / 書き込みデータの圧縮がデ

フォルトで有効になっています。

• コード用とデータ用に 1 つずつ、 計 2 つの RO 実行領域を出力するため

に、 新しいオプシ ョ ン --rosplit を使用できます。

• C++ 例外テーブルをサポートするための新しいコマンド ラ インオプシ ョ

ンを使用できます。 新しいオプシ ョ ン --noexceptions を使用する と、

コードで例外が処理されません。

新しいオプシ ョ ン --exceptions_tables=unwind|nounwind を使用する と、 入

力ファイルの内容にかかわらず例外テーブルが生成されます。 例えば --exceptions_tables=unwind を使用する と、 C 言語およびアセンブリ言語

のオブジェク ト用に、 デバッグフレームの情報が書き込まれた例外テーブルを作成できます。

• ユーザライブラ リの検索場所を指定するための新しいオプシ ョ ン --userlibpath を使用できます。

• リ ンカでは、 オブジェク ト ファ イルのアライ メン トがよ り厳密にチェック されます。 スタ ッ クを 8 バイ トで区切る必要があるコードが、 スタ ッ

クの 8 バイ トのアライ メン ト を保持するコードによってのみ直接的また

は間接的に呼び出されます。 スタ ッ クのアライ メン トが競合しているのが検出された場合、 リ ンカによって次のよ うなエラーメ ッセージが表示されます。

Error L6238E: object_name.o(section_name) contains invalid call from ’~PRES8’ function to ’ REQ8’ function_name

外部シンボルのアドレスを参照した場合も、 同様の警告メ ッセージが表示されます。

Warning L6306W: ’ ~PRES8’ section object_name.o(section_name) should not use the address of ’ REQ8’ function_name

A.5.5 RVCT v2.1 における ARM アセンブラの変更点

RVCT v2.1 では、 次の点が変更されました。

• 新しいオプシ ョ ン --cpu list および --fpu list を使用する と、サポート さ

れている CPU とアーキテクチャについての詳細を表示できます。

A-42 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 91: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• 指定されたレジスタの数字を返す新しい単項演算子 :RCONST: が含まれて

います。

• コードを PRES8 と してマークするかど うかを判断するため、 スタ ッ クポ

インタ (SP) を変更する命令を確認します。 この変更は、 必要な場合自

動で行われます (詳細については、 『RealView コード生成ツール v2.1 アセンブラガイ ド』 のディ レクティブ参照について説明した章を参照して下さい)。

• コード内で発生し う るインターロ ッ クについての警告を表示できます。この機能を有効にするには、 次のコマンドを使用します。

armasm --diag_warning 1563

A.5.6 RVCT v2.1 における fromelf ユーティ リテ ィの変更点

RVCT v2.1 では、 次の点が変更されました。

• ELF イ メージをデコード して構造体内外の配列を展開するための新しい --expandarrays オプシ ョ ンを使用できます。

このオプシ ョ ンは、--text -a と一緒に使用する必要があ り ます (単独で

は使用できません)。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-43Non-Confidential

Page 92: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

A.6 RVCT v2.0 と RVCT v1.2 の相違点

このセクシ ョ ンでは、 RVCT v2.0 と RVCT v1.2 との間の相違点について説明

します。

A.6.1 RVCT v2.0 における主な変更点

RVCT v2.0 では、 次の点が変更されました。

• ARM アーキテクチャ v6 がサポート されます。

• ARM アーキテクチャ用 ABI (基本標準) [BSABI] に準拠しています。

詳細については、 http://www.arm.com を参照して下さい。

• 浮動小数点の例外を発生させるには、--fpmode ieee_full を選択する必要

があ り ます。 デフォルト設定が --fpmode std であ り、 そのままでは浮動

小数点の例外が発生しないためです。

• コマンド ラ インキーワードを示すためには、 ダッシュを 2 つ (- - ) 使用

します (例 :--cpp)。

A.6.2 RVCT v2.0 における ARM コンパイラの変更点

ARM コンパイラ (armcc) では、 次の点が変更されました。

• コマンド ラ インオプシ ョ ンが変更された RVCT v2.0 コンパイラのフロン

トエンドが新し くな り ました。 古い ARM コンパイラで使用できたオプ

シ ョ ンも、 後方互換性のためにサポート されます。

• 4 つの独立したコンパイラ armcc、 tcc、 armcpp、 および tcpp が 1 つのコン

パイラ armcc に統合されました。 ただし、 新しいコンパイラに移行しや

すくするため、 RVCT v2.0 コンパイラは個別のコンパイラ名で呼び出す

こ とができます。

• ARMv6 をサポート し、 ARMv6 の非境界整列アクセス動作を利用しま

す。

• インラインアセンブラを補完する新しい組み込みアセンブラが採用されました。

• #pragma arm および #pragma thumb を使用して、関数単位で ARM と Thumb® のコンパイルを実行できます。

A-44 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential

Page 93: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• --fpmode オプシ ョ ンを使用して、 5 つの浮動小数点モデルを選択できま

す。

• --list オプシ ョ ンの動作が、 古いコンパイラ と異な り ます。

• C++ テンプレート インスタンス生成が可能です。

• C++ ネームスペースを使用できます。

• ポインタアライ メン トのレベルを指定できます。

• C++ をコンパイルする と きに ROPI がサポート されな くな り ました。

• 診断メ ッセージを制御および操作できます。 また、 診断メ ッセージの番号の付け方が変更されました。 メ ッセージの番号の形式は #nnnn または #nnnn-D です。 接尾文字 -D を伴う メ ッセージのメ ッセージ番号は、 診断

メ ッセージを操作するオプシ ョ ンで使用できます。

• 新しいインタフェースでは、 古いコンパイラオプシ ョ ンの多くがサポート されません。 ただし下位互換性のため、--old_cfe オプシ ョ ンを使用す

る とそれらのオプシ ョ ンを使用できます。 詳細については、 『RealView コード生成ツール v2.0 コンパイラ / ラ イブラ リガイ ド』 の古いコンパイ

ラオプシ ョ ンについて説明した付録を参照して下さい。 この付録では、古いコンパイラオプシ ョ ンのうち、 新しいコンパイラオプシ ョ ンにマップできるものがある場合、 それを示しています。 また、 『RealView コー

ド生成ツール v2.0 コンパイラ / ラ イブラ リガイ ド』 に記載されている

メ ッセージについて、 この付録では、 新しいコンパイラインタフェースで出力される等価なメ ッセージを示しています。

注 --old_cfe オプシ ョ ンを使用する と、 コンパイラによ り出力される メ ッ

セージに、 古い形式で番号が付きます。

その他、 新しいプラグマと定義済みマクロの追加、 C と C++ 言語の拡張、 お

よび ARM の C のライブラ リ と C++ のライブラ リの変更などが行われました。

A.6.3 RVCT v2.0 における ARM リンカの変更点

ARM リ ンカ (armlink) では、 次の点が変更されました。

• --unresolved オプシ ョ ンが部分リ ンクに対応しました。

ARM DUI 0202IJ Copyright © 2002-2008 ARM Limited. All rights reserved. A-45Non-Confidential

Page 94: RealView Compilation Tools エッセンシャルガイドinfocenter.arm.com/help/topic/com.arm.doc.dui0202ij/DUI...† 『RealView Compilation Tools デベロッパガイド』(ARM

以前のリ リースについて

• 新しいステア リ ングファ イルコマンド RESOLVE が追加され、 部分リ ンク

を実行する と きに使用されるよ うにな り ました。 RESOLVE は、 armlink オプ

シ ョ ンの --unresolved と用法が似ています。

• オプシ ョ ン --edit が複数のファ イルに対応しました。

• バイ ト をパッ ドするための値を指定する新しいオプシ ョ ン --pad があ り

ます。

• 新しいスキャ ッ タロード属性 EMPTY および ZEROPAD が追加されました。

A.6.4 RVCT v2.0 における ARM アセンブラの変更点

ARM アセンブラ (armasm) では、 次の点が変更されました。

• ARM アーキテクチャ v6 の新しい命令がサポート されます。 サチュレー

ト命令、 並列命令、 パッ ク / 展開命令などがサポート されるよ うにな り

ました。

• ALIGN ディ レクティブに、 パディングの内容を指定するパラ メータが追

加されました。 このパラ メータはオプシ ョ ンです。

• 新しい AREA ディ レクティブ NOALLOC があ り ます。

• 新しい 2 つのディ レクティブ ELIF および FRAME RETURN ADDRESS があ り ま

す。

• 4 つの新しい組み込み変数 {AREANAME}、 {COMMANDLINE}、 {LINENUM}、 および {INPUTFILE} があ り ます。

A-46 Copyright © 2002-2008 ARM Limited. All rights reserved. ARM DUI 0202IJNon-Confidential