PDF version - ARM Information Center
PDF version - ARM Information Center
PDF version - ARM Information Center
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
®<br />
RealView<br />
Compilation Tools<br />
バージ ョ ン 4.0<br />
エッセンシャルガイド<br />
Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved.<br />
<strong>ARM</strong> DUI 0202IJ
RealView Compilation Tools<br />
エッセンシャルガイド<br />
Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved.<br />
リリース 情 報<br />
本 書 には 以 下 の 変 更 が 加 え ら れています。<br />
変 更 履 歴<br />
日 付 発 行 機 密 保 持 ステー タ ス 変 更<br />
2002 年 8 月 A 非 機 密 扱 い 第 1.2 版<br />
2003 年 1 月 B 非 機 密 扱 い 第 2.0 版<br />
2003 年 9 月 C 非 機 密 扱 い RealView Developer Suite 向 け リ リ ース 2.0.1<br />
2004 年 1 月 D 非 機 密 扱 い RealView Developer Suite 向 け リ リ ース 2.1<br />
2004 年 12 月 E 非 機 密 扱 い RealView Developer Suite 向 け リ リ ース 2.2<br />
2005 年 5 月 F 非 機 密 扱 い RealView Developer Suite 向 け リ リ ース 2.2SP1<br />
2006 年 3 月 G 非 機 密 扱 い RealView Development Suite 向 け リ リ ース 3.0<br />
2007 年 3 月 H 非 機 密 扱 い RealView Development Suite 向 け リ リ ース 3.1<br />
2008 年 9 月 I 非 機 密 扱 い RealView Development Suite v4.0 向 け リ リ ース 4.0<br />
著 作 権<br />
®<br />
または のマー ク が 付 いた 言 葉 およびロ ゴは、 こ の 著 作 権 情 報 で 別 段 に 規 定 さ れている 場 合 を<br />
除 き、 <strong>ARM</strong> Limited の EU ま たはその 他 の 国 におけ る 登 録 商 標 および 商 標 です。 本 書 に 記 載 さ れ<br />
てい る 他 の 製 品 名 は、 各 社 の 所 有 する 商 標 です。<br />
本 書 に 記 載 さ れてい る 情 報 の 全 部 ま たは 一 部 、 な らびに 本 書 で 紹 介 する 製 品 は、 著 作 権 所 有 者 の<br />
文 書 に よ る 事 前 の 許 可 を 得 ない 限 り 、 転 用 ・ 複 製 する こ と を 禁 じ ます。<br />
本 書 に 記 載 さ れてい る 製 品 は、 今 後 も 継 続 的 に 開 発 ・ 改 良 の 対 象 と な り ます。 本 書 に 含 まれる 製<br />
品 およびその 利 用 方 法 についての 情 報 は、 <strong>ARM</strong> が 利 用 者 の 利 益 のために 提 供 する も のです。 し<br />
たがって 当 社 では、 製 品 の 市 販 性 ま たは 利 用 の 適 切 性 を 含 め、 暗 示 的 ・ 明 示 的 に 関 係 な く 一 切 の<br />
責 任 を 負 いません。<br />
本 書 は、 本 製 品 の 利 用 者 をサポー ト する こ と だけを 目 的 と し ています。 本 書 に 記 載 さ れてい る 情<br />
報 の 使 用 、 情 報 の 誤 り ま たは 省 略 、 あ るいは 本 製 品 の 誤 使 用 に よ って 発 生 し たいかな る 損 失 ・ 損<br />
傷 について も、 <strong>ARM</strong> Limited は 一 切 責 任 を 負 いません。<br />
<strong>ARM</strong> と い う 用 語 が 使 用 さ れてい る 場 合 、 “<strong>ARM</strong> ま たは 必 要 に 応 じ てその 子 会 社 ” を 指 します。<br />
ii Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
機 密 保 持 ステー タ ス<br />
本 書 は 非 機 密 扱 いであ り 、 本 書 を 使 用 、 複 製 、 および 開 示 する 権 利 は、 <strong>ARM</strong> および <strong>ARM</strong> が 本 書<br />
を 提 供 し た 当 事 者 と の 間 で 締 結 し た 契 約 の 条 項 に 基 づいた ラ イ セン スの 制 限 に よ り 異 な り ます。<br />
アクセス 制 限 は、 <strong>ARM</strong> 社 内 に よ る 分 類 です。<br />
製 品 ステー タ ス<br />
本 書 の 情 報 は 最 終 版 であ り 、 開 発 済 み 製 品 に 対 応 し ています。<br />
Web アドレス<br />
http://www.arm.com<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. iii<br />
Non-Confidential
iv Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
目 次<br />
RealView Compilation Tools<br />
エッセンシャルガイド<br />
序 章<br />
本 書 について ............................................................................................... viii<br />
フィードバック ............................................................................................. xii<br />
第 1 章<br />
第 2 章<br />
第 3 章<br />
はじめに<br />
1.1 RealView Compilation Tools について ........................................................ 1-2<br />
1.2 RVCT で 使 用 する 環 境 変 数 ......................................................................... 1-7<br />
1.3 追 加 の 詳 細 情 報 ........................................................................................... 1-9<br />
アプリケーショ ンの 作 成<br />
2.1 <strong>ARM</strong> Compilation Tools の 使 用 .................................................................. 2-2<br />
2.2 <strong>ARM</strong> コ ンパイ ラの 使 用 .............................................................................. 2-3<br />
2.3 <strong>ARM</strong> リ ン カの 使 用 ..................................................................................... 2-7<br />
2.4 <strong>ARM</strong> アセンブ ラの 使 用 .............................................................................. 2-8<br />
2.5 fromelf ユーテ ィ リ テ ィ の 使 用 .................................................................... 2-9<br />
2.6 <strong>ARM</strong> Workbench IDE の 使 用 .................................................................... 2-10<br />
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
3.1 RealView Compilation Tools v4.0 の 概 要 .................................................... 3-2<br />
3.2 RVCT v4.0 の ド キュ メ ン ト の 変 更 点 .......................................................... 3-3<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. v<br />
Non-Confidential
3.3 RVCT v4.0 における <strong>ARM</strong> コ ンパイ ラの 変 更 点 ........................................ 3-4<br />
3.4 RVCT v4.0 における ラ イ ブ ラ リ サポー ト の 変 更 点 .................................... 3-7<br />
3.5 RVCT v4.0 における <strong>ARM</strong> リ ン カの 変 更 点 ............................................... 3-8<br />
3.6 RVCT v4.0 における <strong>ARM</strong> アセンブ ラの 変 更 点 ........................................ 3-9<br />
3.7 RVCT v4.0 における fromelf ユーテ ィ リ テ ィ の 変 更 点 ............................ 3-10<br />
3.8 RVCT v4.0 での 使 用 が 制 限 される 機 能 .................................................... 3-12<br />
3.9 RVCT v4.0 で 廃 止 された 機 能 .................................................................. 3-13<br />
3.10 RVCT v4.0 と 従 来 のオブジ ェ ク ト およびラ イ ブ ラ リ との 互 換 性 ............ 3-14<br />
付 録 A<br />
以 前 の リ リ ースについて<br />
A.1 RVCT v3.1 と RVCT v3.0 の 相 違 点 ........................................................... A-2<br />
A.2 RVCT v3.0 と RVCT v2.2 の 相 違 点 ......................................................... A-12<br />
A.3 RVCT v2.2 SP1 と RVCT v2.2 の 相 違 点 .................................................. A-24<br />
A.4 RVCT v2.2 と RVCT v2.1 の 相 違 点 ......................................................... A-26<br />
A.5 RVCT v2.1 と RVCT v2.0 の 相 違 点 ......................................................... A-39<br />
A.6 RVCT v2.0 と RVCT v1.2 の 相 違 点 ......................................................... A-44<br />
vi Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
序 章<br />
本 章 では、 『RealView Compilation Tools エッセンシャルガイド』 について 概 説<br />
し ます。 以 下 のセ ク シ ョ ンか ら 構 成 さ れています。<br />
• 「 本 書 について」 (ページ viii)<br />
• 「フ ィードバッ ク」 (ページ xii)<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. vii<br />
Non-Confidential
序 章<br />
本 書 について<br />
本 書 では、 <strong>ARM</strong> ® RealView ® Compilation Tools (RVCT) の 概 要 について 説 明 し<br />
ます。<br />
対 象 読 者<br />
本 書 は、 RVCT を 使 用 し てアプ リ ケーシ ョ ン を 作 成 し てい る 開 発 者 を 対 象 と<br />
し ています。 し たがって、 本 書 の 内 容 は、 経 験 豊 富 な ソ フ ト ウ ェ ア 開 発 者 を<br />
想 定 し て 記 述 さ れています。<br />
本 書 の 構 成<br />
本 書 は 以 下 の 章 と 付 録 か ら 構 成 さ れています。<br />
第 1 章 はじめに<br />
RVCT の 概 要 について 説 明 し ます。 RVCT のコンポーネン ト とそ<br />
のオン ラ インマニュアルを 紹 介 し ます。<br />
第 2 章 アプ リ ケーシ ョ ンの 作 成<br />
RVCT を 使 用 し たアプ リ ケーシ ョ ンの 作 成 方 法 の 概 要 について 説<br />
明 します。<br />
第 3 章 RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
最 新 の リ リ ースの RVCT と 以 前 のリ リースの RVCT との 相 違 点<br />
について 説 明 し ます。<br />
付 録 A 以 前 の リ リ ースについて<br />
この 付 録 では、 以 前 のリ リースの RVCT 間 の 相 違 点 について 説<br />
明 します。<br />
本 書 では、 <strong>ARM</strong> ソ フ ト ウ ェ アがデフ ォル ト の 場 所 にイ ン ス ト ールされている<br />
こ と を 前 提 と し ています。 例 えば、 Windows 環 境 では、 デフ ォル ト の 場 所 は<br />
volume:\Program Files\<strong>ARM</strong> にな り ます。 パス 名 を 参 照 する 際 、 install_directory<br />
の 部 分 を こ の 場 所 に 読 み 替 えて 下 さ い。 例 えば、 本 書 では、<br />
install_directory\Documentation\... のよ うなパス 名 が 使 用 されます。 <strong>ARM</strong> ソ<br />
フ ト ウ ェ アを 別 の 場 所 に イ ン ス ト ールし た 場 合 は、 フ ァ イルパスの 見 方 を 変<br />
え る 必 要 があ り ます。<br />
viii Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
序 章<br />
表 記 規 則<br />
本 書 では 以 下 の 表 記 規 則 を 使 用 し ています。<br />
italic<br />
bold<br />
monospace<br />
monospace<br />
monospace italic<br />
monospace bold<br />
重 要 事 項 、 重 要 用 語 、 相 互 参 照 、 引 用 箇 所 を 斜 体 で 記 載 し<br />
ています。<br />
メ ニ ュー 名 な どのユーザ イ ン タ フ ェース 要 素 を 太 字 で 記 載<br />
し ています。 ま た、 必 要 に 応 じ て 記 述 リ ス ト 内 の 重 要 箇<br />
所 、 <strong>ARM</strong> プ ロ セ ッ サの 信 号 名 、 重 要 用 語 、 および 専 門 用<br />
語 に も 太 字 を 使 用 し ています。<br />
コ マン ド 、 フ ァ イ ル 名 、 プ ロ グ ラ ム 名 、 ソ ース コー ド な<br />
ど、 キーボードから 入 力 可 能 なテキス ト を 示 しています。<br />
コ マン ド ま たはオプシ ョ ンに 使 用 可 能 な 略 語 を 示 し ます。<br />
コマンド 名 またはオプショ ン 名 をすべて 入 力 する 代 わり<br />
に、 下 線 部 分 の 文 字 だけを 入 力 する こ と がで き ます。<br />
コマンドまたは 関 数 の 引 数 で、 特 定 の 値 に 置 き 換 えるこ と<br />
が 可 能 な ものを 示 し ています。<br />
サンプルコード 以 外 に 使 用 される 言 語 キーワード を 示 して<br />
います。<br />
参 考 資 料<br />
このセクショ ンでは、 <strong>ARM</strong> プ ロ セ ッ サフ ァ ミ リ のコー ド 開 発 関 連 情 報 を 提 供<br />
している <strong>ARM</strong> Limited の 出 版 物 を 紹 介 し ます。<br />
<strong>ARM</strong> Limited は 自 社 出 版 物 の 定 期 的 な 更 新 ・ 修 正 を 行 っています。 最 新 の 正<br />
誤 表 、 追 補 表 、 および <strong>ARM</strong> に 関 する FAQ については、<br />
http://infocenter.arm.com/help/index.jsp を ご 覧 下 さ い。<br />
<strong>ARM</strong> の 出 版 物<br />
本 書 では、 RVCT の 概 要 について 説 明 し ます。 このほか、 本 製 品 には 以 下 の<br />
マニュアルが 同 梱 されています。<br />
• 『RealView Compilation Tools コンパイラユーザガイド』 (<strong>ARM</strong> DUI 0205)。<br />
本 書 では、 <strong>ARM</strong> コンパイラ armcc の 基 本 関 数 と コ ンパ イ ラ 固 有 の 機 能 に<br />
ついて 説 明 し ています。 また、 NEON ベク トル 化 コンパイラ と、 自 動<br />
ベ ク ト ル 化 機 能 の 使 用 方 法 について も 説 明 し ています。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. ix<br />
Non-Confidential
序 章<br />
• 『RealView Compilation Tools コンパイラ リファレンスガイド』 (<strong>ARM</strong> DUI<br />
0348)。 本 書 には、 <strong>ARM</strong> コ ンパイ ラ の 参 照 情 報 と コ マン ド ラ イ ンオプ<br />
シ ョ ンの 説 明 が 記 載 さ れています。 ま た、 <strong>ARM</strong> コンパイラにおける C<br />
や C++ の 実 装 について も 説 明 し ています。<br />
• 『RealView Compilation Tools ライブラリ / 浮 動 小 数 点 サポー ト ガ イ ド 』<br />
(<strong>ARM</strong> DUI 0349)。 本 書 では、 <strong>ARM</strong> の C ライブラリおよび C++ ライブラ<br />
リ、 ISO 標 準 への 準 拠 、 ターゲ ッ ト 依 存 関 数 のカ ス タ マ イ ズ、 およびア<br />
プ リ ケーシ ョ ン 固 有 の 要 件 について 説 明 し ます。 ま た、 <strong>ARM</strong> におけ る<br />
浮 動 小 数 点 演 算 のサポー ト について も 説 明 し ます。<br />
• 『RealView Compilation Tools アセンブラガイ ド』 (<strong>ARM</strong> DUI 0204)。 本 書<br />
には、 <strong>ARM</strong> アセンブラ armasm についての 参 照 およびチュー ト リ アル 情<br />
報 が 記 載 されています。<br />
• 『RealView Compilation Tools リンカユーザガイド』 (<strong>ARM</strong> DUI 0206)。 本<br />
書 には、 <strong>ARM</strong> リンカ armlink に 関 するユーザ 情 報 が 記 載 されています。<br />
また、 スキャッタロードについても 概 説 します。<br />
• 『RealView Compilation Tools リンカリファレンスガイド』 (<strong>ARM</strong> DUI<br />
0381)。 本 書 には、 コ マン ド ラ イ ンオプシ ョ ン と ス テア リ ン グ フ ァ イ ル<br />
の 参 照 情 報 が 記 載 さ れています。 ま た、 <strong>ARM</strong> アーキテクチャ 用 ベース<br />
プラッ ト フォーム ABI (BPABI) と System V 共 有 ラ イ ブ ラ リ および 実 行<br />
可 能 フ ァ イ ルについて も 説 明 さ れています。<br />
• 『RealView Compilation Tools ユーテ ィ リ テ ィ ガイ ド』 (<strong>ARM</strong> DUI 0382)。<br />
本 書 には、 <strong>ARM</strong> ライブラリアン armar および <strong>ARM</strong> イ メージ 変 換 ユー<br />
ティ リティ fromelf の コ マン ド ラ イ ンオプシ ョ ン と 実 用 サンプルが 記 載<br />
されています。<br />
• 『RealView Compilation Tools デベロ ッ パガ イ ド 』 (<strong>ARM</strong> DUI 0203)。 本 書<br />
では、 <strong>ARM</strong> ファミ リのプロセッサをターゲッ ト としたコードの 記 述 に<br />
関 するチュー ト リ アル 情 報 を 提 供 しています。<br />
• 『<strong>ARM</strong> Workbench IDE ユーザガ イ ド 』 (<strong>ARM</strong> DUI 0330) では、 統 合 開 発 環<br />
境 (IDE) を 使 用 して <strong>ARM</strong> ターゲッ ト 用 のプロジェク ト を 設 定 および<br />
ビル ドする 方 法 について 説 明 し ます。<br />
準 拠 する 基 本 標 準 、 ソ フ ト ウ ェ ア イ ン タ フ ェース、 および <strong>ARM</strong> でサポー ト<br />
されている 標 準 に 関 する 詳 細 については、<br />
install_directory\Documentation\Specifications\... を 参 照 して 下 さい。<br />
x Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
序 章<br />
特 定 の <strong>ARM</strong> 製 品 に 関 する 情 報 については、 以 下 のマニ ュ アルを 参 照 し て 下<br />
さい。<br />
• 『<strong>ARM</strong> アーキテ クチャ リ フ ァ レンスマニュアル』 (<strong>ARM</strong>v7-A および<br />
<strong>ARM</strong>v7-R エデ ィ シ ョ ン) (<strong>ARM</strong> DDI 0406)<br />
• 『<strong>ARM</strong>7-M アーキテクチャ リ フ ァ レンスマニュアル』 (<strong>ARM</strong> DDI 0403)<br />
• 『<strong>ARM</strong>6-M アーキテクチャ リ フ ァ レンスマニュアル』 (<strong>ARM</strong> DDI 0419)<br />
• 『<strong>ARM</strong> アーキテ クチャ リ フ ァ レンスマニュアル』 (<strong>ARM</strong> DDI 0100)<br />
• お 使 いのハー ド ウ ェ アデバイ スの <strong>ARM</strong> データ シー ト ま たはテ ク ニカル<br />
リファレンスマニュアル<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. xi<br />
Non-Confidential
序 章<br />
フィードバック<br />
<strong>ARM</strong> Limited では RealView Compilation Tools および 本 書 に 関 する フ ィ ー ド<br />
バックをお 待 ちしており ます。<br />
RealView Compilation Tools に 関 する フ ィ ー ドバッ ク<br />
RVCT に 関 し て 問 題 があ る 場 合 は、 購 入 元 にお 問 い 合 わせ 下 さ い。 こ の と き、<br />
迅 速 かつ 適 切 な 対 応 を させて 頂 く ために、 以 下 の 情 報 を ご 用 意 下 さ い。<br />
• お 名 前 と 会 社 名<br />
• 製 品 のシ リ アル 番 号<br />
• 使 用 している リ リ ースのバージ ョ ン 番 号 や 日 付 など、 ツールのバージ ョ<br />
ン 文 字 列<br />
• プラッ ト フォームの 詳 細 (ハードウェアプラッ ト フォーム、 オペレー<br />
ティングシステムの 種 類 とバージョンなど)<br />
• 問 題 を 再 現 するサ イ ズの 小 さ な 独 立 し たサンプルコー ド<br />
• 操 作 の 目 的 と 実 際 の 動 作 に 関 する 詳 し い 説 明<br />
• 使 用 し た コ マン ド (コ マン ド ラ イ ンオプシ ョ ン を 含 む)<br />
• 問 題 を 例 示 するサンプル 出 力<br />
本 書 に 関 する フ ィ ー ド バ ッ ク<br />
本 書 に 関 するご 意 見 につきましては、 以 下 の 内 容 を 記 載 した 電 子 メールを<br />
errata@arm.com までお 送 り 下 さい。<br />
• マニュアル 名<br />
• 文 書 番 号<br />
• 問 題 のあ るページ 番 号<br />
• 問 題 点 の 簡 潔 な 説 明<br />
補 足 すべき 点 や 改 善 すべき 点 についてのご 提 案 もお 待 ち し てお り ます。<br />
xii Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
第 1 章<br />
はじめに<br />
本 章 では、 <strong>ARM</strong> ® RealView ® Compilation Tools (RVCT) の 概 要 と 、 収 録 さ れて<br />
いる ソ フ ト ウ ェア コ ンポーネン ト と マニ ュ アルについて 説 明 し ます。 以 下 の<br />
セクションから 構 成 されています。<br />
• 「RealView Compilation Tools について」 (ページ 1-2)<br />
• 「RVCT で 使 用 する 環 境 変 数 」 (ページ 1-7)<br />
• 「 追 加 の 詳 細 情 報 」 (ページ 1-9)<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 1-1<br />
Non-Confidential
はじめに<br />
1.1 RealView Compilation Tools について<br />
RVCT は、 サポート ドキュメント とサンプルを 備 えたツールスイートです。<br />
これらのツールを 使 用 すると、 <strong>ARM</strong> プロセッサファ ミ リ 用 のアプリケーショ<br />
ンを 記 述 してビルドするこ とができます。<br />
RVCT を 使 用 する と 、 C、 C++、 または <strong>ARM</strong> のアセンブ リ 言 語 でソフ ト ウェ<br />
アプログラムをビルドできます。<br />
1.1.1 RVCT のコンポーネン ト<br />
このセクションでは、 RVCT コ ンポーネン ト の 概 要 について 説 明 し ます。<br />
開 発 ツール<br />
RVCT には、 以 下 の 開 発 者 向 けツールが 収 録 さ れています。<br />
armcc<br />
armasm<br />
<strong>ARM</strong> コンパイラ。 C コード と C++ コードをコンパイルします。<br />
<strong>ARM</strong> と Thumb ® に 対 応 し ている アセンブラ。<strong>ARM</strong> および Thumb<br />
アセンブ リ 言 語 による ソースファ イルをアセンブルします。<br />
armlink <strong>ARM</strong> リンカ。1 つまたは 複 数 のオブジェ ク ト ファ イルの 内 容 と、<br />
1 つま たは 複 数 のオブジ ェ ク ト ラ イ ブ ラ リ か ら 選 択 さ れた 部 分 を<br />
結 合 し、 実 行 可 能 プ ロ グ ラ ム を 生 成 し ます。<br />
Rogue Wave C++ ライブラリ<br />
Rogue Wave ライブラリは、 標 準 C++ ライブラリを 実 装 したもの<br />
です。 Rogue Wave ライブラリの 詳 細 については、CD-ROM に 収<br />
録 されている HTML 形 式 のマニ ュ アルを 参 照 し て 下 さ い。<br />
C++ ライブラリ<br />
<strong>ARM</strong> C++ ラ イ ブ ラ リ には、 以 下 の 関 数 が 用 意 さ れています。<br />
• C++ コ ンパ イ ル 時 に 使 用 するヘルパ 関 数<br />
• Rogue Wave ライブラリでサポートされていないその 他 の<br />
C++ 関 数<br />
C ライブラリ <strong>ARM</strong> C ライブラリは、C 標 準 および C++ 標 準 で 定 義 さ れてい る<br />
ラ イブラ リ 機 能 を 実 装 し た ものです。 詳 細 については、 『ライブ<br />
ラリ / 浮 動 小 数 点 サポー ト ガ イ ド 』 の 2-2 ページの 「C および<br />
C++ ラ イブラ リ について」 を 参 照 して 下 さい。<br />
1-2 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
はじめに<br />
C マイクロライブラ リ<br />
<strong>ARM</strong> C マイクロライブラ リ (microlib) には、 高 度 に 最 適 化 さ れ<br />
た 一 連 の 関 数 が 用 意 さ れています。 こ れら の 関 数 は、 シ ス テム<br />
の 深 部 に 組 み 込 まれ、 極 めて 小 容 量 の メ モ リ に 収 める 必 要 があ<br />
るアプリケーションで 使 用 されます。 詳 細 については、 『ライブ<br />
ラリ / 浮 動 小 数 点 サポー ト ガ イ ド 』 の 「3. C マイクロライブラ<br />
リ」 の 章 を 参 照 して 下 さい。<br />
fromelf<br />
<strong>ARM</strong> イ メージ 変 換 ユーティリティ。 逆 アセンブリおよびコード<br />
サ イ ズやデータ サ イ ズな ど、 入 力 イ メ ージに 関 する テキ ス ト 情<br />
報 を 生 成 する こ と もできます。<br />
armar <strong>ARM</strong> ライブラリアン。ELF 形 式 のオブジ ェ ク ト フ ァ イルを アー<br />
カイブやライブラ リにまとめて 保 存 するために 使 用 します。 こ<br />
れによ り 、 複 数 の ELF ファイルの 代 わりにライブラリやアーカ<br />
イブを リンカに 渡 すこ とができます。 さらに 高 度 なアプリケー<br />
ション 開 発 でこのアーカイブを 使 用 してサードパーティに 配 布<br />
するこ と もできます。<br />
注<br />
RealView Development Suite (RVDS) は 64 ビッ トの Linux プラッ ト フォームを<br />
サポー ト する よ う にな り ま したが、 RVCT ツールがこれを 利 用 でき る よ う に<br />
特 別 にビル ド さ れたわけではあ り ません。 RVCT のファ イル I/O ルーチンで<br />
は、 標 準 のシ ス テム コールが 32 ビッ トの (signed) int に 収 ま る フ ァ イルサイ<br />
ズで 使 用 されます。 つま り、 イ メージサイズは、 2GB を 超 える メ モ リ 容 量 を<br />
備 えた 64 ビッ トプラッ トフォームまたはコンピュータ 上 でビルドする 場 合<br />
も、 最 大 2GB に 制 限 されている こ とにな り ます。 サイズがこの 制 限 値 を 超 え<br />
ると、 メモリが 不 足 していることを 示 すエラーメッセージがリンカによって<br />
返 さ れます。 その 結 果 、 十 分 な メ モ リ があ る に も かかわ らず、 アプ リ ケー<br />
シ ョ ンがメモリにアクセスできないために 混 乱 を 引 き 起 こすこ とがあり ます。<br />
標 準 への 準 拠<br />
RVCT では、 以 下 の 標 準 に 準 拠 し ています。 各 標 準 ご と に、 準 拠 のレベルが<br />
記 載 さ れています。<br />
ar<br />
UNIX 方 式 のオブジ ェ ク ト コー ド アーカ イ ブは armar によって 生<br />
成 され、armlink に よ っ て 使 用 さ れます。 armar では、 ar 形 式 のほ<br />
とんどのオブジェク ト コードアーカイブをリスト して 抽 出 する<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 1-3<br />
Non-Confidential
はじめに<br />
こ と がで き ます。 ま た、 armlink では、 シンボルテーブルの メ ン<br />
バを 含 んでいる 場 合 、 別 のアーカ イブユーテ ィ リ テ ィ で 作 成 さ<br />
れた ar 形 式 のアーカ イ ブを 使 用 する こ と がで き ます。<br />
DWARF 3<br />
DWARF 2<br />
ISO C<br />
ISO C++<br />
ELF<br />
DWARF 3 (DWARF Debugging Standard バージ ョ ン 3) のデバッグ<br />
テーブルは、 RVDS のすべてのツールでサポー ト されています。<br />
DWARF 2 デバ ッ グテーブルは、 RVCT に 収 録 されているすべて<br />
のツールでサポート されています。 また、 RealView Debugger な<br />
ど、 ELF や DWARF 2 と 互 換 性 のあ る <strong>ARM</strong> 製 のデバッ ガで もサ<br />
ポー ト されています。<br />
<strong>ARM</strong> コンパイラでは、ISO C 1990 および 1999 ソースが 入 力 と し<br />
てサポー ト されています。 詳 細 については、 『コンパイ ラユーザ<br />
ガイド』 の 「ソース 言 語 モード」 を 参 照 して 下 さい。<br />
<strong>ARM</strong> コンパイラでは、 ISO C++ 2003 ソースが 入 力 と してサポー<br />
トされています。<br />
<strong>ARM</strong> コー ド 生 成 ツールは、 再 配 置 可 能 な フ ァ イル と 実 行 フ ァ イ<br />
ルを ELF 形 式 で 生 成 し ます。 fromelf ユーテ ィ リ テ ィ を 使 用 する<br />
と、 ELF ファイルを 別 の 形 式 のファイルに 変 換 することができ<br />
ます。<br />
注<br />
DWARF 2 および DWARF 3 標 準 には、 フ レームデータ のデバ ッ グな ど、 一 部<br />
あいまいな 領 域 があ り ます。 そのため、 <strong>ARM</strong> コード 生 成 ツールによって 生 成<br />
された DWARF をサードパーティ 製 のデバッガで 使 用 できるかど う か、 また<br />
はサードパーテ ィ 製 のデバッ ガによ って 生 成 された DWARF を RealView<br />
Debugger で 使 用 でき るかど う かについての 保 証 はあ り ません。<br />
<strong>ARM</strong> アーキテクチャ 用 ABI ( 基 本 標 準 ) への 準 拠<br />
<strong>ARM</strong> アーキテクチャ 用 ABI (アプ リ ケーシ ョ ンバイナ リ インタ フェース) は<br />
標 準 の 集 合 です。 オープンな 標 準 と <strong>ARM</strong> アーキテクチャ 固 有 の 標 準 があ り<br />
ます。 これらの 標 準 によ り、 ベア メ タルから <strong>ARM</strong> Linux などの 主 要 なオペ<br />
レーテ ィ ングシステムまで、 <strong>ARM</strong> ベースの 実 行 環 境 におけ るバイナ リ コー ド<br />
や 開 発 ツールの 相 互 動 作 が 管 理 さ れます。<br />
こ の 標 準 に 準 拠 する と 、 プ ロデューサの 異 な る <strong>ARM</strong> および Thumb のオブ<br />
ジェク トやオブジェク ト ライブラ リを 連 動 させることができます。<br />
1-4 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
はじめに<br />
<strong>ARM</strong> アーキテクチャ 用 ABI ( 基 本 標 準 ) (BSABI) は、 以 下 の 仕 様 か ら 構 成 さ<br />
れています。<br />
AADWARF <strong>ARM</strong> アーキテクチャ DWARF 標 準 。 この ABI では、 DWARF 3 標<br />
準 を 使 用 して、 オブジェ ク ト のプロデューサとデバッガ 間 のや<br />
り 取 り を 規 定 し ています。<br />
AAELF<br />
AAPCS<br />
BPABI<br />
CLIBABI<br />
CPPABI<br />
EHABI<br />
RTABI<br />
<strong>ARM</strong> アーキテクチャ ELF 標 準 。 汎 用 的 な ELF 標 準 をベース と<br />
し、 プロデューサと コンシューマ 間 でのリ ンク 可 能 ファ イルと<br />
実 行 可 能 フ ァ イルのや り 取 り を 規 定 し ています。<br />
<strong>ARM</strong> アーキテクチャ 向 けプロシージャ コール 標 準 。 実 行 時 の 関<br />
数 間 の 制 御 と データ のや り 取 り を 規 定 し ています。 RVCT でサ<br />
ポー ト さ れてい る 主 要 な 実 行 環 境 の 種 類 ご と に、 AAPCS のバ リ<br />
アン トが 用 意 されています。<br />
<strong>ARM</strong> アーキテ ク チ ャ 用 ベースプ ラ ッ ト フ ォーム ABI。 静 的 なリ<br />
ンカに よ って 生 成 さ れた 実 行 可 能 フ ァ イルや 共 有 オブジ ェ ク ト<br />
フ ァ イルの 形 式 と 内 容 を 規 定 しています。 ポス ト リ ン クを 使 用<br />
し て、 プ ラ ッ ト フ ォーム 固 有 の 実 行 フ ァ イ ルをサポー ト し ます。<br />
プラッ ト フォーム ABI を 派 生 させるのに 使 用 する 基 本 標 準 を 提<br />
供 します。<br />
<strong>ARM</strong> アーキテクチャ 用 C ライブラリ ABI。 ABI と C ライブラリ<br />
の 関 係 を 定 義 し ています。<br />
<strong>ARM</strong> アーキテクチャ 用 C++ ABI。 IA-64 向 けに 開 発 さ れた 汎 用 的<br />
な C++ ABI をベース と し、 独 立 した C++ コンパイラ 間 のイン<br />
ターワー ク を 規 定 し ています。<br />
<strong>ARM</strong> アーキテ ク チャ 用 例 外 処 理 ABI。 例 外 がどのようにスロー<br />
さ れ 処 理 さ れるのかについて、 言 語 に 依 存 し ない 側 面 と C++ 固<br />
有 の 側 面 の 両 方 か ら 定 義 し ています。<br />
<strong>ARM</strong> アーキテクチャ 用 ラ インタ イム ABI。 個 別 に 作 成 されたオ<br />
ブジ ェ ク ト が 浮 動 小 数 点 と コ ンパイ ラヘルパ 関 数 のサポー ト に<br />
おいて 実 行 環 境 に 何 を 期 待 で き る かを を 規 定 し ています。<br />
基 本 標 準 、 ソ フ ト ウ ェ ア イ ン タ フ ェース、 および <strong>ARM</strong> でサポー ト されてい<br />
る 標 準 の 詳 細 については、<br />
install_directory\Documentation_Specifications_4.0\<strong>PDF</strong> を 参 照 して 下 さい。<br />
最 新 版 の 詳 細 については、 http://www.arm.com を 参 照 して 下 さい。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 1-5<br />
Non-Confidential
はじめに<br />
以 前 の リ リ ースの RVCT から 最 新 バージョンの RVCT にアップグレードする<br />
場 合 は、 <strong>ARM</strong> 仕 様 の 最 新 版 を 使 用 し て 下 さ い。<br />
支 援 ソ フ ト ウ ェ ア<br />
シミュレーション 環 境 または <strong>ARM</strong> コアベースのハードウェアでプログラム<br />
をデバッグするには、 RealView Debugger などの 適 切 なデバッガを 使 用 しま<br />
す。 こ のデバ ッ ガは、 GCC 3.4 または RVCT v2.2 以 上 で 生 成 さ れた ELF、<br />
DWARF 2、 および DWARF 3 と 互 換 性 があ り ます。<br />
シミュレーション 環 境 でプログラムをデバッグするには、RealView<br />
<strong>ARM</strong>ulator ® ISS または Instruction Set System Model (ISSM) 支 援 ソフ ト ウェア<br />
を 使 用 し ます。 RealView Armulator ISS は、 RVDS に 付 属 する 命 令 セ ッ ト シ<br />
ミュレータ (ISS) の 1 つです。 RVISS は、 デバ ッ ガ と 通 信 し、 デバッ ガ と 同<br />
じホス ト コンピュータで 実 行 したり、 デバッガを 実 行 しているコンピュータ<br />
とは 異 なる リモートのシステムで 実 行 したりすることができます。 詳 細 につ<br />
いては、 『RealView <strong>ARM</strong>ulator ISS ユーザガイ ド』 を 参 照 して 下 さい。<br />
本 リ リースでは、 Cortex プロセッサ 用 のシミュレータモデルが 使 用 できるよ<br />
うになりました。 これらのモデルには、RealView Debugger の ISSM デバ ッ グ<br />
インタフェースを 使 用 してアクセスできます。<br />
サンプルコード<br />
本 書 では、 RVDS に 付 属 のサンプルを 参 照 します。 これらは、 サンプルディ<br />
レクト リの install_directory\RVDS\Examples にあ り ます。 収 録 さ れてい る サン<br />
プルの 概 要 については、 『RealView Development Suite スタートガイド』 を 参 照<br />
して 下 さい。<br />
1-6 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
はじめに<br />
1.2 RVCT で 使 用 する 環 境 変 数<br />
表 1-1 に RVCT で 使 用 する 環 境 変 数 を 示 し ます。<br />
表 1-1 RVCT で 使 用 する 環 境 変 数<br />
環 境 変 数<br />
<strong>ARM</strong>ROOT<br />
<strong>ARM</strong>LMD_LICENSE_FILE<br />
RVCT40_ASMOPT<br />
RVCT40_CCOPT<br />
RVCT40_FROMELFOPT<br />
RVCT40_LINKOPT<br />
設 定<br />
インストールディレク ト リルート (install_directory)。 デフ ォル ト は C:\Program<br />
Files\<strong>ARM</strong> です。<br />
<strong>ARM</strong> RealView ラ イ セン ス フ ァ イルの 場 所 。 こ の 環 境 変 数 の 情 報 については、<br />
『<strong>ARM</strong> ツール 用 FLEXnet ライセンス 管 理 ガイド』 を 参 照 して 下 さい。<br />
標 準 メ ー ク フ ァ イルの 外 部 で 使 用 さ れる 追 加 の <strong>ARM</strong> アセンブラオプシ ョ ン。 以 下<br />
に 例 を 示 し ます。<br />
--licretry<br />
リストされるオプションは、 メークファイルの armasm コマンドで 指 定 されるオプ<br />
シ ョ ンの 前 に 表 示 さ れます。 し たがって、 こ の 環 境 変 数 で リ ス ト さ れる オプシ ョ<br />
ンは、 メークフ ァ イルで 指 定 されるオプシ ョ ンによってオーバーラ イ ド されます。<br />
標 準 メ ー ク フ ァ イルの 外 部 で 使 用 さ れる 追 加 の <strong>ARM</strong> コンパイラオプション。 以 下<br />
に 例 を 示 し ます。<br />
--licretry<br />
リストされるオプションは、 メークファイルの armcc コマンドで 指 定 されるオプ<br />
シ ョ ンの 前 に 表 示 さ れます。 し たがって、 こ の 環 境 変 数 で リ ス ト さ れる オプシ ョ<br />
ンは、 メークフ ァ イルで 指 定 されるオプシ ョ ンによってオーバーラ イ ド されます。<br />
標 準 メ ー ク フ ァ イルの 外 部 で 使 用 さ れる 追 加 の <strong>ARM</strong> fromelf オプシ ョ ン。 以 下 に<br />
例 を 示 し ます。<br />
--licretry<br />
リストされるオプションは、 メークファイルの fromelf コマンドで 指 定 されるオプ<br />
シ ョ ンの 前 に 表 示 さ れます。 し たがって、 こ の 環 境 変 数 で リ ス ト さ れる オプシ ョ<br />
ンは、 メークフ ァ イルで 指 定 されるオプシ ョ ンによってオーバーラ イ ド されます。<br />
標 準 メ ー ク フ ァ イルの 外 部 で 使 用 さ れる 追 加 の <strong>ARM</strong> リンカオプション。 以 下 に 例<br />
を 示 し ます。<br />
--licretry<br />
リストされるオプションは、 メークファイルの armlink コマンドで 指 定 されたオプ<br />
シ ョ ンの 前 に 表 示 さ れます。 し たがって、 こ の 環 境 変 数 で リ ス ト さ れる オプシ ョ<br />
ンは、 メークフ ァ イルで 指 定 されるオプシ ョ ンによってオーバーラ イ ド されます。<br />
RVCT40BIN RVCT プ ロ グ ラ ム 実 行 可 能 フ ァ イル :<br />
install_directory\RVCT\Programs\...\win_32-pentium<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 1-7<br />
Non-Confidential
はじめに<br />
表 1-1 RVCT で 使 用 する 環 境 変 数 ( 続 き)<br />
環 境 変 数<br />
RVCT40INC<br />
RVCT40LIB<br />
RVDS_PROJECT<br />
RVDS_PROJECT_WORKDIR<br />
設 定<br />
<strong>ARM</strong> コンパイラのインクルードファイル:<br />
install_directory\RVCT\Data\...\include\windows<br />
<strong>ARM</strong> コンパイラのライブラ リファイル:<br />
install_directory\RVCT\Data\...\lib<br />
プロジェク トテンプレートディレク ト リ を 識 別 します。<br />
プ ロ ジ ェ ク ト 作 業 デ ィ レ ク ト リ を 識 別 し ます。<br />
1-8 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
はじめに<br />
1.3 追 加 の 詳 細 情 報<br />
インストールのタイプに 応 じて、 付 属 マニュアルには、 ブラウザベースの<br />
HTML 形 式 と <strong>PDF</strong> 形 式 があ り ます。<br />
注<br />
RVDS マニュアルで 使 用 されている <strong>ARM</strong> 用 語 の 用 語 集 は、 『RealView<br />
Development Suite スタートガイド』 に 付 属 し ています。<br />
付 属 マニ ュ アルをすべて イ ン ス ト ールし た 場 合 、 こ れら のマニ ュ アルには 以<br />
下 のいずれかの 方 法 でア ク セスでき ます。<br />
• プラ ッ ト フォームに 応 じて、 付 属 マニュアルを 表 示 するには、 以 下 の 操<br />
作 を 実 行 します。<br />
— Windows 環 境 では、 以 下 の 順 に 選 択 し ます。<br />
[スタート] → [すべてのプ ロ グ ラ ム] → [<strong>ARM</strong>] → [Help viewer<br />
v1.0]<br />
— Red Hat Linux 環 境 では、 以 下 の 順 に 選 択 し ます。<br />
[スタート] メニュー → [プロ グ ラ ム] → [<strong>ARM</strong>] → [Help<br />
viewer v1.0]<br />
これによってスタンドアロンのビューアが 表 示 され、 そこでは 以 下 の 操<br />
作 を 実 行 できます。<br />
— HTML 形 式 で RVDS マニ ュ アルを 表 示 する<br />
— すべてのマニ ュ アルま たはマニ ュ アルのサブセ ッ ト でテキ ス ト 検<br />
索 を 実 行 する<br />
— 各 マニ ュ アルに 対 応 する <strong>PDF</strong> ファイルにアクセスする<br />
注<br />
スタンドアロンビューアから <strong>PDF</strong> マニュアルを 表 示 する 場 合 、 すべて<br />
の <strong>PDF</strong> マニュアルを 検 索 する こ とはできません。<br />
• プラッ ト フォームに 応 じて、 <strong>PDF</strong> マニ ュ アルを 表 示 するには、 以 下 の 操<br />
作 を 実 行 します。<br />
— Windows 環 境 では、 以 下 の 順 に 選 択 し ます。<br />
[スタート] → [すべてのプ ロ グ ラ ム] → [<strong>ARM</strong>] → [RealView<br />
Development Suite v4.0] → [RVDS v4.0 Documentation Suite]<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 1-9<br />
Non-Confidential
はじめに<br />
— Red Hat Linux 環 境 では、 以 下 の 順 に 選 択 し ます。<br />
[スタート] メ ニュー → [プロ グ ラ ム] → [<strong>ARM</strong>] → [RealView<br />
Development Suite v4.0] → [RVDS v4.0 Documentation Suite]<br />
これによって、 <strong>PDF</strong> 形 式 の RVDS マニュアルへの リ ンクを 含 んだ <strong>PDF</strong><br />
マニ ュ アルが 表 示 さ れます。 すべての <strong>PDF</strong> マニュアルに 対 し、 テキス<br />
ト 検 索 を 実 行 する こ と も で き ます。<br />
Rogue Wave C++ ラ イ ブ ラ リ に 関 する マニ ュ アルは、 すべてのサポー ト さ れて<br />
いるプラ ッ ト フォームで HTML 形 式 で 用 意 さ れています。 標 準 イ ン ス ト ール<br />
では、 デフ ォル ト で、 このマニュ アルがイ ン ス ト ールされます。 詳 細 につい<br />
ては、 「Rogue Wave のマニュアル」 を 参 照 して 下 さい。<br />
1.3.1 Rogue Wave のマニュアル<br />
RVCT の Rogue Wave Standard C++ ライブラリのマニュアルは、 製 品 CD-ROM<br />
に HTML 形 式 で 収 録 さ れています。 こ れら のマニ ュ アルを 表 示 するには、 標<br />
準 の Web ブラウザを 使 用 します。 例 えば、<br />
install_directory\Documentation\RogueWave\1.0\release\stdref\index.htm ファイル<br />
を 選 択 する と 、 Rogue Wave の HTML 形 式 のマニ ュ アルが 表 示 さ れます。<br />
図 1-1 (ページ 1-11) を 参 照 して 下 さい。 この 場 合 、 install_directory は D:\<strong>ARM</strong><br />
です。<br />
1-10 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
はじめに<br />
図 1-1 Rogue Wave の HTML マニュアル<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 1-11<br />
Non-Confidential
はじめに<br />
1-12 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
第 2 章<br />
アプ リ ケーシ ョ ンの 作 成<br />
本 章 では、 <strong>ARM</strong> ® RealView ® Compilation Tools を 使 用 してアプ リ ケーシ ョ ンを<br />
作 成 する 方 法 について 説 明 し ます。 以 下 のセ ク シ ョ ンから 構 成 されています。<br />
• 「<strong>ARM</strong> Compilation Tools の 使 用 」 (ページ 2-2)<br />
• 「<strong>ARM</strong> コ ンパ イ ラ の 使 用 」 (ページ 2-3)<br />
• 「<strong>ARM</strong> アセンブ ラ の 使 用 」 (ページ 2-8)<br />
• 「<strong>ARM</strong> リ ンカの 使 用 」 (ページ 2-7)<br />
• 「fromelf ユーテ ィ リ テ ィ の 使 用 」 (ページ 2-9)<br />
• 「<strong>ARM</strong> Workbench IDE の 使 用 」 (ページ 2-10)<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 2-1<br />
Non-Confidential
アプリケーショ ンの 作 成<br />
2.1 <strong>ARM</strong> Compilation Tools の 使 用<br />
通 常 、 アプ リ ケーシ ョ ン 開 発 には、 以 下 のフ ァ イ ルや 作 業 が 必 要 にな り ます。<br />
• メインアプリケーションの C/C++ ソースコード (armcc)<br />
• 割 り 込 みサービスルーチンなど、 ハードウェアに 近 いコンポーネントの<br />
アセンブ リ ソースコード (armasm)<br />
• すべてのオブジ ェ ク ト を リ ン ク し て イ メ ージを 生 成 (armlink)<br />
• イ メ ージを フ ラ ッ シ ュ メ モ リ 用 の 形 式 (プレーンバ イナ リ 形 式 、 Intel<br />
Hex 形 式 、 Motorola-S 形 式 ) に 変 換 (fromelf)<br />
図 2-1 に、 通 常 のアプ リ ケーシ ョ ン 開 発 で <strong>ARM</strong> Compilation Tools が 互 いにど<br />
のよ うにリ ンクしているかを 示 します。<br />
armcc<br />
armlink<br />
fromelf<br />
C/C++<br />
<strong>ARM</strong> and<br />
Thumb<br />
.c<br />
.o<br />
code<br />
data<br />
debug<br />
code<br />
Assembly<br />
code<br />
.s<br />
armasm<br />
.o<br />
code<br />
data<br />
debug<br />
data<br />
debug<br />
Plain binary<br />
Intel Hex<br />
Motorola-S<br />
Source code<br />
Object code<br />
Image<br />
Flash format<br />
図 2-1 一 般 的 なツール 使 用 の 流 れ 図<br />
2-2 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
アプリケーシ ョ ンの 作 成<br />
2.2 <strong>ARM</strong> コ ンパイ ラの 使 用<br />
<strong>ARM</strong> コンパイラ (armcc) を 使 用 する と、 C および C++ ソースコードを <strong>ARM</strong><br />
および Thumb コードにコンパイルできます。<br />
通 常 、 <strong>ARM</strong> コ ンパ イ ラ を 起 動 する には 以 下 の よ う に 入 力 し ます。<br />
armcc [options] ifile_1 ... ifile_n<br />
複 数 の 入 力 フ ァ イルを 指 定 で き ます。<br />
<strong>ARM</strong> および Thumb コードのコンパイルについて、 および 指 定 したファ イル<br />
名 拡 張 子 に よ って コ ンパイ ラ の 起 動 コ ン フ ィ ギ ュ レーシ ョ ンがどの よ う に 調<br />
整 されるかについては、 『コンパイ ラユーザガイ ド』 の 「 第 2 章 <strong>ARM</strong> コンパ<br />
イラの 使 い 方 」 の 章 を 参 照 して 下 さい。<br />
2.2.1 Dhrystone サンプルのビルド<br />
さまざまなアプリケーションの C ソースコードのサンプルが、 サンプルディ<br />
レクト リにインストールされています。 各 サンプルには readme.txt ファイル<br />
が 付 属 し てお り 、 サンプルコード の 説 明 と、 コード のビル ド 方 法 が 記 載 され<br />
ています。<br />
例 えば、 Dhrystone ベンチマークプログラムのソース コードは、 サンプルディ<br />
レクト リの ...\dhrystone に イ ン ス ト ール さ れています。 こ のプ ロ グ ラ ムは、<br />
シ ス テムの 整 数 処 理 のパフ ォーマン ス 測 定 に 使 用 で き ます。<br />
Dhrystone のサンプルをビルドするには<br />
1. 以 下 の コ マン ド を 使 用 し て、 C ファイル dhry_1.c と dhry_2.c をコンパイ<br />
ルします。<br />
armcc -c -W --debug -O3 -Otime --no_inline --no_multifile -DMSC_CLOCK \<br />
dhry_1.c dhry_2.c<br />
一 般 的 に 使 用 さ れる オプシ ョ ンは 以 下 の と お り です。<br />
-c コンパイルのみ (リンクなし) を 行 うよ うにコンパ<br />
イラに 指 示 します。<br />
--debug<br />
ソースレベルのデバッグを 行 うためのデバッグテー<br />
ブルを 追 加 する よ う に コ ンパ イ ラ に 指 示 し ます。<br />
-O3 高 度 な 最 適 化 を 使 用 してコード を 生 成 する よ う にコ<br />
ンパイ ラに 指 示 します。<br />
-Otime<br />
サイズではな く 速 度 を 重 視 してコード を 最 適 化 する<br />
ようにコンパイラに 指 示 します。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 2-3<br />
Non-Confidential
アプリケーショ ンの 作 成<br />
Dhrystone ベンチマークの 考 え 方 を 踏 襲 するには、--no_inline および<br />
--no_multifile オプシ ョ ンが 必 要 です。<br />
• 関 数 のインラ イン 化 を 無 効 にするには、--no_inline が 必 要 です。<br />
Dhrystone ではプロシージャ をマージし ません。<br />
• マルチフ ァ イルのコ ンパイルを 無 効 にするには、--no_multifile が 必<br />
要 です。 Dhrystone では 2 つのソース フ ァ イルを 別 々にコ ンパイル<br />
する 必 要 があ り ます。<br />
以 下 のオプシ ョ ン も 、 Dhrystone ビルド ファ イルのビルドに 使 用 されま<br />
す。<br />
-W すべての 警 告 メ ッ セージを 無 効 にする よ う に コ ンパ<br />
イラに 指 示 します。<br />
-DMSC_CLOCK タイミングの 測 定 に C ライブラリ 関 数 clock() を 使 用<br />
するよ うにコンパイ ラに 指 示 します。<br />
コ ンパイ ラオプシ ョ ンの 詳 細 については、 『コンパイ ラ リ ファレンスガ<br />
イド』 の 「 第 2 章 コンパイラのコマンドラインオプション」 の 章 を 参<br />
照 して 下 さい。<br />
注<br />
--arm は、 デフ ォル ト のコ ンパイ ラオプシ ョ ンです。 詳 細 については、<br />
「「<strong>ARM</strong> コードのコンパイル」」 を 参 照 して 下 さい。<br />
2. ファイルをリンクします。 「<strong>ARM</strong> リンカの 使 用 」 (ページ 2-7) を 参 照 し<br />
て 下 さい。<br />
3. RealView Debugger などの 互 換 性 のあ るデバ ッ ガを 使 用 し て、 イ メ ージ<br />
をロードして 実 行 します。<br />
dhry_1.c と dhry_2.c の 内 容 、 および Dhrystone のパフ ォーマン スの 計 算 方 法 の<br />
詳 細 については、 サンプル 付 属 の readme.txt ファイルを 参 照 して 下 さい。<br />
2.2.2 <strong>ARM</strong> コードのコンパイル<br />
以 下 の コ ンパイ ラ オプシ ョ ン を 使 用 する と 、 <strong>ARM</strong> コードが 生 成 されます。<br />
--arm<br />
Tnumb コードではな く <strong>ARM</strong> コー ド を 優 先 し て 生 成 する よ う にコ<br />
ンパイ ラに 指 示 します。 ただし、 #pragma thumb を 使 用 する と、 こ<br />
のオプシ ョ ンはオーバーラ イ ド されます。 これはデフォル ト の<br />
コンパイラオプションです。<br />
2-4 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
アプリケーシ ョ ンの 作 成<br />
--arm_only<br />
<strong>ARM</strong> コー ド のみを 生 成 する よ う にコ ンパ イ ラ に 指 示 し ます。 コ<br />
ンパイ ラは、 Thumb コードがターゲッ ト アーキテクチャに 存 在<br />
しない 場 合 と 同 様 に 動 作 します。#pragma thumb 宣 言 は 無 視 さ れま<br />
す。<br />
関 連 項 目<br />
• 『コンパイ ラユーザガイ ド』 の 「#pragma thumb」 (ページ 4-79)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--arm」 (ページ 2-9)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--arm_only」 (ページ 2-17)<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 2-5<br />
Non-Confidential
アプリケーショ ンの 作 成<br />
2.2.3 Thumb コードのコンパイル<br />
Thumb バージ ョ ン を ビル ド するには、 以 下 のコ マン ド を 使 用 し ます。<br />
armcc --thumb ...<br />
各 項 目 には 以 下 の 意 味 があ り ます。<br />
--thumb<br />
<strong>ARM</strong> コードではなく Thumb コー ド を 優 先 し て 生 成 する よ<br />
うにコンパイラに 指 示 します。 ただし、#pragma arm を 使 用<br />
する と、 このオプシ ョ ンはオーバーラ イ ド されます。<br />
関 連 項 目<br />
• 『コンパイ ラユーザガイ ド』 の 「#pragma arm」 (ページ 4-63)<br />
• 『コンパイ ラ リ ファレンスガイ ド』 の 「--thumb」 (ページ 2-136)<br />
2-6 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
アプリケーシ ョ ンの 作 成<br />
2.3 <strong>ARM</strong> リ ン カの 使 用<br />
リンカは、 複 数 のオブジェク ト ファイルの 内 容 をオブジェク ト ライブラ リの<br />
選 択 し た 部 分 と 結 合 し て、 イ メ ージフ ァ イルま たはオブジ ェ ク ト フ ァ イルを<br />
生 成 し ます。<br />
通 常 、 <strong>ARM</strong> リ ンカ を 起 動 するには 以 下 の よ う に 入 力 し ます。<br />
armlink [options] file_1 ... file_n<br />
詳 細 については、 『リンカユーザガイド』 の 「 第 2 章 <strong>ARM</strong> リンカの 使 い 方 」<br />
の 章 を 参 照 し て 下 さい。<br />
2.3.1 Dhrystone サンプルのリ ンク<br />
Dhrystone サンプルプログラムのオブジェ ク ト ファ イルを リ ンクするには、 次<br />
のコ マン ド を 使 用 し ます。<br />
armlink dhry_1.o dhry_2.o -o dhrystone.axf --info totals<br />
各 項 目 には 以 下 の 意 味 があ り ます。<br />
-o 出 力 フ ァ イ ル と し て dhrystone.axf を 指 定 し ます。<br />
--info totals<br />
入 力 オブジ ェ ク ト と ラ イ ブ ラ リ について、 コー ド と データ<br />
のサ イ ズの 合 計 を 表 示 する よ う に リ ンカに 指 示 し ます。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 2-7<br />
Non-Confidential
アプリケーショ ンの 作 成<br />
2.4 <strong>ARM</strong> アセン ブ ラの 使 用<br />
<strong>ARM</strong> アセンブラ (armasm) を 使 用 する ための 基 本 的 な 構 文 を 以 下 に 示 し ます。<br />
armasm [options] inputfile<br />
例 えば、 myfile.s と い う フ ァ イ ル 内 の コー ド を アセンブル し、 生 成 さ れる オブ<br />
ジェ ク ト フ ァ イル 内 にデバッ グ 情 報 を 含 めるには、 以 下 のよ う に 入 力 し ます。<br />
armasm --debug myfile.s<br />
これによ り、myfile.o というオブジェク トファイルが 生 成 されます。<br />
オプシ ョ ン と 構 文 の 詳 細 については、 『アセンブラガイ ド』 の 「コマンド 構<br />
文 」 (ページ 3-2) を 参 照 して 下 さい。<br />
2.4.1 アセンブラソースからのサンプルのビルド<br />
サンプルディ レク ト リ には、 アセンブ リ 言 語 コードのサンプルがインス トー<br />
ル さ れています。 各 サンプルには readme.txt ファイルが 付 属 しており、 サン<br />
プルコード の 説 明 と、 コード のビルド 方 法 が 記 載 されています。 例 えば、 単<br />
純 なプログ ラ ム word.s のコードは、 サンプルディレク ト リの ...\asm にインス<br />
トールされています。<br />
サンプルをビルドするには<br />
1. 以 下 のコマンドを 使 用 して、 ソースファ イルをアセンブルします。<br />
armasm --debug word.s<br />
2. 以 下 の コ マン ド を 使 用 し て、 フ ァ イ ルを リ ン ク し ます。<br />
armlink word.o -o word.axf<br />
3. RealView Debugger などの 互 換 性 のあ るデバ ッ ガを 使 用 し て、 イ メ ージ<br />
をロードしてテスト します。<br />
プログラムをステップスルーし、 レジスタがどのよ うに 変 更 されるかを<br />
調 べます。 こ の 方 法 の 詳 細 については、 デバ ッ ガのマニ ュ アルを 参 照 し<br />
て 下 さい。<br />
2-8 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
アプリケーシ ョ ンの 作 成<br />
2.5 fromelf ユーテ ィ リ テ ィ の 使 用<br />
<strong>ARM</strong> fromelf ユーテ ィ リ テ ィ には 以 下 の 特 徴 があ り ます。<br />
• ELF 実 行 可 能 形 式 の 実 行 可 能 イ メ ージを 他 のフ ァ イル 形 式 に 変 換 し ま<br />
す。<br />
• 出 力 フ ァ イル 内 にデバッグ 情 報 を 含 めるかど う かを 制 御 し ます。<br />
• ELF イメージや ELF オブジェ ク ト フ ァ イルを 逆 アセンブルし ます。<br />
• サー ド パーテ ィ に 配 信 さ れる イ メ ージ と オブジ ェ ク ト の 知 的 所 有 権 を 保<br />
護 します。<br />
• ELF イメージや ELF オブジェ ク ト フ ァ イルに 関 する 情 報 を 出 力 し ます。<br />
詳 細 については、 『ユーテ ィ リ テ ィ ガイ ド』 の 「 第 2 章 fromelf ユーテ ィ リ<br />
ティの 使 用 」 の 章 を 参 照 して 下 さい。<br />
2.5.1 fromelf サン プルの 使 用<br />
以 下 に、 fromelf ユーテ ィ リ テ ィ の 使 用 例 を 示 し ます。<br />
fromelf --text -c -s --output=outfile.lst infile.axf<br />
逆 アセンブルされたコード と ELF イメージのシンボルテーブル<br />
を 含 むプレーンテキス ト 形 式 の 出 力 フ ァ イルを 生 成 し ます。<br />
fromelf --bin --16x2 --output=outfile.bin infile.axf<br />
2 バンク、 16 ビット メモリ 幅 のメモリコンフィギュレーションを<br />
持 つターゲ ッ ト シ ス テム 向 けに、 バイ ナ リ 形 式 で 2 つのフ ァ イル<br />
(outfile0.bin および outfile1.bin) を 生 成 し ます。<br />
2 番 目 の 使 用 例 で 生 成 さ れる 出 力 フ ァ イルは、 フ ラ ッ シ ュ メ モ リ デバイ スへ<br />
の 直 接 書 き 込 みに 適 し ています。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 2-9<br />
Non-Confidential
アプリケーショ ンの 作 成<br />
2.6 <strong>ARM</strong> Workbench IDE の 使 用<br />
<strong>ARM</strong> Workbench IDE によ り、 グラフィカルユーザインタフェースを 使 用 して<br />
ソフトウェア 開 発 プロジェク トを 管 理 できます。 <strong>ARM</strong> Workbench は、 ソ フ ト<br />
ウェア 開 発 とすべての RealView ツールのコンパイルおよびデバッグテク ノ ロ<br />
ジが 組 み 合 わ さ れた 統 合 開 発 環 境 を 実 現 し ます。 こ のワーク ベンチには、 い<br />
く つかの 作 業 プ ロ ジ ェ ク ト が 一 式 、 試 用 サンプル と し て 用 意 さ れています。<br />
これらのサンプルプロジェク ト を 使 用 するには、 ワークベンチを 起 動 し、 サ<br />
ンプルを ワーク スペースにイ ンポー ト する 必 要 があ り ます。 詳 細 については、<br />
『<strong>ARM</strong> Workbench IDE ユーザガ イ ド 』 を 参 照 して 下 さい。<br />
2-10 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
第 3 章<br />
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
本 章 では、 <strong>ARM</strong> ® RealView ® Compilation Tools (RVCT) v4.0 と RVCT v3.1 の 主<br />
な 相 違 点 について 説 明 し ます。 以 下 のセ ク シ ョ ンか ら 構 成 さ れています。<br />
• 「RealView Compilation Tools v4.0 の 概 要 」 (ページ 3-2)<br />
• 「RVCT v4.0 の ド キ ュ メ ン ト の 変 更 点 」 (ページ 3-3)<br />
• 「RVCT v4.0 におけ る <strong>ARM</strong> コ ンパイ ラ の 変 更 点 」 (ページ 3-4)<br />
• 「RVCT v4.0 におけ る ラ イ ブ ラ リ サポー ト の 変 更 点 」 (ページ 3-7)<br />
• 「RVCT v4.0 におけ る <strong>ARM</strong> リ ン カの 変 更 点 」 (ページ 3-8)<br />
• 「RVCT v4.0 におけ る <strong>ARM</strong> アセンブ ラ の 変 更 点 」 (ページ 3-9)<br />
• 「RVCT v4.0 におけ る fromelf ユーテ ィ リ テ ィ の 変 更 点 」 (ページ 3-10)<br />
• 「RVCT v4.0 での 使 用 が 制 限 さ れる 機 能 」 (ページ 3-12)<br />
• 「RVCT v4.0 で 廃 止 さ れた 機 能 」 (ページ 3-13)<br />
• 「RVCT v4.0 と 従 来 のオブジ ェ ク ト およびラ イ ブ ラ リ と の 互 換 性 」 (ペー<br />
ジ 3-14)<br />
RVCT の 以 前 の リ リ ース 間 の 相 違 点 については、 「 付 録 A 以 前 の リ リ ースにつ<br />
いて」 を 参 照 して 下 さい。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 3-1<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
3.1 RealView Compilation Tools v4.0 の 概 要<br />
RVCT v4.0 と RVCT v3.1 の 最 も 重 要 な 相 違 点 を 以 下 に 示 し ます。<br />
• Cortex -A9 (RVDS Professional エデ ィ シ ョ ンのみ) および Cortex-R4F プ<br />
ロセ ッサがサポー ト されま した。 サポー ト されているアーキテ クチャお<br />
よびプロセッサの 詳 しいリ ス ト を 参 照 するには、 --cpu=list コマンドラ<br />
インオプションを 使 用 して 下 さい。<br />
• RVCT および CodeSourcery ツールを 使 用 した Linux アプ リ ケーシ ョ ンの<br />
ビルドのサポート が 強 化 されました。<br />
• シンボルの 可 視 性 が 強 化 さ れま し た。<br />
• fromelf 機 能 が 強 化 さ れま し た。<br />
• リンカのコールグラフ 機 能 が 強 化 されました。<br />
• 事 前 リ ン ク に 適 し た イ メ ージの 生 成 がサポー ト さ れま し た。<br />
• アーキテクチャを 認 識 した 逆 アセンブリがサポート されました。<br />
• Cortex -M3 プ ロ セ ッ サの 初 期 のビ ッ ト バンデ ィ ン グがサポー ト さ れま し<br />
た。<br />
• Cortex -M1 プ ロ セ ッ サの 浮 動 小 数 点 性 能 が 改 善 さ れま し た。<br />
• コード 最 適 化 が 強 化 されました。<br />
• プロファイラによる 最 適 化 がサポート されました。<br />
• リンク 時 のコード 生 成 がサポートされました。<br />
3-2 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
3.2 RVCT v4.0 の ド キュ メ ン ト の 変 更 点<br />
RVCT v4.0 では ド キ ュ メ ン ト に 以 下 の 変 更 が 加 え られま し た。<br />
• 『リンカ/ ユーテ ィ リ テ ィ ガイ ド』 の 内 容 が 以 下 のマニュ アルに 分 割 さ<br />
れました。<br />
— リンカユーザガイド<br />
— リンカリファレンスガイド<br />
— ユーテ ィ リ テ ィ ガイ ド<br />
• 『NEON ベク トル 化 コンパイラガイ ド』 が、 『コンパイ ラユーザガイ ド』<br />
と 『コンパイ ラ リ ファレンスガイ ド』 に 組 み 込 まれま し た。<br />
• 『デベロ ッ パガ イ ド 』 が 最 新 の <strong>ARM</strong> アーキテクチャおよびプロセッサを<br />
反 映 し て 再 編 成 され、 更 新 さ れま し た。<br />
• --licretry オプシ ョ ンの 説 明 が 記 載 されま した。 このオプシ ョ ンは、<br />
<strong>ARM</strong> アセンブラ、 <strong>ARM</strong> コンパイラ、 <strong>ARM</strong> リンカ、および fromelf ユー<br />
ティ リティでサポートされています。<br />
• すべての ド キ ュ メ ン ト が、 関 連 ツールの 機 能 を 反 映 し て 更 新 さ れま し<br />
た。<br />
この リ リ ースのツールに 加 え られた 変 更 の 詳 細 については、 本 章 の 後 半 のセ<br />
クションを 参 照 して 下 さい。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 3-3<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
3.3 RVCT v4.0 における <strong>ARM</strong> コ ンパイ ラの 変 更 点<br />
RVCT v4.0 ではコンパイ ラに 以 下 の 変 更 が 加 えられま した。<br />
• Cortex-A9 および Cortex-R4F プロセッサについて --cpu=Cortex-A9 および<br />
--cpu=Cortex-R4F スイッチを 使 用 できるようになりました。 『コンパイ ラ<br />
リファレンスガイド』 の 「コマンド ラ インオプシ ョ ン」 (ページ 2-2)<br />
を 参 照 して 下 さい。<br />
• 多 く の 新 し い 組 み 込 み 関 数 が 追 加 さ れま し た。 『コンパイ ラユーザガイ<br />
ド』 の 「コ ンパイ ラ 組 み 込 み 関 数 」 (ページ 4-2) を 参 照 して 下 さい。<br />
• <strong>ARM</strong> コードのみを 出 力 し、#pragma thumb 宣 言 を 無 視 する よ う にコ ンパ イ<br />
ラに 指 示 する --arm_only コマンド ラインオプショ ンが 追 加 されました。<br />
『コンパイ ラ リ ファレンスガイ ド』 の 「コマンド ラインオプシ ョ ン」<br />
(ページ 2-2) を 参 照 して 下 さい。<br />
• Linux アプ リ ケーシ ョ ンのビル ド に 役 立 つ 以 下 のコ マン ド ラ イ ンオプ<br />
ションが 追 加 されました。<br />
— --arm_linux<br />
— --arm_linux_config_file<br />
— --arm_linux_configure<br />
— --arm_linux_paths<br />
— --configure_cpp_headers<br />
— --configure_extra_includes<br />
— --configure_extra_libraries<br />
— --configure_gcc<br />
— --configure_gld<br />
— --configure_sysroot<br />
— --shared<br />
— --translate_g++<br />
— --translate_gcc<br />
— --translate_gld<br />
• --fpu コマン ド ラ インオプシ ョ ンに、 以 下 のオプシ ョ ンが 追 加 されま し<br />
た。<br />
— vfpv3_fp16<br />
— vfpv3_d16<br />
— vfpv3_d16_fp16<br />
3-4 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
— softvfp+vfpv3_fp16<br />
— softvfp+vfpv3_d16<br />
— softvfp+vfpv3_d16_fp16<br />
対 応 する 事 前 定 義 のマ ク ロ も 追 加 さ れま し た。 『コンパイ ラユーザガイ<br />
ド』 の 「 浮 動 小 数 点 演 算 の 使 用 」 (ページ 5-36) を 参 照 して 下 さい。<br />
• Cortex-M3 プ ロ セ ッ サのビ ッ ト バンデ ィ ン グ を 可 能 にする ため<br />
__attribute__((bitband)) 型 属 性 が 追 加 さ れま し た。 『コンパイ ラ リ ファレ<br />
ンスガイド』 の 「 型 属 性 」 (ページ 4-47) を 参 照 して 下 さい。<br />
• Cortex-M1 プ ロ セ ッ サの 浮 動 小 数 点 性 能 が 改 善 さ れま し た。 単 精 度 演 算<br />
は 6 倍 以 上 、 倍 精 度 演 算 は 3.5 倍 以 上 速 度 が 改 善 さ れま し た。<br />
• 明 示 的 ま たは 暗 黙 的 に dllexport とマークされたオブジェク トおよび 機<br />
能 に 使 用 さ れる ELF シンボルの 可 視 性 が 変 更 さ れま し た。 RVCT v3.1 で<br />
は STV_DEFAULT セ ク シ ョ ン (プ リ エンプテ ィ ブ) で 定 義 さ れる シンボル<br />
が、 RVCT v4.0 では STV_PROTECTED セクション (エクスポート され 非 プリ<br />
エンプティブ) で 定 義 されます。 ただし、 COMDAT セクションで 定 義 され<br />
るシンボルはそのまま STV_DEFAULT セクションで 定 義 されます。<br />
--no_hide_all コンパイラオプションは 引 き 続 き、STV_HIDDEN ではな く<br />
STV_DEFAULT シンボルを 可 視 化 するので、 シンボルをエクスポートするこ<br />
とと 同 義 ではなくなります。<br />
• 新 しい --retain コ ンパ イ ラ オプシ ョ ン を 使 用 する と 、 コ ンパ イ ラ が 実 行<br />
する コー ド 変 換 を 制 限 でき ます。 例 えば、 イ ン ラ イ ン 関 数 が 未 使 用 の 場<br />
合 、 それら を 削 除 し ない よ う にする こ と がで き ます。 以 下 の 属 性 も 用 意<br />
されています。<br />
— __attribute__((notailcall))<br />
— __attribute__((nomerge))<br />
『コンパイ ラ リ ファレンスガイ ド』 の 「--retain=option」 (ページ<br />
2-126) を 参 照 して 下 さい。<br />
『コンパイ ラ リ ファレンスガイ ド』 の 「 関 数 属 性 」 (ページ 4-35) を 参<br />
照 して 下 さい。<br />
• プロファイラによる 最 適 化 では、 <strong>ARM</strong> Profiler に よ っ て 生 成 さ れたアプ<br />
リケーションプロファイルを 利 用 します。 新 しい --profile オプシ ョ ン<br />
を 使 用 し て コ ンパイ ラや リ ンカにプ ロ フ ァ イルを 入 力 する と 、 サ イ ズが<br />
小 さ く パフ ォーマン スの 優 れた コー ド を 生 成 で き ます。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 3-5<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
• 新 しい --ltgc コ ンパイ ラおよび リ ン カオプシ ョ ン を 使 用 する と リ ン ク 時<br />
の コー ド 生 成 を 実 行 で き る ので、 以 下 の 最 適 化 が 実 現 さ れます。<br />
— モジュールをまたがったインラ イン 化 によ るパフォーマンスの 向<br />
上<br />
— ベース ア ド レ スの 共 有 に よ る コー ド サ イ ズの 縮 小<br />
詳 細 については、 『コンパイ ラユーザガイ ド』 の 「 関 数 の イ ン ラ イ ン 展<br />
開 」 (ページ 5-20) を 参 照 して 下 さい。<br />
• その 他 にも、 次 のコマン ド ラ イ ンオプシ ョ ンが 追 加 されま し た。<br />
— --compatible<br />
— --device<br />
— --fp16_format<br />
— --library_interface=rvct_c90<br />
— --licretry<br />
• GNU ラ イ ブ ラ リ ヘ ッ ダ フ ァ イル と の 互 換 性 を 確 保 する 関 数 が 追 加 さ れ<br />
ました。 『コンパイ ラ リ ファレンスガイ ド』 の 「GNU 組 み 込 み 関 数 」<br />
(ページ 4-126) を 参 照 して 下 さい。<br />
3-6 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
3.4 RVCT v4.0 における ラ イ ブ ラ リ サポー ト の 変 更 点<br />
マ イ ク ロ ラ イ ブ ラ リ と 標 準 ラ イ ブ ラ リ と の 機 能 的 な 相 違 点 が 縮 小 さ れま し た。<br />
ワイド 文 字 IO もサポート されています。 詳 細 については、『ライブラ リ / 浮 動<br />
小 数 点 サポー ト ガ イ ド 』 を 参 照 して 下 さい。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 3-7<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
3.5 RVCT v4.0 における <strong>ARM</strong> リ ン カの 変 更 点<br />
RVCT v4.0 では リ ンカに 以 下 の 変 更 が 加 えられま した。<br />
• 以 下 の コ マン ド ラ イ ンオプシ ョ ンが 追 加 さ れま し た。<br />
--[no_]add_needed<br />
--arm_only<br />
--arm_linux<br />
--[no_]combreloc<br />
--device<br />
--filtercomment<br />
--info=visibility<br />
--no_largeregions<br />
--licretry<br />
--ltcg<br />
--max_open_files<br />
--[no_]muldefweak<br />
--[no_]prelink_support<br />
--profile<br />
--section_index_display=type<br />
以 下 も 参 照 し て 下 さ い。<br />
• 『リンカユーザガイド』 の 「コマンド ラ インオプシ ョ ンの 使 用 」 (ペー<br />
ジ 2-7)<br />
• 『リンカリファレンスガイド』 の 「 第 2 章 リンカコマンドラインオプ<br />
ション」<br />
3-8 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
3.6 RVCT v4.0 における <strong>ARM</strong> アセン ブ ラの 変 更 点<br />
RVCT v4.0 ではアセンブラに 以 下 の 変 更 が 加 えられま した。<br />
• 以 下 の NEON 命 令 と VFP 命 令 が 追 加 さ れま し た。<br />
— 半 精 度 拡 張 を 備 えた VCVT<br />
— 半 精 度 拡 張 を 備 えた VCVTB および VCVTT<br />
『アセンブラガイ ド』 の 「NEON 汎 用 データ 処 理 命 令 」 (ページ 5-43) お<br />
よび 「VFP 命 令 」 (ページ 5-111) を 参 照 して 下 さい。<br />
• Cortex-A9 をサポートするため PLDW 命 令 が 追 加 さ れま し た。 詳 細 につい<br />
ては、 『アセンブラガイ ド』 の 「PLD、 PLDW、 PLI」 (ページ 4-26) を<br />
参 照 し て 下 さ い。<br />
• 以 下 のデ ィ レ ク テ ィ ブで、 シンボル 型 がサポー ト さ れま し た。<br />
— EXPORT<br />
— EXTERN<br />
— GLOBAL<br />
— IMPORT<br />
• 以 下 の コ マン ド ラ イ ン ス イ ッ チが 追 加 さ れま し た。<br />
— --arm_only<br />
— --cpreproc<br />
— --device<br />
— --licretry<br />
詳 細 については、 『アセンブラガイ ド』 の 「 第 3 章 アセンブラに 関 する<br />
参 考 情 報 」 の 章 を 参 照 して 下 さい。<br />
『アセンブラガイ ド』 の 「 一 般 的 な 情 報 」 (ページ 5-15) も 参 照 して 下 さい。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 3-9<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
3.7 RVCT v4.0 における fromelf ユーテ ィ リ テ ィ の 変 更 点<br />
RVCT v4.0 では fromelf ユーテ ィ リ テ ィ に 以 下 のオプシ ョ ンが 追 加 されま し<br />
た。<br />
• --base<br />
• --bincombined<br />
• --bincombined_base<br />
• --bincombined_padding<br />
• --cad<br />
• --cadcombined<br />
• --compare<br />
• --cpu<br />
• --datasymbols<br />
• --device<br />
• --disassemble<br />
• --emit<br />
• --fpu<br />
• --globalize<br />
• --hide<br />
• --hide_and_localize<br />
• --ignore_section<br />
• --ignore_symbol<br />
• --info=instruction_usage<br />
• --in_place<br />
• --interleave<br />
• --licretry<br />
• --localize<br />
• --privacy<br />
• --qualify<br />
• --reinitialize_workdir<br />
• --relax_section<br />
• --relax_symbol<br />
• --rename<br />
• --show<br />
• --show_and_globalize<br />
• --source_directory<br />
3-10 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
• --strip=symbols<br />
• --strip=localsymbols<br />
• --workdir<br />
以 前 は 説 明 さ れていなかったオプシ ョ ン --text -w の 説 明 が 記 載 されま し た。<br />
アーキテクチャ を 認 識 した 逆 アセンブ リ がサポー ト されま した。<br />
詳 細 については、 『ユーテ ィ リ テ ィ ガイ ド』 の 「 第 2 章 fromelf ユーテ ィ リ<br />
ティの 使 用 」 の 章 を 参 照 して 下 さい。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 3-11<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
3.8 RVCT v4.0 での 使 用 が 制 限 される 機 能<br />
RVCT v4.0 では 以 下 の 機 能 の 使 用 が 制 限 さ れています。<br />
• --memaccess コンパイラオプションの 使 用 が 制 限 されています。<br />
• 以 下 の mathlib 関 数 の 使 用 が 制 限 さ れています。<br />
— gamma()<br />
— gamma_r()<br />
— lgamma_r()<br />
— scalb()<br />
— significand()<br />
• 以 下 の Bessel 関 数 の 使 用 が 制 限 さ れています。<br />
— j0()<br />
— j1()<br />
— jn()<br />
— y0()<br />
— y1()<br />
— yn()<br />
• <strong>ARM</strong> アセンブラオプシ ョ ン -O。 小 文 字 ではな く 、 大 文 字 を 使 用 し ます。<br />
3-12 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
3.9 RVCT v4.0 で 廃 止 された 機 能<br />
RVCT v4.0 では 以 下 の 機 能 が 廃 止 さ れています。<br />
• 廃 止 さ れたツールは 以 下 の と お り です。<br />
— armcpp<br />
— tcc<br />
— tcpp<br />
メークファイルでの armcpp、 tcc、 または tcpp への 参 照 は、 armcc --cpp、<br />
armcc --thumb、 armcc --thumb --cpp にそれぞれ 変 更 する 必 要 があ り ます。<br />
• C マクロを 使 用 したロケールと CTYPE のカスタマイズは 廃 止 されまし<br />
た。<br />
• <strong>ARM</strong> アセンブラオプシ ョ ン -D (--depend と 同 義 ) が 廃 止 されました。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 3-13<br />
Non-Confidential
RVCT v4.0 と RVCT v3.1 の 相 違 点<br />
3.10 RVCT v4.0 と 従 来 のオブジ ェ ク ト およびラ イ ブ ラ リ との 互 換 性<br />
--apcs /adsabi を 使 用 してコードをビルドせず、 RVCT v4.0 リンカおよび<br />
C/C++ ラ イ ブ ラ リ を 使 用 し てい る 場 合 、 RVCT v2.x および v3.x オブジェ ク ト /<br />
ラ イ ブ ラ リ コー ド の 下 位 互 換 性 がサポー ト さ れます。 ただ し、 上 位 互 換 性 は<br />
保 証 さ れていません。<br />
以 上 のよ う な 制 限 事 項 があ る ため、 ユーザやサード パーテ ィ によ って 提 供 さ<br />
れる ラ イ ブ ラ リ を 含 むプ ロ ジ ェ ク ト 全 体 を RVCT v4.0 を 使 用 して 再 ビルドす<br />
る こ と をお 勧 め し ます。 こ れは、 潜 在 的 な 非 互 換 性 の 問 題 を 回 避 する ため と 、<br />
最 適 化 や 拡 張 機 能 、 RVCT v4.0 が 提 供 する 新 機 能 を 十 分 に 活 用 する ためです。<br />
3-14 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
付 録 A<br />
以 前 のリ リ ースについて<br />
こ の 付 録 では、 <strong>ARM</strong> ® RealView ® Compilation Tools (RVCT) の 以 前 の リ リ ース<br />
間 の 主 な 相 違 点 について 説 明 し ます。<br />
以 下 のセ ク シ ョ ンか ら 構 成 さ れています。<br />
• 「RVCT v3.1 と RVCT v3.0 の 相 違 点 」 (ページ A-2)<br />
• 「RVCT v3.0 と RVCT v2.2 の 相 違 点 」 (ページ A-12)<br />
• 「RVCT v2.2 SP1 と RVCT v2.2 の 相 違 点 」 (ページ A-24)<br />
• 「RVCT v2.2 と RVCT v2.1 の 相 違 点 」 (ページ A-26)<br />
• 「RVCT v2.1 と RVCT v2.0 の 相 違 点 」 (ページ A-39)<br />
• 「RVCT v2.0 と RVCT v1.2 の 相 違 点 」 (ページ A-44)<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-1<br />
Non-Confidential
以 前 のリ リ ースについて<br />
A.1 RVCT v3.1 と RVCT v3.0 の 相 違 点<br />
このセクションでは、 RVCT v3.1 と RVCT v3.0 と の 間 の 相 違 点 について 説 明<br />
します。<br />
A.1.1<br />
RVCT v3.1 の 概 要<br />
• RVCT v3.1 では、 以 下 の 新 しい --cpu オプシ ョ ンがサポー ト されま した。<br />
— <strong>ARM</strong>v7 は 認 定 された <strong>ARM</strong> アーキテクチャではあ り ません。<br />
--cpu=7 は、 <strong>ARM</strong>v7-A、 <strong>ARM</strong>v7-R、 および <strong>ARM</strong>v7-M のすべての<br />
アーキテ クチャに 共 通 の 機 能 を 示 し ます。 すなわち、 --cpu=7 とと<br />
もに 使 用 される 機 能 が <strong>ARM</strong>v7-A、 <strong>ARM</strong>v7-R、 <strong>ARM</strong>v7-M のすべて<br />
のアーキテクチャ 上 に 存 在 します。<br />
— Cortex プロセッサ<br />
--cpu=Cortex-R4<br />
--cpu=Cortex-M1<br />
--Cortex-A8NoNEON<br />
— Marvell Feroceon プロセッサ --cpu=88FRxxx<br />
サポー ト さ れるすべてのアーキテ ク チ ャ と プ ロ セ ッ サの リ ス ト を 参 照 す<br />
るには、--cpu=list を 使 用 し ます。 詳 細 については、 『コンパイ ラ リ ファ<br />
レンスガイド』 の 「--cpu=list」 (ページ 2-34) および<br />
「--cpu=name」 (ページ 2-35) を 参 照 して 下 さい。<br />
• RVCT v3.1 では、 オプシ ョ ン --apcs=/adsabi が 使 用 でき な く な り ま し た。<br />
ADS 互 換 オブジ ェ ク ト の コ ンパ イ ルおよび 古 い ADS オブジェ ク ト と ラ<br />
イブラ リのリンクも 実 行 できなくなり ました。<br />
• RVCT v3.1 では、 C99 言 語 が 完 全 にサポー ト さ れています ( 複 素 数 と ワ<br />
イド I/O を 除 く )。 詳 細 については、 『コンパイ ラユーザガイ ド』 の<br />
「C99 の 新 機 能 」 (ページ 5-51) を 参 照 して 下 さい。<br />
• RVCT v3.1 では、 NEON テ ク ノ ロ ジが 完 全 にサポー ト さ れています。<br />
詳 細 については、 『コンパイ ラユーザガイ ド』 の 「 第 3 章 NEON ベク ト<br />
ル 化 コ ンパイ ラ の 使 用 」 の 章 および 「NEON コ ンパ イ ラ 組 み 込 み 関 数 」<br />
(ページ 4-12) を 参 照 して 下 さい。<br />
• RVCT v3.1 では、 シ ス テムの 深 部 に 組 み 込 まれ、 極 めて 小 容 量 の メ モ リ<br />
に 収 め る 必 要 があ る アプ リ ケーシ ョ ンで 使 用 する ために、 標 準 的 な C ラ<br />
イブラ リの 代 わりに C マイクロライブラ リ (microlib) が 用 意 されてい<br />
A-2 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
ます。 microlib は ISO C 標 準 に 完 全 には 準 拠 し ていません。 詳 細 につい<br />
ては、 『ライブラ リ / 浮 動 小 数 点 サポー ト ガ イ ド 』 の 「 第 3 章 C マイク<br />
ロライブラリ」 の 章 を 参 照 して 下 さい。<br />
• RVCT v3.1 では、 ロ ケール 関 数 と CTYPE 関 数 をカスタマイズするため<br />
のアセンブラ マ ク ロが 用 意 されています。 詳 細 については、 『ライブラ<br />
リ / 浮 動 小 数 点 サポー ト ガ イ ド 』 の 「アセンブラマク ロによ る ロケール<br />
と CTYPE のカスタマイズ」 (ページ 2-51) を 参 照 して 下 さい。<br />
• RVCT v3.1 では、 固 有 のコ ンパイ ラ 組 み 込 み 関 数 に よ って、 C および<br />
C++ で 記 述 された <strong>ARM</strong> アーキテクチャベースのプロセッサの 低 レベル<br />
機 能 に 簡 単 にア ク セスでき ます。 詳 細 については、 『コンパイラユーザ<br />
ガイド』 の 「 命 令 の コ ンパイ ラ 組 み 込 み 関 数 」 (ページ 4-4) を 参 照 し<br />
て 下 さい。<br />
• RVCT v3.1 では、 ETSI コ ンパイ ラ 組 み 込 み 関 数 も サポー ト さ れていま<br />
す。 詳 細 については、 『コンパイ ラユーザガイ ド』 の 「ETSI の 基 本 操<br />
作 」 (ページ 4-7) を 参 照 して 下 さい。<br />
• RVCT v3.1 では、 C55x コ ンパイ ラ 組 み 込 み 関 数 も サポー ト さ れていま<br />
す。 詳 細 については、 『コンパイ ラユーザガイ ド』 の 「TI C55x コンパイ<br />
ラ 組 み 込 み 関 数 」 (ページ 4-10) を 参 照 して 下 さい。<br />
• RVCT v3.1 では、 コールグ ラ フ、 スキャ ッ タ ロード フ ァ イル、 および 実<br />
行 領 域 へのセ ク シ ョ ン 配 置 のサポー ト も 強 化 されま し た。 詳 細 について<br />
は、 『リンカリファレンスガイド』 の 「--[no_]callgraph」 (ページ<br />
2-8) を 参 照 して 下 さい。<br />
• RVCT v3.1 では、 配 信 可 能 な イ メ ージおよびオブジ ェ ク ト の 知 的 所 有 権<br />
の 保 護 が 強 化 さ れま し た。 詳 細 については、 「RVCT v3.1 におけ る fromelf<br />
ユーテ ィ リ テ ィ の 変 更 点 」 (ページ A-11) を 参 照 して 下 さい。<br />
• RVCT v3.1 には、 フ ァ イルパスの 冗 長 なパス 名 情 報 の 除 外 を 制 御 で き る<br />
オプシ ョ ンが 用 意 されています。 このオプシ ョ ンは、 <strong>ARM</strong> コンパイラ、<br />
リ ンカ、 およびアセンブラで 使 用 する こ と ができ ます。 詳 細 について<br />
は、 『リンカリファレンスガイド』 の 「--[no_]reduce_paths」<br />
(ページ 2-52) を 参 照 して 下 さい。<br />
• RVDS v3.1 には、 主 なプ ロ ジ ェ ク ト 管 理 機 能 と し て Eclipse IDE が 含 まれ<br />
ています。Eclipse Plug-in for RVDS には、 RVCT のすべてのオプシ ョ ンを<br />
設 定 する ための 統 合 コ ン フ ィ ギ ュ レーシ ョ ンパネルが 用 意 さ れていま<br />
す。 詳 細 については、 『RealView Development Suite Eclipse Plug-in ユーザ<br />
ガイド』 を 参 照 して 下 さい。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-3<br />
Non-Confidential
以 前 のリ リ ースについて<br />
• RVDS v3.1 では、 --verbose コマンド ラインオプショ ンで、stderr ではな<br />
く stdout に 診 断 情 報 が 出 力 さ れる よ う に 変 更 さ れま し た。 こ の 診 断 情 報<br />
を フ ァ イ ルに 転 送 する には、 --errors ではな く --list を 使 用 する 必 要 が<br />
あります。<br />
A.1.2<br />
RVCT v3.1 で 廃 止 された 機 能<br />
RVCT v3.1 では、 以 下 の 相 違 点 に 注 意 し て 下 さい。<br />
• Solaris プラッ ト フォームは、 RVCT v3.1 ではサポー ト されていません。<br />
• Red Hat Linux Enterprise v3 32 ビッ トホストプラッ トフォームは、 RVCT<br />
v3.1 ではサポー ト されていません。<br />
• コンパイラオプション --apcs=/adsabi は、RVCT v3.1 ではサポー ト されて<br />
いません。<br />
• RVCT v3.0 で 使 用 が 制 限 さ れていた 機 能 はすべて、 RVCT v3.1 では 使 用<br />
されなくなりました。 詳 細 については、「RVCT v3.0 での 使 用 が 制 限 され<br />
る 機 能 」 (ページ A-15) を 参 照 して 下 さい。<br />
A.1.3<br />
RVCT v3.1 での 使 用 が 制 限 される 機 能<br />
RVCT v3.1 では、 以 下 の 相 違 点 に 注 意 し て 下 さい。<br />
• 以 下 のツール 名 は 使 用 が 制 限 されています。<br />
— armcpp<br />
— tcc<br />
— tcpp<br />
• .ac や .tc な どのフ ァ イル 拡 張 子 を 使 用 し て 命 令 セ ッ ト を 切 り 替 え る 機 能<br />
は 使 用 が 制 限 されています。<br />
• <strong>ARM</strong>v7-A、 <strong>ARM</strong>v7-R、 <strong>ARM</strong>v7-M およびそれ 以 降 のアーキテクチャ 向<br />
けにコンパイルする と きは、 インラ インアセンブラの 使 用 が 制 限 されま<br />
す。 <strong>ARM</strong>v7-A と <strong>ARM</strong>v7-R の 場 合 、 コ ンパ イ ラ に よ って 警 告 が 生 成 さ れ<br />
ます。 <strong>ARM</strong>v6-M と <strong>ARM</strong>v7-M の 場 合 、 Thumb コードの 生 成 時 にコンパ<br />
イラによってエラーが 生 成 されます。<br />
• 以 下 のオプシ ョ ンは 使 用 が 制 限 さ れています。<br />
— --split_ldm<br />
— --memaccess<br />
A-4 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
• C マクロを 使 用 したロケールと CTYPE のカスタマイズは、 使 用 が 制 限<br />
されています。<br />
• fromelf オプシ ョ ン --no_comment_section は 使 用 が 制 限 され、 説 明 は ド<br />
キュメントに 記 載 されていません。 代 わりに、--strip=comment オプシ ョ ン<br />
を 使 用 して 下 さい。<br />
• 以 下 のアセンブ ラ 機 能 は 使 用 が 制 限 さ れています。<br />
— VFP ベク タモー ド は 新 しいコー ド では 使 用 が 制 限 され、 ベク タ 表<br />
記 は 統 一 アセンブラ 言 語 ではサポー ト されていません。 ベク タ 表<br />
記 を 使 用 するには、 古 い VFP ニーモニ ッ ク を 使 用 する 必 要 があ り<br />
ます。<br />
— 最 新 の CPU では、 ユーザモード でア クセス 可 能 なビ ッ ト にア クセ<br />
スするための CPSR の 使 用 が 制 限 されています。 この 場 合 は、<br />
APSR を 使 用 して 下 さい。<br />
— <strong>ARM</strong>v6T2 以 降 の STC および STC2 での PC 相 対 ア ド レ シングの 使 用<br />
が 制 限 されています。<br />
— --checkreglist ( 代 わ り に --diag_warning 1206 を 使 用 して 下 さい)。<br />
— レジスタリスト 内 のベースレジスタおよびライトバックを 指 定 し<br />
た 16 ビッ ト LDM および STM の 使 用 が 制 限 されています。<br />
A.1.4<br />
RVCT v3.1 における <strong>ARM</strong> コ ンパイ ラの 変 更 点<br />
RVCT v3.1 の コ ンパイ ラ では、 以 下 の 相 違 点 に 注 意 し て 下 さ い。<br />
• --cpu コマンド ラインオプショ ンでは、 新 しいアーキテクチャおよびプ<br />
ロ セ ッ サがサポー ト さ れています。 詳 細 については、 「RVCT v3.1 の 概<br />
要 」 (ページ A-2) を 参 照 して 下 さい。<br />
• C コード または C++ コードから 直 接 NEON ベクタ 命 令 を 生 成 するため<br />
の --vectorize コマンド ラインオプショ ン。 詳 細 については、 『コンパイ<br />
ラリファレンスガイド』 の 「--vectorize, --no_vectorize」 (ペー<br />
ジ 2-146) を 参 照 して 下 さい。<br />
注<br />
このオプショ ンを 使 用 するには、 NEON ベク トル 化 コンパイラライセン<br />
スが 必 要 です。 このライセンスは、 RVDS Professional エデ ィ シ ョ ンに 付<br />
属 しています。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-5<br />
Non-Confidential
以 前 のリ リ ースについて<br />
• --c99 コマンドラインオプショ ンでは、 C99 言 語 が 完 全 にサポー ト さ れ<br />
ています ( 複 素 数 と ワ イ ド I/O を 除 く)。<br />
• 関 連 する ラ ン タ イ ム ラ イ ブ ラ リ を 選 択 する ための --library_type=lib コマ<br />
ン ド ラ イ ンオプシ ョ ン。 詳 細 については、 『コンパイ ラ リ ファレンスガ<br />
イド』 の 「--library_type=lib」 (ページ 2-90) を 参 照 して 下 さい。<br />
• 小 容 量 のグ ローバル ZI データ 項 目 の 配 置 を 制 御 する ための<br />
--bss_threshold=num コマンド ラインオプショ ン。<br />
• 最 適 化 用 の 診 断 メ ッ セージを 制 御 する ための<br />
--diag_suppress=optimizations および --diag_warning=optimizations コマンド<br />
ラインオプション。<br />
• 可 変 長 配 列 のサポー ト を 制 御 する ための --[no_]vla コマンド ラインオプ<br />
ション。<br />
• wchar_t の 型 を 変 更 する ための --wchar16 および --wchar32 コマンド ライン<br />
オプシ ョ ン。<br />
• --apcs=/adsabi は、 RVCT v3.1 ではサポー ト されていません。<br />
• ファ イルパスの 冗 長 なパス 名 情 報 の 除 外 を 制 御 できる<br />
--[no_]reduce_paths オプシ ョ ン。<br />
• C および C++ から SIMD 命 令 を 生 成 で き る NEON 組 み 込 み 関 数 が 用 意<br />
されています。<br />
• 選 択 し た Texas Instruments C55x コ ンパイ ラ 組 み 込 み 関 数 のエ ミ ュ レー<br />
ションがサポートされています。<br />
• ス ピーチコーデ ッ ク を 実 装 する ための ETSI の 基 本 操 作 がサポー ト さ れ<br />
ています。<br />
• __attribute__((section("name")))。 --autoat コマンド ラインオプショ ンで<br />
使 用 する 配 置 ア ド レ ス をエン コー ド し ます。<br />
• 固 有 の コ ンパイ ラ 組 み 込 み 関 数 に よ って、 C および C++ で 記 述 された<br />
<strong>ARM</strong> アーキテクチャベースのプロセッサの 低 レベル 機 能 に 簡 単 にア ク<br />
セスできます。<br />
A-6 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
A.1.5<br />
RVCT v3.1 における ラ イ ブ ラ リ サポー ト の 変 更 点<br />
RVCT v3.1 のラ イブラ リ サポー ト では、 以 下 の 相 違 点 に 注 意 し て 下 さい。<br />
• RVCT v3.1 には、 新 し い ラ イ ブ ラ リ 命 名 規 則 があ り ます。<br />
• RVCT v3.1 では、 シ ス テムの 深 部 に 組 み 込 まれ、 極 めて 小 容 量 の メ モ リ<br />
に 収 める 必 要 があ る アプ リ ケーシ ョ ンで 使 用 する ラ イブラ リ がサポー ト<br />
されています。 microlib に 新 たに 導 入 さ れた 一 連 の 関 数 は、 標 準 に 完 全<br />
には 準 拠 していませんが、 コードサイズが 最 も 小 さ くなるよ うに 十 分 に<br />
最 適 化 さ れています。<br />
• RVCT v3.1 では、 ロ ケール 関 数 と CTYPE 関 数 をカスタマイズするため<br />
のアセンブラマク ロが 用 意 されています。<br />
以 下 も 参 照 し て 下 さ い。<br />
• RVCT ライブラリ / 浮 動 小 数 点 サポー ト ガ イ ド<br />
A.1.6<br />
RVCT v3.1 における <strong>ARM</strong> リ ン カの 変 更 点<br />
RVCT v3.1 の リ ンカでは、 以 下 の 相 違 点 に 注 意 し て 下 さ い。<br />
• イメージコードおよびデータサイズを 要 約 するための --info<br />
summarysizes 属 性 。<br />
• --cpu=name コ マン ド ラ イ ンオプシ ョ ン を 使 用 する と 、 選 択 し た <strong>ARM</strong> プロ<br />
セ ッ サま たはアーキテ ク チャ の 上 限 を 指 定 で き ます。<br />
• --fpu=name コ マン ド ラ イ ンオプシ ョ ン を 使 用 する と 、 選 択 し た FPU アー<br />
キテクチャの 上 限 を 指 定 できます。<br />
• --bpabi コマンド ラインオプショ ンを 使 用 すると、 BPABI 実 行 可 能 フ ァ<br />
イルを 生 成 できます。<br />
• --dll コマンド ラインオプショ ンを 使 用 すると、 BPABI DLL を 生 成 でき<br />
ます。<br />
• --predefine="string" コ マン ド ラ イ ンオプシ ョ ン を 使 用 する と 、 ス キ ャ ッ<br />
タファイルの 最 初 の 行 で 指 定 されているプリプロセッサにコマンドが 渡<br />
されます。<br />
• --[no_]reduce_paths オプシ ョ ン を 使 用 する と 、 フ ァ イルパスの 冗 長 なパ<br />
ス 名 情 報 の 除 外 を 制 御 できます。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-7<br />
Non-Confidential
以 前 のリ リ ースについて<br />
• --autoat コ マン ド ラ イ ンオプシ ョ ン を 使 用 する と 、 実 行 領 域 への __at セ<br />
ク シ ョ ンの 自 動 配 置 を 制 御 で き ます。<br />
• --verbose コマンドラインオプショ ンを 使 用 すると、stout に 診 断 結 果 を<br />
出 力 で き ます。 こ の 診 断 情 報 を フ ァ イ ルに 転 送 する には、--list を 使 用<br />
する 必 要 があ り ます。 詳 細 については、 『 リ ン カ リ フ ァ レ ン スガ イ ド 』<br />
の 「--verbose」 (ページ 2-68) を 参 照 して 下 さい。<br />
• __at セクションに 変 数 を 割 り 当 てるには、<br />
__attribute__((section("name"))) を 使 用 してセクシ ョ ン 名 を 明 示 的 に 指 定<br />
するか、 または __attribute__((at("name"))) を 使 用 してセクシ ョ ン 名 を 自<br />
動 的 に 設 定 し ます。 詳 細 については、 『リンカユーザガイド』 の 「 領 域<br />
アドレスとセクションアドレスの 指 定 の 例 」 (ページ 5-9) を 参 照 して<br />
下 さい。<br />
• ス キ ャ ッ タ ロー ド フ ァ イルの 境 界 調 整 のための ALIGN alignment 属 性 。<br />
• 入 力 セ ク シ ョ ン を 実 行 領 域 に 割 り 当 て る 際 の .ANYnum を 使 用 し た 優 先 順<br />
位 付 け。<br />
• 実 行 領 域 の 内 容 を 処 理 する ための 属 性<br />
— ELF フ ァ イルのセ ク シ ョ ン を 初 期 化 する ための ZEROPAD 属 性 。<br />
— パデ ィ ングバイ ト の 値 を 設 定 する ための PADVALUE 属 性 。<br />
— 値 を 含 んでいる リ ンカ 生 成 領 域 を 作 成 するための FILL 属 性 。<br />
• BPABI の 異 な る ア ド レ シン グモー ド に 対 応 する テーブルを 生 成 する ため<br />
の --pltgot=type、 --pltgot_opts=mode、 および --info pltgot コマンド ライ<br />
ンオプシ ョ ン。<br />
• 関 連 する ラ ン タ イ ム ラ イ ブ ラ リ を 選 択 する ための --library_type=lib コマ<br />
ン ド ラ イ ンオプシ ョ ン。 詳 細 については、 『コンパイ ラ リ ファレンスガ<br />
イド』 の 「--library_type=lib」 (ページ 2-90) を 参 照 して 下 さい。<br />
• 以 下 の コールグ ラ フオプシ ョ ン。<br />
— --callgraph_file=filename は 出 力 フ ァ イルの 名 前 を 定 義 します。<br />
— --callgraph_output=fmt は 出 力 フ ァ イルの 種 類 を 定 義 し ます。<br />
— --cgfile=opt はコールグラフの 内 容 を 制 御 します。<br />
— --cgsymbol=type はコールグラフの 内 容 を 制 御 します。<br />
— --cgundefined=type はコールグラフの 内 容 を 制 御 します。<br />
A-8 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
• RVCT v3.1 の リ ンカは、 相 対 ベースア ド レ ス 時 のロード 領 域 の 解 釈 が 異<br />
なっています。 以 前 のロード 領 域 のゼ ロ で 初 期 化 さ れた (ZI) データを<br />
考 慮 し て ロー ド 領 域 のベース ア ド レ ス を 調 整 する こ と はあ り ません。<br />
例 A-1 に、 重 複 し たデータ を 含 むス キ ャ ッ タ フ ァ イルを 示 し ます。<br />
例 A-1 LR2 の 相 対 ベースア ド レ スを 含 むスキャ ッ タ フ ァ イル<br />
LR1 0x8000<br />
{<br />
er_progbits +0<br />
{<br />
*(+RO,+RW) ; Takes space in the Load Region<br />
}<br />
er_zi +0<br />
{<br />
*(+ZI) ; Takes no space in the Load Region<br />
}<br />
}<br />
LR2 +0 ; Load Region follows immediately from LR1<br />
{<br />
er_moreprogbits +0<br />
{<br />
file1.o(+RO) ; Takes space in the Load Region<br />
}<br />
}<br />
RVCT v3.1 では、 データの 重 複 が 検 出 される と エラー メ ッ セージが 表 示<br />
されます。 これを 回 避 するには、LR2 のベースア ド レ ス を 計 算 する ため<br />
の 式 がス キ ャ ッ タ フ ァ イルに 必 要 です。 例 A-2 に 修 正 し たスキ ャ ッ タ<br />
ファイルを 示 します。<br />
例 A-2 LR2 のベースア ド レスを 計 算 し たスキャ ッ タ フ ァ イル<br />
LR1 0x8000<br />
{<br />
er_progbits +0<br />
{<br />
*(+RO,+RW) ; Takes space in the Load Region<br />
}<br />
er_zi +0<br />
{<br />
*(+ZI) ; Takes no space in the Load Region<br />
}<br />
}<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-9<br />
Non-Confidential
以 前 のリ リ ースについて<br />
LR2 ImageLimit(er_zi) ; Set the address of LR2 to limit of er_zi<br />
{<br />
er_moreprogbits +0<br />
{<br />
file1.o(+RO) ; Takes space in the Load Region<br />
}<br />
}<br />
A.1.7<br />
RVCT v3.1 における <strong>ARM</strong> アセンブ ラの 変 更 点<br />
RVCT v3.1 のアセンブラでは、 以 下 の 相 違 点 に 注 意 し て 下 さい。<br />
• --cpu コマンドラインオプショ ンでは、 新 しいアーキテクチャおよびプ<br />
ロセッサがサポート されています。 詳 細 については、 「RVCT v3.1 の 概<br />
要 」 (ページ A-2) を 参 照 して 下 さい。<br />
• 関 連 する ラ ン タ イ ム ラ イ ブ ラ リ を 選 択 する ための --library_type=lib コマ<br />
ンドラインオプション。<br />
• ファ イルパスの 冗 長 なパス 名 情 報 の 除 外 を 制 御 できる<br />
--[no_]reduce_paths オプシ ョ ン。<br />
• CPSR のユーザモード ビ ッ ト には APSR を 使 用 し ます。<br />
• VFP ベク タモー ド は 新 しいコー ド では 使 用 が 制 限 され、 ベク タ 表 記 は 統<br />
合 アセンブラ 言 語 ではサポー ト されていません。<br />
• Intel Wireless MMX2 命 令 がサポー ト さ れています。<br />
• CODEALIGN 属 性 は、 AREA ディレクティブで 設 定 できます。<br />
• --depend_format=string に よ って、 出 力 に 依 存 する フ ァ イルの 形 式 が 変 更<br />
されます。<br />
• --no_code_gen オプシ ョ ンは、 --depend とともに 使 用 され、オブジェクト<br />
ファイルは 生 成 されません。<br />
• UND は 新 しいデ ィ レ ク テ ィ ブで、 アーキテ ク チャ 上 で 定 義 されていない<br />
命 令 をエン コー ド し ます。<br />
詳 細 については、 『アセンブラガイ ド』 を 参 照 して 下 さい。<br />
A-10 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
A.1.8<br />
RVCT v3.1 における fromelf ユーテ ィ リ テ ィ の 変 更 点<br />
RVCT v3.1 では、 以 下 の 相 違 点 に 注 意 し て 下 さ い。<br />
• セクシ ョ ンの 名 前 を 変 更 するための --privacy コマンドラインオプショ<br />
ン。<br />
• 配 信 可 能 な イ メ ージ と オブジ ェ ク ト の 知 的 所 有 権 を 保 護 する ための<br />
--strip コマンド ラインオプショ ン。<br />
以 下 も 参 照 し て 下 さ い。<br />
• ユーテ ィ リ テ ィ ガイ ド<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-11<br />
Non-Confidential
以 前 のリ リ ースについて<br />
A.2 RVCT v3.0 と RVCT v2.2 の 相 違 点<br />
このセクションでは、 RVCT v3.0 と RVCTv2.2 の 相 違 点 について 説 明 し ます。<br />
A.2.1<br />
RVCT v3.0 における 主 な 変 更 点<br />
RVCT v3.0 では、 次 の 点 が 変 更 されま した。<br />
• RVCT v3.0 では、 以 下 の 2 つの <strong>ARM</strong>v7 アーキテ クチャのプロ フ ァ イル<br />
がサポー ト されます。<br />
<strong>ARM</strong>v7-A<br />
仮 想 (MMU ベース) メ モ リ シ ス テム 向 けの、 <strong>ARM</strong> 命 令 セ ッ<br />
トと Thumb-2 命 令 セ ッ ト をサポー ト する シ ス テムに 対 応 する、<br />
Thumb ® -2EE が 指 定 されたアプ リ ケーシ ョ ンプロ フ ァ イル。<br />
<strong>ARM</strong>v7-M<br />
Thumb-2 のみに 対 応 するマイ ク ロ コ ン ト ローラプロ フ ァ イル。<br />
RVCT v3.0 では、 <strong>ARM</strong>v4 以 降 のすべての <strong>ARM</strong> アーキテクチャがサポー<br />
トされます。<strong>ARM</strong>v4 より 前 のすべてのアーキテクチャ 名 は 使 用 されな<br />
くなったため、 サポートされていません。<br />
• RVCT v3.0 では、 以 下 の 2 つの <strong>ARM</strong> Cortex プロセッサファ ミ リがサ<br />
ポー ト されます。<br />
— Cortex -A8<br />
— Cortex -M3<br />
サポー ト さ れるすべてのアーキテ ク チ ャ と プ ロ セ ッ サの リ ス ト を 参 照 す<br />
るには、 次 のコマンドを 使 用 します。<br />
armcc --cpu list<br />
• RVCT v3.0 では、 Advanced SIMD 拡 張 (NEON テクノロジとも 呼 ばれま<br />
す) および VFPv3 という <strong>ARM</strong>v7 アーキテクチャの 2 つのコ ンポーネン<br />
トが 先 行 してサポートされます。つまり、 多 数 の SIMD ( 単 一 命 令 複 数<br />
データ 処 理 ) 命 令 といくつかの VFPv3 命 令 を <strong>ARM</strong> 命 令 セ ッ ト と<br />
Thumb-2 命 令 セ ッ ト の 両 方 で 使 用 で き ます。<br />
NEON は、 信 号 処 理 アプ リ ケーシ ョ ンおよび 組 み 込 みプ ロ セ ッ サを<br />
ターゲッ トにした、 64 ビッ ト と 128 ビッ トのハイブリッド SIMD テクノ<br />
ロジです。 NEON はプロセ ッ サの 一 部 と し て 実 装 されますが、 独 自 の 実<br />
行 パイ プ ラ イ ン と 、 <strong>ARM</strong> のレジスタバンク とは 別 のレジスタバンクを<br />
持 ちます。 NEON 命 令 は、 <strong>ARM</strong> と Thumb-2 の 両 方 で 使 用 でき ます。<br />
A-12 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
サポー ト さ れるすべての 浮 動 小 数 点 アーキテ ク チャ の リ ス ト を 参 照 する<br />
には、 次 の コ マン ド を 使 用 し ます。<br />
armcc --fpu list<br />
• RVCT v3.0 では、 <strong>ARM</strong>v7 用 の Thumb-2 Execution Environment<br />
(Thumb-2EE) がサポート されます。 Thumb-2EE 命 令 セ ッ ト は、<br />
Thumb-2 をベースに、 動 的 に 生 成 さ れる コー ド に 合 わせた 変 更 や 追 加 が<br />
行 われています。<br />
Thumb-2EE 拡 張 機 能 に よ り 、 新 し い 命 令 セ ッ ト の 状 態 と し て ThumbEE<br />
状 態 が 導 入 さ れます。 こ の 状 態 の 命 令 セ ッ ト は、 Thumb-2 命 令 セ ッ ト と<br />
ほぼ 同 一 です。 ただ し、 動 作 が 変 更 さ れた 命 令 、 および 新 し く 使 用 で き<br />
るようになった 命 令 があります。<br />
• <strong>ARM</strong> アセンブラを 使 用 する こ とによ り、 Intel ® ワイヤレス MMX テク<br />
ノロジの 命 令 をアセンブルし、PXA270 プロセッサなどのコードを 開 発<br />
できます。<br />
• RVCT v3.0 では、 <strong>ARM</strong> アーキテ クチャ 用 ABI ( 基 本 標 準 ) [BSABI] の 最<br />
新 の リ リ ースで 必 要 と 定 義 されている よ う に、 DWARF 3 (DWARF<br />
Debugging Standard バージ ョ ン 3) のデバッグテーブルが 完 全 にサポート<br />
されます。<br />
DWARF 3 はデフ ォル ト の 形 式 で、 以 下 の 内 容 を 含 んでいます。<br />
— C++ ネームスペースのデバッ グの 完 全 なサポー ト<br />
— デバ ッ グ 情 報 量 の 拡 大<br />
本 リ リースのコンパイラおよびアセンブラは、 以 下 のように 動 作 しま<br />
す。<br />
— 形 式 を 指 定 し ない 場 合 は、 DWARF 3 が 想 定 されます。<br />
— --debug (-g) を 指 定 する と、 デフォルトでは、 DWARF 3 が 生 成 さ<br />
れます。<br />
コマンド ラインオプショ ン --dwarf2 は、 下 位 互 換 性 のために 引 き 続 き サ<br />
ポー ト されます。<br />
• <strong>ARM</strong> コンパイラおよびリンカでスレッドローカル 記 憶 域 (TLS) をサ<br />
ポー ト する こ と によ り 、 プロ グ ラ ムで 複 数 のス レ ッ ド を 使 用 でき ます。<br />
以 下 の 2 つの 新 しいキーワー ド を 使 用 し て、MPCore で TLS をサポート<br />
できます。<br />
— __declspec(thread)<br />
— __thread<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-13<br />
Non-Confidential
以 前 のリ リ ースについて<br />
• <strong>ARM</strong> コンパイラでは、 ループの 展 開 など、 ハイレベルのスカラの 最 適<br />
化 が 行 われる よ う にな り ま し た。 これらの 拡 張 機 能 は、-O3 を 指 定 してコ<br />
ンパイルする 際 に 自 動 的 に 呼 び 出 され、 小 さ なサイ ズのコード を 加 え る<br />
ことによってパフォーマンスを 大 幅 に 向 上 できます。<br />
• RVCT v3.0 では、 整 数 (int または long long) をゼロで 除 算 する と、 デ<br />
フォルトでゼロが 返 されます。 これは、 実 行 時 にエラーメッセージを 表<br />
示 し てプ ロ グ ラ ム を 終 了 し ていた 以 前 の 動 作 か ら の 変 更 点 です。<br />
• RVCT v3.0 では、 エ ラー メ ッ セージおよび 警 告 メ ッ セージに 使 用 さ れる<br />
言 語 を 変 更 で き ます。 例 えば、 英 語 ベースのワー ク ス テーシ ョ ンで 日 本<br />
語 の メ ッ セージを 表 示 する には、 次 のコ マン ド を 使 用 し ます。<br />
--message_locale ja_JP<br />
• 以 前 は <strong>ARM</strong> コ ンパイ ラ でのみ 使 用 で き た --show_cmdline オプシ ョ ンが、<br />
アセンブラ、 リ ンカ、 armar、 および fromelf でも 使 用 できるようになり<br />
ました。 このオプションを 使 用 すると、 コマンドラインがどのように 処<br />
理 されたかを 確 認 できます。 コマンドは 正 規 化 されて 表 示 されます。 ま<br />
た、 via フ ァ イ ルの 内 容 は 展 開 さ れます。 ただ し、 こ の コ マン ド を 使 用<br />
し て も コ マン ド ラ イ ンの 偶 発 的 なエ ラーは ト ラ ッ プ さ れません。<br />
• RVCT v3.0 では、 以 下 の 環 境 変 数 が 導 入 さ れます。<br />
— RVCT30_CCOPT<br />
— RVCT30_LINKOPT<br />
— RVCT30_ASMOPT<br />
この 変 数 の 値 は、 RVCT ご と に、 必 要 に 応 じ て、 コマン ド 文 字 列 の 先 頭<br />
に 挿 入 さ れます。 環 境 変 数 で 指 定 さ れたオプシ ョ ンは、 コ マン ド ラ イ ン<br />
の 引 数 でオーバーラ イ ド でき ます。<br />
RVCT v3.0 で 廃 止 された 機 能<br />
RVCT v3.0 では、 次 の 点 が 変 更 されま した。<br />
• RVCT v2.2 で 使 用 が 制 限 さ れていたすべての 機 能 およびオプシ ョ ンは、<br />
RVCT v3.0 で 廃 止 さ れま し た。 こ れら の 機 能 およびオプシ ョ ンの リ ス ト<br />
については、 『コンパイ ラユーザガイ ド』 の 付 録 A 「 以 前 の コ マン ド ラ<br />
イ ンオプシ ョ ンの 使 用 」 を 参 照 し て 下 さ い。<br />
• 1 つ 前 の RVCT のリ リースでは、 メッセージオプションを 新 しいリ リー<br />
スに 移 行 できるようにするため、 古 いコンパイラオプションをサポート<br />
していました。 v3.0 では、 これらのオプシ ョ ンは 廃 止 されたため、 サ<br />
A-14 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
ポー ト されていません。 詳 細 については、 『コンパイ ラユーザガイ ド』<br />
の 付 録 A 「 以 前 の コ マン ド ラ イ ンオプシ ョ ンの 使 用 」 を 参 照 し て 下 さ<br />
い。<br />
• 複 数 行 にま たがる 文 字 列 は <strong>ARM</strong> コンパイラでサポート されていません。<br />
こ の 動 作 は、 下 位 互 換 性 のために、 こ れまで GNU モード でサポー ト さ<br />
れていま した。<br />
• コンパイラ 固 有 の 以 下 のプラグマがサポート されなくなりました。<br />
— check_printf_formats、 check_scanf_formats、 および<br />
check_vprintf_formats<br />
— [no_]debug<br />
• ソフトウェアスタックチェックのサポートが 廃 止 されました。 本 リ リー<br />
スでは、 以 下 のコンパイラおよびアセンブラのオプシ ョ ンがサポート さ<br />
れていません。<br />
— --apcs /swst<br />
— --apcs /noswst<br />
— --apcs /swstna<br />
以 下 の 項 目 は 使 用 で き な く な り ま し た。<br />
— プラグマ [no_]check_stack<br />
— 事 前 定 義 のマ ク ロ __APCS_SWST<br />
ソフトウェアスタックチェックが 行 われたバージョンのライブラリは 提<br />
供 されなくなり ました。<br />
RVCT v3.0 での 使 用 が 制 限 される 機 能<br />
RVCT v3.0 では、 次 の 点 が 変 更 されま し た。<br />
• <strong>ARM</strong> コンパイラでは、 以 前 のバージョンの <strong>ARM</strong> Developer Suite <br />
(ADS) のアプ リ ケーシ ョ ンバイナリ インタフェース (ABI) と 互 換 性<br />
のある コード をコンパイルするため、 オプシ ョ ン --apcs /adsabi がサ<br />
ポー ト されます。 このオプシ ョ ンは RVCT 3.0 では 現 在 使 用 が 制 限 さ れ<br />
ていて、 RVCT 3.1 では 廃 止 されています。<br />
• 以 下 のアセンブ ラ オプシ ョ ンは 現 在 使 用 が 制 限 さ れていて、 RVCT 3.1<br />
で 廃 止 されています。<br />
— --no_cache<br />
— --no_regs ( 代 わ り に --regnames=none を 使 用 して 下 さい)<br />
— --checkreglist ( 代 わ り に --diag_warning 1206 を 使 用 して 下 さい)<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-15<br />
Non-Confidential
以 前 のリ リ ースについて<br />
• セクション 属 性 の 修 飾 子 (RO、 RW、 ZI、 および DBG) と リ ンカオプシ ョ ン<br />
--remove の 併 用 のサポー ト は、 現 在 制 限 さ れていて、 今 後 の リ リ ースで<br />
廃 止 さ れる 予 定 です。<br />
• C++ コンフィギュレーションオプション --dll_vtbl が、 新 しいオプシ ョ<br />
ン --export_all_vtbl に 置 き 換 わ り ま し た。--dll_vtbl は、 現 在 使 用 が 制 限<br />
されていて、 今 後 サポート されなくなり ます。<br />
• --memaccess -UL41 のサポー ト は 現 在 使 用 が 制 限 さ れてお り 、 将 来 の リ<br />
リースでは 廃 止 される 予 定 です。 --memaccess -UL41 は<br />
--no_unaligned_access に 置 き 換 え られます。<br />
• コンパイラオプション --depend_format=unix は --unix_depend_format に 置 き<br />
換 わ り ま し た。 こ のオプシ ョ ンは 現 在 使 用 が 制 限 さ れていて、 今 後 の リ<br />
リースで 廃 止 される 予 定 です。<br />
• RVCT v3.0 では fromelf --text の 構 文 が 異 な り ます。 以 下 の 形 式 は 現 在 使<br />
用 が 制 限 さ れていて、 今 後 の リ リ ースで 廃 止 さ れる 予 定 です。<br />
— fromelf --text=xx<br />
— fromelf --text/xx<br />
• <strong>ARM</strong> では、 __user_stack_slop 関 数 の 使 用 をお 勧 め し ません。 こ のオプ<br />
シ ョ ンは 現 在 使 用 が 制 限 さ れていて、 今 後 の リ リ ースで 廃 止 さ れる 予 定<br />
です。<br />
A.2.2<br />
RVCT v3.0 における <strong>ARM</strong> コ ンパイ ラの 変 更 点<br />
RVCT v3.0 では、 次 の 点 が 変 更 されま した。<br />
• RVCT v3.0 の 移 植 性 の 高 い 新 機 能 の 一 部 と し て、 新 し い コ ンパ イ ラ オプ<br />
ション --library_interface で、 コ ンパ イ ラ の 出 力 が RVCT ライブラリや<br />
AEABI 準 拠 の ラ イ ブ ラ リ と 連 動 する よ う に 指 定 し ます。 例 えば、<br />
--library_interface=aeabi_glibc を 使 用 して、 AEABI 準 拠 の GNU C ライ<br />
ブ ラ リ と 出 力 が 連 動 する よ う に 指 定 で き ます。<br />
• <strong>ARM</strong> コンパイラでは、 スレッドローカル 記 憶 域 (TLS) をサポートす<br />
る こ と によ り 、 プロ グ ラ ムで 複 数 のス レ ッ ド を 使 用 でき る よ う にな り ま<br />
した。 TLS を 使 用 する と 、 各 ス レ ッ ド がグ ローバル 変 数 を 変 更 する 場 合<br />
があ り ますが、 その 変 更 は 該 当 ス レ ッ ド のみで 認 識 されます。 以 下 の 2<br />
つのキーワードが 使 用 できるようになりました。<br />
— __declspec(thread) は、 変 数 がスレッドローカルで、 スレッドの 保<br />
存 期 間 が 設 定 さ れてい る こ と を 示 し ます。<br />
A-16 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
— __thread は、 __declspec(thread) と 同 じ 意 味 です。<br />
• <strong>ARM</strong>v7 より 前 の <strong>ARM</strong> プロセッサでは、SWI 命 令 ま たは SVC 命 令 を 使 用 し<br />
てセ ミ ホステ ィ ング 呼 び 出 しを 行 います。 ただし、 Cortex -M3 プロセッ<br />
サ 用 にコ ンパイルし ている 場 合 、 セ ミ ホステ ィ ングは BKPT 命 令 を 使 用 し<br />
て 実 装 されます。<br />
新 し い コ ンパイ ラ 組 み 込 み 関 数 __semihost() を 使 用 する と 、 ターゲ ッ ト<br />
アーキテ ク チャ と は 関 係 のないセ ミ ホ ス テ ィ ング 呼 び 出 し を C または<br />
C++ から 行 う こ とができます。<br />
• <strong>ARM</strong> コンパイラでは、<strong>ARM</strong> 状 態 および Thumb 状 態 の 両 方 で Cortex -A8<br />
プ ロ セ ッ サ 用 のコー ド を 生 成 する 組 み 込 み 関 数 を 提 供 する こ と で、<br />
NEON テクノロジをサポート します。<br />
• <strong>ARM</strong> コ ンパイ ラ では、 フ ィ ー ド バ ッ ク 最 適 化 (FDO : Feedback Directed<br />
Optimization) が 実 用 的 ではない 場 合 に 分 岐 予 測 情 報 を 提 供 する ために<br />
GCC builtin 関 数 __builtin_expect がサポー ト さ れます。 こ の 関 数 は、<br />
GNU モードおよび <strong>ARM</strong> モード で 使 用 でき ます。<br />
• <strong>ARM</strong> コ ンパイ ラ には、 オブジ ェ ク ト のサ イ ズを 表 示 する ための --info<br />
totals オプシ ョ ンがあ り ます。 このオプシ ョ ンを 使 用 して、 コンパイル<br />
されたオブジェク トのコード とデータ (RO データ、 RW データ、 ZI<br />
データ、 およびデバ ッ グデータ) のサ イ ズを 確 認 し ます。<br />
• <strong>ARM</strong> コンパイラには、 Windows 用 の 新 しい --depend_format=string オプ<br />
ションがあります。 これにより、UNIX の 一 部 の make プログラムとの<br />
互 換 性 を 確 保 する ために、 出 力 に 依 存 する フ ァ イ ルの 形 式 が UNIX 形 式<br />
に 変 更 されます。<br />
• <strong>ARM</strong> コンパイラでは、C++ ファイルの .cc 拡 張 子 が 認 識 さ れる よ う にな<br />
りました。 認 識 されない 拡 張 子 が、filename.cmd のよ うに .c で 始 ま る 場<br />
合 は、 警 告 メ ッ セージが 表 示 されます。<br />
• GNU コ ンパ イ ラ の 拡 張 機 能 に 対 するサポー ト の 一 環 と し て、 armcc で<br />
は、--gnu オプシ ョ ンの 使 用 時 に C と C++ 両 方 の 条 件 を 使 用 で き ます。 条<br />
件 付 き ス テー ト メ ン ト の 中 間 にあ る オペラ ン ド は、 結 果 がテ ス ト と 同 じ<br />
になる 場 合 は 省 略 できます。 例 えば、 以 下 のようになります。<br />
i i : j<br />
これは、i が 一 度 だけ 評 価 される よ う にテス ト で 値 を 変 更 する 場 合 に 最<br />
も 役 立 ちます。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-17<br />
Non-Confidential
以 前 のリ リ ースについて<br />
• RVCT v3.0 では、 POSIX 関 数 wcstombs() でマルチバイ ト 文 字 のシーケン<br />
ス を あ る 配 列 か ら 変 換 し てその 文 字 を 別 の 配 列 に 保 存 する ための コ ンパ<br />
イラおよびライブラリがサポートされます。<br />
• <strong>ARM</strong> コンパイラでは、 オプション --unaligned_access がサポー ト されま<br />
す (こ のオプシ ョ ンは、 現 在 使 用 が 制 限 さ れてい る オプシ ョ ン<br />
--memaccess に 代 わ る オプシ ョ ンです)。<br />
• AAPCS では、 ビ ッ ト フ ィールド をデフ ォル ト で 符 号 なしの 値 にする 必<br />
要 がなくなりました。 これを 受 けて、 ビットフィールドが 符 号 付 きであ<br />
る こ と を 指 定 する 新 し いオプシ ョ ン --signed_bitfields が 追 加 されま し<br />
た。 デフ ォル ト は、--unsigned_bitfields です。<br />
• <strong>ARM</strong> コ ンパ イ ラ では、 書 き 込 み 先 ア ド レ スが 不 明 なすべてのシンボル<br />
について .directive セ ク シ ョ ンが 作 成 さ れま し た。 こ の 要 件 は、 ELF 標<br />
準 メカニズムによって 破 棄 されました。 そのため、 dllimport が 指 定 され<br />
たシンボルの 動 作 が 変 更 さ れる こ と があ り ます。 以 下 に 例 を 示 し ます。<br />
__declspec(dllimport) int f();<br />
int g() { return f(); }<br />
この 例 では、.directive セクションが 生 成 されません。<br />
• コンパイラには、__user_initial_stackheap() と 同 じよ うに 初 期 スタック<br />
および ヒ ープの 場 所 を 返 す 新 し い __user_setup_stackheap() 関 数 が 含 まれ<br />
ています。 テンポラ リ ス タ ッ クについては 要 件 がないので、<br />
__user_setup_stackheap() では、 __user_initial_stackheap() と 比 べてコード<br />
サイズが 小 さ くなり ます。<br />
• <strong>ARM</strong> コンパイラでは、gcc でレポート される 形 式 に 一 致 する メ ッセージ<br />
を 表 示 する ためのコ マン ド ラ イ ンオプシ ョ ン --diag_style gnu がサポー ト<br />
されるよ うになり ました。 これは、 以 前 のリ リースで 使 用 できる arm 形<br />
式 および ide 形 式 に 加 えて 新 たに 使 用 でき る よ う になった 形 式 です。<br />
• 各 関 数 の 先 頭 にあ る 組 み 込 みアセンブ ラ の 状 態 は、 #pragma arm プラグマ<br />
および #pragma thumb プラグマで 変 更 されたよ うに、 コンパイラの 呼 び 出<br />
しで 設 定 されています。<br />
ま た、 組 み 込 みアセンブ ラ の 状 態 は、 関 数 内 部 で 変 更 で き ます (こ の 状<br />
態 は、 現 在 の 関 数 内 でのみ 保 持 さ れます)。 こ れを 行 う には、 組 み 込 み<br />
アセンブラ 関 数 で、 明 示 的 な <strong>ARM</strong>、 THUMB、 または CODE16 ディレクティブ<br />
を 使 用 し ます。<br />
A-18 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
A.2.3<br />
RVCT v3.0 における ラ イ ブ ラ リ サポー ト の 変 更 点<br />
RVCT v3.0 では、 次 の 点 が 変 更 されま し た。<br />
• <strong>ARM</strong> アーキテクチャ 用 C ライブラリ ABI [CLIBABI] では、 コ ンパイ ラ<br />
_AEABI_PORTABILITY_LEVEL でチェ ッ ク さ れる 適 合 性 のテ ス ト について 定 義<br />
しています。 このテス トを 利 用 すると、 CLIBABI の 他 の 実 装 に 対 する<br />
コー ド の 移 植 性 を 高 め る こ と がで き ます。<br />
• <strong>ARM</strong> アーキテクチャ 用 ABI ( 基 本 標 準 ) [BSABI] の 最 新 版 では、<br />
assert() マ ク ロ の 定 義 の 欠 陥 が 修 正 さ れ、 1 つの 信 号 適 合 性 の 義 務 が 導<br />
入 さ れています。 こ のマ ク ロは、 最 新 版 で __aeabi_assert() として 定 義<br />
されています。 詳 細 については、 assert.h を 参 照 して 下 さい。<br />
• RVCT v3.0 には、 ス レ ッ ド セーフ な 文 字 列 関 数 strlcpy および strlcat の<br />
ライブラリサポートが 用 意 されています。<br />
• RVCT v3.0 では、 新 しいラ イブラ リ によ る __user_initial_stackheap() の<br />
実 装 が 用 意 さ れています。 つま り 、 <strong>ARM</strong>_LIB_STACK、 <strong>ARM</strong>_LIB_HEAP、<br />
<strong>ARM</strong>_LIB_STACKHEAP などのディ レクティブが 含 まれた 分 散 ロードファイル<br />
を 使 用 する 場 合 、 こ の 関 数 を 再 実 装 する 必 要 はあ り ません。<br />
• RVCT v3.0 の 新 しいラ イブラ リ メ カニズムでは、 コード で __use_no_heap<br />
や __use_no_semihosting などの __use_no_* シンボルを 参 照 する 際 にシンボ<br />
ルの 競 合 が 発 生 し た 場 合 、 よ り 詳 し いエ ラー メ ッ セージが 表 示 さ れま<br />
す。<br />
• POSIX に 完 全 に 準 拠 する ために、 armar では、 直 前 に - がないコマン ド ラ<br />
インオプションが 使 用 できなくなりました。 例 えば、 以 下 の 形 式 のコマ<br />
ンドがあるとします。<br />
armar cru lib.a foo.o<br />
こ の 場 合 、 こ の コ マン ド は 失 敗 し ます。 以 前 のバーシ ョ ンの RVCT で 生<br />
成 し たビル ド ス ク リ プ ト や メ ー ク フ ァ イルを 使 用 し てい る 場 合 、 上 記 の<br />
コマンドの 変 更 が 必 要 になるこ とがあり ます。<br />
• armar では、 gcc でレポー ト さ れる 形 式 に 一 致 する メ ッ セージを 表 示 する<br />
ためのコマン ド ラ インオプシ ョ ン --diag_style gnu がサポー ト される よ う<br />
にな り ま した。 これは、 以 前 の リ リースで 使 用 でき る arm 形 式 および ide<br />
形 式 に 追 加 さ れています。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-19<br />
Non-Confidential
以 前 のリ リ ースについて<br />
A.2.4<br />
RVCT v3.0 における <strong>ARM</strong> リ ン カの 変 更 点<br />
RVCT v3.0 では、 次 の 点 が 変 更 されま した。<br />
• 最 新 リ リ ースの リ ン カでは、 SVr4 のイ メージおよび 共 有 ライブラ リの<br />
スレッドローカル 記 憶 域 (TLS) のみがサポート されます。 リ ンカの 実<br />
装 の 詳 細 については、 <strong>ARM</strong> アーキテクチャ 用 ABI [ABI-addenda] の 正<br />
誤 表 および 追 捕 表 を 参 照 し て 下 さ い。<br />
• RVCT v3.0 には、 新 しい リ ンカオプシ ョ ン --compress_debug があ り ます。<br />
これによ り、.debug_* セ ク シ ョ ンが 強 制 的 に 圧 縮 さ れる ため、 冗 長 性 が<br />
軽 減 され、 デバッグテーブルのサイズが 改 善 されます。 ただ<br />
し、--compress_debug オプシ ョ ン を 使 用 する と 、 リ ン ク 時 間 が 長 く な り ま<br />
す。<br />
• RVCT v3.0 には、 新 しい リ ンカオプシ ョ ン --info libraries があ り ます。<br />
こ れに よ り 、 リ ン ク ス テージに 対 し て 自 動 的 に 選 択 さ れたすべての ラ イ<br />
ブ ラ リ の 完 全 パス 名 が 出 力 さ れます。 こ のオプシ ョ ン を 修 飾 子<br />
--info_lib_prefix と 共 に 使 用 すると、 特 定 のライブラ リに 関 する 情 報 を<br />
表 示 で き ます。<br />
• RVCT v3.0 には、 新 しい リ ンカオプシ ョ ン --no_legacyalign があ り ます。<br />
こ れに よ り 、 リ ンカではセ ク シ ョ ン を 配 置 する 際 に 自 然 配 列 が 使 用 さ れ<br />
ます。<br />
• RVCT v3.0 には、 新 しい リ ンカオプシ ョ ン --dynamic_debug があ り ます。<br />
これによ り、 リ ンカではデバッグセクショ ンのダイナミ ックな 再 配 置 が<br />
出 力 さ れます。<br />
• RVCT v3.0 には、 新 しい リ ンカオプシ ョ ン --show_cmdline があ り ます。 こ<br />
のオプシ ョ ン を 使 用 する と 、 リ ンカで コ マン ド ラ イ ンがどの よ う に 処 理<br />
されたかを 確 認 できます。<br />
• <strong>ARM</strong> リンカでは、gcc でレポー ト さ れる 形 式 に 一 致 する メ ッ セージを 表<br />
示 する ための コ マン ド ラ イ ンオプシ ョ ン --diag_style gnu がサポー ト され<br />
る よ う にな り ま し た。 こ れは、 以 前 の リ リ ース で 使 用 で き る arm 形 式 お<br />
よび ide 形 式 に 追 加 さ れています。<br />
A-20 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
A.2.5<br />
RVCT v3.0 における <strong>ARM</strong> アセンブ ラの 変 更 点<br />
RVCT v3.0 では、 次 の 点 が 変 更 されま し た。<br />
• RVCT v3.0 では、 <strong>ARM</strong>v7 に 対 する Thumb-2 Execution Environment<br />
(Thumb-2EE) アーキテ ク チ ャ の 拡 張 機 能 がサポー ト さ れます。 こ れは<br />
Thumb-2 をベースに し ています。 主 要 な 相 違 点 は 以 下 の と お り です。<br />
— Thumb 状 態 と 新 し い ThumbEE 状 態 の 両 方 で 状 態 を 変 更 する ENTERX<br />
および LEAVEX という 新 しい 命 令<br />
— ハン ド ラ に 分 岐 する ための 新 し い HB、 HBL、 HBLP、 および HBP 命 令<br />
— ロードおよびス ト アでの NULL ポインタチェック<br />
— 配 列 の 境 界 をチェ ッ クする ために 追 加 さ れた ThumbEE 状 態 の CHKA<br />
命 令<br />
— ロー ド 命 令 、 ス ト ア 命 令 、 および 分 岐 命 令 (BX、 BLX、 および BXJ)<br />
に 対 するその 他 の 変 更<br />
• RVCT v3.0 では、<strong>ARM</strong>v7 アーキテクチャの 2 つのオプシ ョ ン コ ンポーネ<br />
ントであるアドバンスト SIMD 拡 張 機 能 および VFPv3 の 初 期 サポー ト が<br />
提 供 さ れます。<br />
<strong>ARM</strong> アドバンスト SIMD 拡 張 機 能 の 構 成 は 以 下 の と お り です。<br />
— アドバンスト SIMD レジスタ。 このレジスタは、 VFPv3 レジスタ<br />
バンク と 同 じですが、32 個 の 64 ビッ トレジスタまたは 16 個 の 128<br />
ビッ トレジスタと 見 なされます。<br />
— アドバンスト SIMD レジスタを 要 素 のベクタと 見 なす、 多 数 の 新<br />
し い 命 令 。<br />
これらの 新 しい 命 令 は、 <strong>ARM</strong> 命 令 セ ッ ト と Thumb-2 命 令 セ ッ ト の<br />
両 方 で 使 用 で き ます。<br />
VFPv3 は、 VFPv2 から 次 のよ うに 拡 張 されています。<br />
— 以 前 の VFP レジスタバンクの 2 倍 にあたる 32 個 の 64 ビットレジ<br />
スタへの 大 幅 な 拡 張 。 これらのレジスタは、 メインの <strong>ARM</strong> 汎 用 レ<br />
ジスタを 除 いたものです。<br />
— よ く 使 用 さ れる 多 数 の 浮 動 小 数 点 数 値 の ロー ド および 浮 動 小 数 点<br />
形 式 と 固 定 小 数 点 形 式 間 の 変 換 を 効 率 良 く する 複 数 の 新 し い 命 令 。<br />
これらの 新 しい 命 令 は、 <strong>ARM</strong> 命 令 セ ッ ト と Thumb-2 命 令 セ ッ ト の<br />
両 方 で 使 用 で き ます。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-21<br />
Non-Confidential
以 前 のリ リ ースについて<br />
• Advanced SIMD 命 令 のサポー ト の 一 環 と し て、 浮 動 小 数 点 ス テータ ス /<br />
制 御 レ ジ ス タ (FPSCR) のビッ ト 27 は、 整 数 の 飽 和 演 算 で 飽 和 が 発 生<br />
し た と き に 表 示 する ための 累 積 フ ラ グ と し て 予 約 さ れています。<br />
• <strong>ARM</strong> アセンブラを 使 用 する こ とによ り、 インテルワイヤレス MMX テ<br />
クノロジの 命 令 をアセンブルし、PXA270 プロセッサ 用 のコードを 開 発<br />
できます。 2 つの 新 しいデ ィ レ ク テ ィ ブが 導 入 され、 ロード 命 令 と ス ト<br />
ア 命 令 の 構 文 がシンボルおよび リ テラルをサポー ト する よ う に 変 更 され<br />
ました。<br />
• リ ス ト を フ ァ イルに 出 力 する には、 次 のオプシ ョ ン を 使 用 し ます。<br />
--list file<br />
file が 指 定 されていない 場 合 は、--list= を 使 用 して、 出 力 を<br />
inputfile.lst に 送 り ます。<br />
注<br />
--list を 使 用 する と、 出 力 を .lst フ ァ イ ルに 送 信 で き ます。 ただ し、 こ<br />
の 構 文 は 現 在 使 用 が 制 限 さ れてい る ため、 こ の 構 文 を 使 用 する と アセン<br />
ブ ラ に よ って 警 告 メ ッ セージが 表 示 さ れます。<br />
• 以 下 の 2 つの 新 しいデ ィ レ ク テ ィ ブが 導 入 されま し た。<br />
— RELOC。 オブジェクトファイルで ELF の 再 配 置 をエン コード し ま<br />
す。<br />
— QN。 指 定 した NEON ク ワ ッ ド ワード レジスタの 名 前 を 定 義 しま<br />
す。<br />
• <strong>ARM</strong> アセンブラでは、 gcc でレポート される 形 式 に 一 致 する メ ッセージ<br />
を 表 示 する ためのコ マン ド ラ イ ンオプシ ョ ン --diag_style gnu がサポー ト<br />
されるよ うになり ました。 これは、 以 前 のリ リースで 使 用 できる arm 形<br />
式 および ide 形 式 に 加 えて 新 たに 使 用 でき る よ う になった 形 式 です。<br />
• armasm --debug を 指 定 したときに、ローカルシンボルが 保 持 されなくなり<br />
ま し た。 デバ ッ グのために ローカルシンボルを 保 持 する 場 合 は、--keep<br />
を 指 定 する 必 要 があ り ます。<br />
• RVCT v2.2 では、 Thumb アセンブラ コードでローカルラベルと 共 に LDR<br />
疑 似 命 令 を 使 用 する と 、 Thumb のビッ ト が 設 定 されていないアド レスに<br />
な り ま し た。 使 用 中 の コー ド で こ の 動 作 が 必 要 な 場 合 は、 armasm<br />
--untyped_local_labels を 使 用 して 下 さい。<br />
A-22 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
A.2.6<br />
RVCT v3.0 における fromelf ユーテ ィ リ テ ィ の 変 更 点<br />
RVCT v3.0 では、 次 の 点 が 変 更 されま し た。<br />
• fromelf ユーテ ィ リ テ ィ では、 ELF 出 力 フ ァ イルか ら コー ド セ ク シ ョ ンお<br />
よびデータ セ ク シ ョ ン を 削 除 する ための --debugonly オプシ ョ ンがサポー<br />
トされるようになりました。<br />
• RVCT v3.0 では fromelf --text の 構 文 が 異 な り ます。 以 下 の 形 式 は 現 在 使<br />
用 が 制 限 さ れていて、 今 後 の リ リ ース で 廃 止 さ れる 予 定 です。<br />
— fromelf --text=xx<br />
— fromelf --text/xx<br />
• RVCT v3.0 には、 fromelf の 新 しいオプシ ョ ン --show_cmdline があ り ます。<br />
このオプションを 使 用 すると、 fromelf ユーテ ィ リ テ ィ でコマン ド ラ イ<br />
ンがどのよ う に 処 理 されたかを 確 認 できます。<br />
• fromelf ユーテ ィ リ テ ィ では、 gcc でレポー ト さ れる 形 式 に 一 致 する メ ッ<br />
セージを 表 示 するためのコマン ド ラ イ ンオプシ ョ ン --diag_style gnu がサ<br />
ポー ト される よ う にな り ま した。 これは、 以 前 の リ リ ースで 使 用 でき る<br />
arm 形 式 および ide 形 式 に 追 加 さ れています。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-23<br />
Non-Confidential
以 前 のリ リ ースについて<br />
A.3 RVCT v2.2 SP1 と RVCT v2.2 の 相 違 点<br />
このセクションでは、 RealView Developer Suite v2.2 Service Pack 1 (SP1) 付 属<br />
の RVCT v2.2 と 、 その 前 の リ リ ースの 相 違 点 について 説 明 し ます。<br />
相 違 点 を 以 下 に 示 し ます。<br />
• RVCT v2.2 SP1 では、 <strong>ARM</strong>1136J(F)-S-rev-1 コアがサポート されます。 サ<br />
ポー ト さ れるすべての コ アの リ ス ト を 参 照 する には、 次 の コ マン ド を 使<br />
用 します。<br />
armcc --cpu list<br />
• 共 有 オブジ ェ ク ト を 作 成 する と きは、 <strong>ARM</strong> リンカにより 提 供 される 次<br />
の 新 し いオプシ ョ ン を 使 用 し ます。<br />
— --pt_arm_exidx を 使 用 する と 、 例 外 テーブルの 場 所 を 記 述 する<br />
PT_<strong>ARM</strong>_EXIDX プログラムヘッダが 作 成 されます。 リ ンカでは、 共 有<br />
オブジェ ク ト に PT_<strong>ARM</strong>_EXIDX プログラムヘッダが 含 まれていると、<br />
例 外 がス ロー さ れる 可 能 性 があ る と 判 断 し ます。<br />
— --force_so_throw を 使 用 する と 、 リ ンカではすべての 共 有 オブジ ェ<br />
ク ト が 例 外 を ス ローする 可 能 性 があ る と 判 断 し ます。<br />
これらのコマン ド ラ イ ンオプシ ョ ンの 詳 細 については、 『リンカ / ユー<br />
ティ リティガイド』 の System V 共 有 ラ イ ブ ラ リ について 説 明 し た 章 を<br />
参 照 し て 下 さ い。<br />
• プリプロセッシングディレクティブ #warning がサポー ト されます。 その<br />
結 果 、 コ ンパイル 時 にユーザ 定 義 の 警 告 が 生 成 されますが、 コ ンパイル<br />
は 停 止 し ません。<br />
• キーワード __restrict および __restrict__ は、 restrict の 同 義 語 と し てサ<br />
ポー ト されます。 本 リ リ ースでは、--restrict だけでな くすべてのモード<br />
でこの 2 つのキーワー ド を 使 用 で き ます。<br />
• GNU モード と <strong>ARM</strong> モード の 両 方 で deprecated 関 数 属 性 がサポー ト さ れ<br />
ます。<br />
int Function_Attributes_deprecated_0(int b) __attribute__ ((deprecated));<br />
• fromelf ユーテ ィ リ テ ィ で、 ELF 出 力 フ ァ イルか ら .comment セクションを<br />
削 除 する ための --no_comment_section オプシ ョ ンがサポー ト される よ う に<br />
なりました。<br />
A-24 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
• コンパイラオプション --enum_is_int のス ト レージ 型 の 選 択 方 法 が 変 更 さ<br />
れました。 列 挙 子 の 範 囲 が signed int の 範 囲 よ り 大 き く 、 unsigned int の<br />
範 囲 内 にあ る 場 合 、 enum の 格 納 型 は unsigned int にな り ます。<br />
以 下 に 例 を 示 し ます。<br />
enum E { k = 0x8000000 }; /* is treated as unsigned int */<br />
• <strong>ARM</strong> アセンブ リ 言 語 を 開 発 する 一 環 と して、 SWI 命 令 の 名 前 が SVC<br />
(スーパーバイザコール) に 変 更 されました。<br />
命 令 は、 元 は SWI だったという コ メ ン ト 付 きで SVC に 逆 アセンブルされ<br />
ます。 例 えば、 fromelf --text -c からは 次 の 出 力 が 生 成 されます。<br />
...<br />
0x00000fbc: e3a00010 .... MOV r0,#0x10<br />
0x00000fc0: ef123456 V4.. SVC 0x123456 ; formerly SWI<br />
...<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-25<br />
Non-Confidential
以 前 のリ リ ースについて<br />
A.4 RVCT v2.2 と RVCT v2.1 の 相 違 点<br />
このセクションでは、 RVCT v2.2 と RVCT v2.1 と の 間 の 相 違 点 について 説 明<br />
します。<br />
A.4.1<br />
RVCT v2.2 における 主 な 変 更 点<br />
RVCT v2.2 では、 次 の 点 が 変 更 されま した。<br />
• 新 しい Thumb ® -2 命 令 セ ッ ト がサポー ト さ れます。 Thumb-2 には、 多 数<br />
の 新 しい 32 ビッ ト 命 令 と、 いくつかの 新 しい 16 ビッ ト 命 令 が 導 入 され<br />
ました。 <strong>ARM</strong>1156T2(F)-S など、 Thumb-2 をサポートするプロセッサ 上<br />
で、 <strong>ARM</strong> に 匹 敵 するパフ ォーマン ス と 初 代 Thumb と 同 等 のコードサイ<br />
ズを 両 立 します。<br />
Thumb-2 命 令 セ ッ ト には、 以 前 の 16 ビット Thumb 命 令 がサブセ ッ ト と<br />
して 含 まれています。<br />
• RVCT v2.2 では、 新 しい <strong>ARM</strong>v6 コアがサポート されます。 例 えば、<br />
<strong>ARM</strong> TrustZone テクノロジ 向 けに 最 適 化 したソフト ウェアが 組 み 込 ま<br />
れた <strong>ARM</strong>1176JZ(F)-S、 <strong>ARM</strong>968EJ-S、 <strong>ARM</strong>1156T2(F)-S、 <strong>ARM</strong> MPCore <br />
などがサポート されます。<br />
RVCT v2.2 アセンブラでは、 MPCore 命 令 がサポー ト さ れます。<br />
• 新 し いアセンブ ラ 構 文 をサポー ト する と 同 時 に、 従 来 の コー ド をアセン<br />
ブルするため 引 き 続 き 古 い 構 文 もサポート します。<br />
• <strong>ARM</strong> アーキテ ク チャ 用 ベースプ ラ ッ ト フ ォーム ABI [BPABI] に 完 全 に<br />
準 拠 し てい る ので、 <strong>ARM</strong> Linux、 Symbian OS など、 さまざまなオペレー<br />
ティングシステムをサポートします。<br />
• <strong>ARM</strong> アーキテクチャ 用 ABI ( 基 本 標 準 ) [BSABI] に 記 載 されているよ<br />
うに、DWARF 3 (Draft Standard 9) デバッグテーブルの 初 期 サポートが<br />
提 供 さ れます。 コー ド を コ ンパ イルする と きに こ の 形 式 を 指 定 する ため<br />
に、 新 しいコマン ド ラ イ ンオプシ ョ ン --dwarf3 を 使 用 できるようになり<br />
ました。<br />
• コマンド ラインオプショ ン --debug または -g を 指 定 する と、 現 在 のコン<br />
パイル 用 のデバ ッ グテーブルが 生 成 さ れます。 最 適 化 オプシ ョ ン を 指 定<br />
する 場 合 は、-Onum を 使 用 し ます。 デフォル ト では、--debug オプシ ョ ンや<br />
-g オプシ ョ ン を 使 用 し て も、 最 適 化 の 設 定 に 影 響 し ません。<br />
A-26 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
これは、RVCT v2.2 で 動 作 が 変 更 された 点 です (RVCT v2.1 では、--debug<br />
または -g のみで [--debug|-g] -O0 と 同 じ 意 味 でした)。 この 新 しいデフォ<br />
ル ト 動 作 を 除 き、 最 適 化 オプシ ョ ン -Onum、-Ospace、 または -Otime の 動 作<br />
は 変 更 されていません。<br />
• RVCT v2.2 では、コマン ド ラ イ ンオプシ ョ ン --apcs /fpic がサポー ト され<br />
てお り 、 System V の 共 有 ラ イ ブ ラ リ と 互 換 性 があ る コー ド を コ ンパ イル<br />
で き ます。 こ のオプシ ョ ン を 使 用 する と 、 相 対 ア ド レ ス 参 照 がプ ロ グ ラ<br />
ム を ロー ド し た 場 所 に 依 存 し ない、 読 み 出 し 専 用 の 位 置 非 依 存 コー ド が<br />
生 成 さ れます。<br />
• <strong>ARM</strong> リ ン カで、 共 有 ラ イ ブ ラ リ のビル ド と 、 共 有 ラ イ ブ ラ リ に 対 する<br />
リンクがサポートされます。 また、SVr4 の 実 行 可 能 フ ァ イル と 共 有 オ<br />
ブジェ ク ト をビルド した り、 コードの 生 成 方 法 を 指 定 した りするための<br />
新 しいコマンド ラインオプシ ョ ンも 使 用 できます。<br />
• <strong>ARM</strong> リンカは <strong>ARM</strong> アーキテクチャ 用 ベースプラ ッ ト フォーム ABI<br />
[BPABI] に 準 拠 し、 GNU 拡 張 シンボルバージ ョ ン 管 理 モデルをサポー<br />
トします。<br />
• 浮 動 小 数 点 演 算 に 関 する <strong>ARM</strong> の 実 装 が、 C99 関 数 のサポー ト を 強 化 す<br />
る よ う に 変 更 さ れています。 こ れに よ って 動 作 が 大 幅 に 変 更 さ れた 部 分<br />
では、 開 発 者 は 新 し く 導 入 さ れた 互 換 性 モー ド を 使 用 し て、 容 易 に コー<br />
ド を 移 行 し て 新 機 能 を 使 用 で き ます。 詳 細 については、 「RVCT v2.2 にお<br />
け る ラ イ ブ ラ リ サポー ト の 変 更 点 」 (ページ A-33) を 参 照 して 下 さい。<br />
• 列 挙 値 が 範 囲 外 の 場 合 に 警 告 が 表 示 さ れる よ う にする ため、 <strong>ARM</strong> コン<br />
パイラの C 言 語 実 装 が 変 更 さ れま し た。 範 囲 外 の 値 は C++ の 場 合 と 同<br />
様 に 処 理 さ れます。 つま り 、 C を 使 用 している 場 合 、 RVCT の 最 新 の リ<br />
リ ースにア ッ プグ レー ド する と 、 範 囲 外 の 値 が 含 まれた enum 型 はサ イ ズ<br />
が 変 わる 可 能 性 があ り ます。<br />
C++、 またはコマンドラインオプション<br />
--enum_is_int、--strict、--strict_warnings のいずれかを 使 用 し てい る 場 合 、<br />
このよ うな 変 更 はあり ません。 詳 細 については、 「RVCT v2.2 におけ る<br />
<strong>ARM</strong> コ ンパイ ラ の 変 更 点 」 (ページ A-31) を 参 照 して 下 さい。<br />
• マルチス レ ッ ド 処 理 のサポー ト を 強 化 するため、 <strong>ARM</strong> ライブラリが 拡<br />
張 されました。 RTOS ベースのシ ス テム を 使 用 する 開 発 者 のための 変 更<br />
です。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-27<br />
Non-Confidential
以 前 のリ リ ースについて<br />
• 動 的 シンボルのエ ク ス ポー ト 方 法 を よ り 制 御 しやす く する ため、 <strong>ARM</strong><br />
コ ンパ イ ラ に 以 下 の 新 し いオプシ ョ ンが 用 意 さ れています。<br />
— --dllexport_all<br />
— --no_hide_all<br />
• RVCT の 他 の コ ンポーネン ト では 実 行 で き ない 分 岐 の 最 適 化 を <strong>ARM</strong> リ<br />
ン カで 実 行 で き ます。 セ ク シ ョ ンの 最 後 で 分 岐 命 令 を 最 適 化 する Tail の<br />
呼 び 出 し セ ク シ ョ ン を 処 理 する ため、 2 つの 新 しいコマン ド ラ イ ンオプ<br />
ションを 使 用 できます。<br />
• RVCT v2.1 で 使 用 が 制 限 されていたオプシ ョ ンは、 v2.2 で 使 用 されな く<br />
な り ま し た ( 詳 細 については、 「「RVCT v2.2 で 廃 止 さ れた 機 能 」」 を 参 照<br />
して 下 さい)。<br />
• RVCT v2.1 でサポー ト されていたオプシ ョ ンの 一 部 は、 v2.2 で 使 用 が 制<br />
限 されています ( 詳 細 については、 「RVCT v2.2 での 使 用 が 制 限 される 機<br />
能 」 (ページ A-30) を 参 照 して 下 さい)。<br />
RVCT v2.2 で 廃 止 された 機 能<br />
RVCT v2.2 では、 次 の 点 が 変 更 されま した。<br />
• RVCT v2.1 で 使 用 が 制 限 さ れていたすべての 機 能 およびオプシ ョ ンは、<br />
RVCT v2.2 で 廃 止 されま し た。 以 下 に 例 を 示 し ます。<br />
— <strong>ARM</strong> Object Format (AOF)、 <strong>ARM</strong> Library Format (ALF) 形 式 のライ<br />
ブ ラ リ な ど、 従 来 の Software Development Toolkit (SDT) 形 式<br />
— armlink -help の よ う に、 キーワー ド に 単 一 のダ ッ シ ュ を 使 用 する こ<br />
と<br />
— コンパイラオプション -ansi および -ansic<br />
• -fy、-fd、-Ec、-zo など、 RVCT v2.1 で 使 用 が 制 限 されていた 古 いコ ンパイ<br />
ラオプショ ンの 名 前 は、 RVCT v2.2 では 廃 止 されま した。<br />
よ り 適 切 なオプシ ョ ン 名 が 存 在 する 場 合 は、 コ ンパ イ ラ に よ って 警 告 が<br />
表 示 さ れます。 以 下 に 例 を 示 し ます。<br />
armcc -zo<br />
Warning: X0010W: Old syntax, please use '--split_sections'.<br />
こ れら の 機 能 およびオプシ ョ ンの リ ス ト については、 『コンパイ ラユー<br />
ザガイ ド』 の 付 録 A 「 以 前 の コ マン ド ラ イ ンオプシ ョ ンの 使 用 」 を 参 照<br />
して 下 さい。<br />
A-28 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
• 以 下 の 古 い <strong>ARM</strong> プロセッサおよびアーキテクチャは 廃 止 されました。<br />
— <strong>ARM</strong>6<br />
— <strong>ARM</strong>v3 および <strong>ARM</strong>v3M<br />
サポート されるすべてのコアのリ ス ト を 参 照 するには、 次 のコマンドを<br />
使 用 し ます。<br />
armcc --cpu list<br />
• 以 下 の 古 い 浮 動 小 数 点 アーキテ ク チ ャは 廃 止 さ れま し た。<br />
— VFPv1 (デフ ォル ト は VFPv2)<br />
— FPA<br />
— ソフト FPA<br />
指 定 がない 場 合 のデフ ォル ト は ソ フ ト VFP です。<br />
サポー ト さ れるすべての 浮 動 小 数 点 アーキテ ク チャ の リ ス ト を 参 照 する<br />
には、 次 の コ マン ド を 使 用 し ます。<br />
armcc --fpu list<br />
• 以 下 の コ ンパイ ラ オプシ ョ ン を 使 用 で き な く な り ま し た。<br />
— --fpu fpa、--fpu softfpa、 および --fpu vfpv1<br />
— --fa<br />
— --cpu 3 および --cpu 3M<br />
— -Oldrd および -Ono_ldrd<br />
— -Wletter および -Eletter<br />
• SXT 命 令 および UXT 命 令 ( 符 号 拡 張 ま たはゼ ロ 拡 張 ) の 同 義 語 がサポー ト<br />
されません。<br />
• FPA レジスタ f0-f7 および F0-F7 が 使 用 されな く な り ま し た。<br />
• 使 用 が 制 限 さ れてい る オプシ ョ ンがあ る 場 合 に 警 告 メ ッ セージを 表 示 す<br />
る 環 境 変 数 RVCT21_CLWARN がサポー ト されません。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-29<br />
Non-Confidential
以 前 のリ リ ースについて<br />
RVCT v2.2 での 使 用 が 制 限 される 機 能<br />
RVCT v2.2 では、 次 の 点 が 変 更 されま した。<br />
• 以 前 のバージ ョ ンの <strong>ARM</strong> Developer Suite (ADS) のアプ リ ケーシ ョ ン<br />
バイナリ インタフェース (ABI) と 互 換 性 があるコードをコンパイルす<br />
るため、 コンパイラオプション --apcs /adsabi がサポー ト されます。 こ<br />
のオプシ ョ ンは 現 在 使 用 が 制 限 さ れていて、 今 後 の リ リ ースで 廃 止 さ れ<br />
る 予 定 です。<br />
• <strong>ARM</strong> リンカと fromelf では、--no_debug や --nodebug の よ う に 無 効 化 オプ<br />
ションを 2 つの 形 式 で 使 用 でき ます。 ただし、--nodebug などの 非 標 準 の<br />
形 式 は 現 在 使 用 が 制 限 さ れてお り 、 将 来 サポー ト さ れな く な り ます。 使<br />
用 が 制 限 さ れてい る 構 文 を 使 用 する と 、 警 告 が 表 示 さ れます。<br />
• C++ コンフィギュレーションオプション --dll_vtbl が、 新 しいオプシ ョ<br />
ン --export_all_vtbl に 置 き 換 わ り ま し た。 オプシ ョ ン --dll_vtbl は 現 在<br />
使 用 が 制 限 されており、 将 来 サポー ト されな く な り ます。<br />
• RVCT アセンブラは Load Register EXclusive 命 令 を 以 下 の 2 つの 形 式 でサ<br />
ポー ト し ます。<br />
— LDREX{B|D|H}{cond} Rd, [Rn]<br />
— LDR{B|D|H}EX{cond} Rd, [Rn]<br />
2 番 目 の 形 式 は 現 在 使 用 が 制 限 されていて、 今 後 のリ リースで 廃 止 され<br />
る 予 定 です。<br />
逆 アセンブラでサポー ト されるのは 最 初 の 形 式 のみです。<br />
• RVCT アセンブラは Store Register EXclusive 命 令 を 以 下 の 2 つの 形 式 でサ<br />
ポー ト し ます。<br />
— STREX{B|D|H}{cond} Rd, [Rn]<br />
— STR{B|D|H}EX{cond} Rd, [Rn]<br />
2 番 目 の 形 式 は 現 在 使 用 が 制 限 されていて、 今 後 のリ リースで 廃 止 され<br />
る 予 定 です。<br />
逆 アセンブラでサポー ト されるのは 最 初 の 形 式 のみです。<br />
A-30 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
A.4.2<br />
RVCT v2.2 における <strong>ARM</strong> コ ンパイ ラの 変 更 点<br />
RVCT v2.2 では、 次 の 点 が 変 更 されま し た。<br />
• <strong>ARM</strong> コ ンパイ ラ には、 動 的 なシンボルのエ ク ス ポー ト 方 法 を よ り 制 御<br />
しやすくするため、 以 下 の 新 しいオプシ ョ ンが 用 意 されています。<br />
— --export_all_vtbl を 使 用 する と、 すべての 仮 想 テーブル 関 数 および<br />
キー 関 数 が 含 まれた ク ラ スの RTTI がエク スポー ト されます。<br />
— --export_defs_implicitly を 使 用 する と、 dllimport が 指 定 されたプロ<br />
トタイプの 定 義 がエクスポートされます。<br />
• <strong>ARM</strong> コンパイラには、 共 有 オブジェク トまたは DLL を 作 成 する と きに<br />
シンボルを 可 視 化 する ための、 次 の 新 し いオプシ ョ ンが 用 意 さ れていま<br />
す。<br />
— --dllexport_all を 使 用 する と 、 他 に 何 も 指 定 し な く て も、 すべての<br />
グ ローバルシンボルを 動 的 に 可 視 化 で き ます。<br />
— --no_hide_all を 使 用 する と 、 すべての extern 定 義 がエ ク ス ポー ト さ<br />
れ、 すべての 未 定 義 参 照 が イ ンポー ト さ れます。<br />
• r12 ではな く r7 を 使 用 する 点 を 除 き、 新 しい __swi_indirect_r7 は<br />
__swi_indirect_r12 と 同 様 に 動 作 します。 <strong>ARM</strong> Linux 上 の Thumb アプ リ<br />
ケーシ ョ ンでは、 __swi_indirect_r7 を 使 用 してカーネルのシステムコー<br />
ルを 作 成 します。<br />
• オーバーロード したグローバルの operator new を throw() として 処 理 でき<br />
るよう、--force_new_nothrow の 動 作 が 拡 張 されま し た。<br />
• 列 挙 値 が 範 囲 外 の 場 合 に 警 告 が 表 示 さ れる よ う にする ため、 <strong>ARM</strong> コン<br />
パイラの C 言 語 実 装 が 変 更 さ れま し た。<br />
厳 密 な C では、 列 挙 値 は -2147483648 ~ +2147483647 ( 境 界 値 を 含 む)<br />
の 範 囲 の int で 表 現 で き る 必 要 があ り ます。 以 前 の リ リ ースの RVCT で<br />
は、--strict オプシ ョ ン を 指 定 し た 場 合 を 除 き、 範 囲 外 の 値 は 警 告 が 表 示<br />
されるこ となく int にキャス ト されました。<br />
RVCT v2.2 ではこのよ う な 値 は C++ でも 同 様 に、unsigned int、long long、<br />
または unsigned long long として 扱 われます。つまり、C を 使 用 している<br />
場 合 、 RVCT の 最 新 の リ リ ース を 使 用 し ている と、 範 囲 外 の 値 が 含 まれ<br />
た enum 型 はサ イ ズが 変 わ る 可 能 性 があ り ます。 以 下 に 例 を 示 し ます。<br />
enum E1 { k1 = 0xffffffff }; /* value == 2147483648u; out-of-range in C */<br />
/* C: before 2.2: sizeof(enum E1) == 1 */<br />
/* C: 2.2: sizeof(enum E1) == 4 */<br />
/* C++: all: sizeof(enum E1) == 4 */<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-31<br />
Non-Confidential
以 前 のリ リ ースについて<br />
enum E2 { k2 = (int)0xffffffff }; /* value == -1; in range */<br />
/* C: before 2.2: sizeof(enum E1) == 1 */<br />
/* C: 2.2: sizeof(enum E1) == 1 */<br />
/* C++: all: sizeof(enum E1) == 1 */<br />
enum E3 { k3 = -1, k4 = 0xffffffff }; /* value == 2147483648u; out-of-range in C */<br />
/* C: before 2.2: sizeof(enum E1) == 1 */<br />
/* C: 2.2: sizeof(enum E1) == 8; use long long */<br />
/* C++: all: sizeof(enum E1) == 8; use long long */<br />
列 挙 値 が 範 囲 外 であ る こ と を 示 す 警 告 が 表 示 さ れる よ う にする には、 以<br />
下 のコマン ド を 使 用 し て 警 告 をエラーに 変 更 し ます。<br />
armcc --diag_error 66 ...<br />
C++、 またはコマンドラインオプション<br />
--enum_is_int、--strict、--strict_warnings のいずれかを 使 用 し てい る 場 合 、<br />
このよ うな 変 更 はありません。<br />
• <strong>ARM</strong> モード と GNU モード の 両 方 で __attribute__ キーワードの 使 用 がサ<br />
ポー ト されます。<br />
• イ ニシ ャ ラ イ ザが 指 定 さ れていない 変 数 を ZI データ セ ク シ ョ ンに 配 置<br />
する こ と を 明 示 する ため、 新 し い 変 数 属 性 zero_init または __zero_init__<br />
がサポー ト されます。<br />
• 新 しいオプシ ョ ン --dwarf3 を 使 用 する と、 C または C++ で 記 述 された<br />
コードのコンパイル 時 に <strong>ARM</strong> または Thumb のプ ロ グ ラ ム を 記 述 する た<br />
めに、 DWARF 3 標 準 のデバ ッ グテーブルを 指 定 で き ます。 形 式 を 指 定<br />
しない 場 合 は、 DWARF 2 が 想 定 されます。<br />
• <strong>ARM</strong> コ ンパ イ ラ に 渡 すコ マン ド ラ イ ンオプシ ョ ン を 指 定 する ための 新<br />
し い 環 境 変 数 RVCT22_CCOPT がサポー ト されます。<br />
• RVCT v2.2 では、コマン ド ラ イ ンオプシ ョ ン --apcs /fpic がサポー ト され<br />
てお り 、 System V の 共 有 ラ イブラ リ と 互 換 性 があ る コード を コ ンパイル<br />
できます。 このオプショ ンを 使 用 すると、 相 対 アドレス 参 照 がプログラ<br />
ム を ロー ド し た 場 所 に 依 存 し ない、 読 み 出 し 専 用 の 位 置 非 依 存 コー ド が<br />
生 成 さ れます。<br />
• 割 り 込 み 処 理 を 制 御 する ための 以 下 の 新 し い 組 み 込 み 関 数 があ り ます。<br />
— __enable_irq() および __disable_irq()<br />
— __enable_fiq() および __disable_fiq()<br />
• ま た、 最 適 化 を 制 御 する ための 新 し い 以 下 の 組 み 込 み 関 数 も あ り ます。<br />
— __schedule_barrier()<br />
— __force_stores()<br />
A-32 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
— __memory_changed()<br />
• テンプレー ト パ ラ メ ータ に 依 存 する 名 前 の 型 の 有 無 を、 状 況 か ら 暗 黙 的<br />
に 判 断 するかど う かを 指 定 する 次 の 新 しいオプシ ョ ンがあ り ます。<br />
— --implicit_typename<br />
— --no_implicit_typename<br />
デフォル ト は --no_implicit_typename です。<br />
• コ ンパイ ラ を 呼 び 出 す と き に、--show_cmdline オプシ ョ ンを 使 用 する と、<br />
コマンド ラインがどのよ うに 処 理 されたかを 確 認 できます。 コマンドは<br />
正 規 化 さ れて 表 示 さ れます。 ま た、 via ファイルの 内 容 は 展 開 されます。<br />
ただし、 このコマンドを 使 用 してもコマンドラインの 偶 発 的 なエラーは<br />
トラップされません。<br />
• 最 適 化 レベル -O3 での 浮 動 小 数 点 演 算 に 関 し て、 ISO の C と C++ の 標 準<br />
に 準 拠 し ている こ と が 保 証 されな く な り ま し た。 ISO の C と C++ の 標 準<br />
に 準 拠 するには、--fpmode=std オプシ ョ ン を 使 用 する 必 要 があ り ます。<br />
• ISO C 標 準 の 規 定 に 従 い、 const volatile (および volatile const) データ<br />
は、 RW セクションまたは ZI セクションに 配 置 されるよ うになりまし<br />
た。 これらのデータは、 以 前 は RO セクションに 配 置 されていました。<br />
こ の 仕 組 みでは、 コ ンパイ ラ に よ るデータ の 配 置 を 仮 定 し た 場 合 に、<br />
コー ド に 影 響 する 可 能 性 があ り ます。<br />
A.4.3<br />
RVCT v2.2 における ラ イ ブ ラ リ サポー ト の 変 更 点<br />
RVCT v2.2 では、 次 の 点 が 変 更 されま し た。<br />
• 浮 動 小 数 点 演 算 に 関 する <strong>ARM</strong> の 実 装 が、 C99 関 数 のサポー ト を 強 化 す<br />
る よ う に 変 更 さ れています。 こ れに よ って 動 作 が 大 幅 に 変 更 さ れた 部 分<br />
では、 開 発 者 は 新 し く 導 入 さ れた 互 換 性 モー ド を 使 用 し て、 容 易 に コー<br />
ド を 移 行 し て 新 機 能 を 使 用 で き ます。 fplib での 新 しい (または、 動 作 が<br />
変 更 さ れた) C99 関 数 は 以 下 の と お り です。<br />
— ilogb, ilogbf, ilogbl<br />
— logb, logbf, logbl<br />
— scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl<br />
— nextafter, nextafterf, nextafterl, nexttoward, nexttowardf, nexttowardl<br />
mathlib での 新 しい (または、 動 作 が 変 更 された) C99 関 数 は 以 下 の と お<br />
りです。<br />
— fpclassify および signbit<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-33<br />
Non-Confidential
以 前 のリ リ ースについて<br />
— isfinite、 isinf、 isnan、 および isnormal<br />
— copysign, copysignf<br />
— isgreater、 isgreaterequal、 isless、 islessequal、 islessgreater、 およ<br />
び isunordered<br />
コー ド を 移 植 しやす く する ため、 新 し い 互 換 性 モー ド を 使 用 する こ と で<br />
以 下 の 関 数 と マ ク ロ の 動 作 がエ ミ ュ レー ト さ れます。<br />
— ilogb, ilogbf, ilogbl<br />
— finite<br />
— isnan<br />
注<br />
この 古 い 関 数 のサポー ト は、 今 後 の リ リ ースで 廃 止 される 予 定 です。 こ<br />
れら の 関 数 を 使 用 し てい る 場 合 は、 最 新 版 のコ ンパ イ ラ の 等 価 な 関 数 に<br />
移 行 する こ と をお 勧 め し ます。<br />
• マルチス レ ッ ド 処 理 のサポー ト を 強 化 するため、 <strong>ARM</strong> ライブラリが 拡<br />
張 されました。 RTOS ベースのシ ス テム を 使 用 する 開 発 者 のための 変 更<br />
です。<br />
ユーザがオーバーラ イ ド でき る 関 数 __user_libspace() が 以 下 の 2 つの<br />
ラッパ 関 数 に 分 割 されました。<br />
__user_perproc_libspace()<br />
プ ロ セス 全 体 で 使 用 さ れる (つま り 、 すべてのス レ ッ ド で 共<br />
有 する) グ ローバルデータ を 保 存 する __user_libspace データ 領<br />
域 へのポ イ ン タ を 返 し ます。<br />
__user_perthread_libspace()<br />
特 定 のス レ ッ ド の ローカルデータ を 保 存 する __user_libspace<br />
データ 領 域 へのポ イ ン タ を 返 し ます。<br />
こ の 他 に、 同 時 ア ク セスに よ って 共 有 データ が 破 損 し ない よ う にする<br />
ロ ッ ク メ カニズムを 管 理 するため、 ユーザがオーバーラ イ ド でき る 以 下<br />
の 3 つの 新 しい 関 数 があ り ます。<br />
_mutex_initialize()<br />
32 ビッ トワードのポインタを 取 得 し、 有 効 なミューテックス<br />
と し て 初 期 化 し ます。<br />
int _mutex_initialize(mutex *m);<br />
_mutex_acquire()<br />
こ の 関 数 の 呼 び 出 し 側 ス レ ッ ド は、 指 定 さ れた ミ ューテ ッ ク<br />
スの ロ ッ ク を 取 得 し ます。<br />
A-34 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
void _mutex_acquire(mutex *m);<br />
_mutex_release()<br />
こ の 関 数 の 呼 び 出 し 側 ス レ ッ ド は、 指 定 さ れた ミ ューテ ッ ク<br />
ス を 解 放 し ます。<br />
void _mutex_release(mutex *m);<br />
上 記 の 変 更 に よ って、 マルチス レ ッ ド 環 境 での 一 部 関 数 の 動 作 が 変 更 さ<br />
れ、 マルチプロセスシステムでこれらの 関 数 を 開 発 者 がよ り 簡 単 に 使 用<br />
できるようになりました。<br />
• <strong>ARM</strong> ライブラリアン armar では、 行 番 号 や 文 字 数 を 含 め る など、 診 断<br />
メ ッ セージの 表 示 方 法 を 指 定 する ために、 コ マン ド ラ イ ンオプシ ョ ン<br />
--diag_style がサポー ト されます。<br />
armar --diag_style ide<br />
デフォル ト は <strong>ARM</strong> 形 式 (つま り 、 --diag_style arm) です。<br />
A.4.4<br />
RVCT v2.2 における <strong>ARM</strong> リ ン カの 変 更 点<br />
RVCT v2.2 では、 次 の 点 が 変 更 されま し た。<br />
• <strong>ARM</strong> リンカは <strong>ARM</strong> アーキテクチャ 用 ベースプラ ッ ト フォーム ABI<br />
[BPABI] に 準 拠 し、 GNU 拡 張 シンボルバージ ョ ン 管 理 モデルをサポー<br />
トします。<strong>ARM</strong> リンカには、 シンボルバージョン 管 理 を 制 御 する 次 の<br />
新 しいオプシ ョ ンがあり ます。<br />
— --symver_script file を 使 用 する と 、 暗 黙 のシンボルバージ ョ ン 管 理<br />
が 有 効 にな り 、 シンボルバージ ョ ン ス ク リ プ ト と し て file を 入 力 で<br />
きます。<br />
— --symver_soname を 使 用 する と 、 暗 黙 のシンボルバージ ョ ン 管 理 およ<br />
びバージ ョ ンシンボルが 有 効 にな り 、 静 的 バイ ン ド が 行 われます。<br />
シンボルにバージ ョ ンが 定 義 されていない 場 合 は、 リ ンクしてい<br />
るファイルの SONAME が 使 用 されます。<br />
注<br />
一 般 的 に、 シンボルバージ ョ ン 管 理 は、 DSO または 共 有 ライブラ リ を<br />
作 成 し た り 、 それら に リ ン ク し た り する と き にのみ 有 用 です。 静 的 リ ン<br />
クには 影 響 しません。<br />
• RVCT の 他 のコ ンポーネン ト では 実 行 で き ない 分 岐 の 最 適 化 を <strong>ARM</strong> リ<br />
ンカで 実 行 できます。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-35<br />
Non-Confidential
以 前 のリ リ ースについて<br />
最 適 化 を 制 御 する 新 し い コ マン ド ラ イ ンオプシ ョ ンは、 次 の 2 つです。<br />
— --inline を 使 用 する と、 分 岐 のイ ン ラ イ ン 化 が 可 能 にな り ます。 デ<br />
フォルトでは、 インライン 化 は 無 効 です。<br />
— --info inline を 使 用 する と、 関 数 をインラ インにするご とに 情 報 が<br />
表 示 さ れ、 イ ン ラ イ ンの 総 数 を 確 認 で き ます。<br />
--inline と --feedback file の 両 方 を 指 定 する と、 リ ンカによ り イ ン ラ イ<br />
ン 化 された 関 数 がフ ィードバッ ク フ ァ イルに 書 き 込 まれます。<br />
• セ ク シ ョ ンの 最 後 で 分 岐 命 令 を 最 適 化 する Tail の 呼 び 出 しセ ク シ ョ ンを<br />
処 理 する ため、 次 の 2 つの 新 しいコマン ド ラ イ ンオプシ ョ ンを 使 用 でき<br />
ます。<br />
— --tailreorder を 使 用 する と、 可 能 であれば Tail の 呼 び 出 し セ ク シ ョ<br />
ンをターゲッ トの 上 に 移 動 します。<br />
— --info tailreorder を 使 用 する と 、 移 動 し た Tail の 呼 び 出 し セ ク シ ョ<br />
ンに 関 する 情 報 が 表 示 さ れます。<br />
• <strong>ARM</strong> リ ンカでのベニア 生 成 を 制 御 する ため、 次 の 2 つのコマン ド ラ イ<br />
ンオプシ ョ ンがあ り ます。<br />
— --no_inlineveneer を 使 用 して、 インラ インベニアを 無 効 にし ます。<br />
— --no_veneershare を 使 用 する と 、 ベニアが 共 有 さ れません。<br />
• <strong>ARM</strong> リ ンカで、 共 有 ラ イ ブ ラ リ のビル ド と 、 共 有 ラ イ ブ ラ リ に 対 する<br />
リンクがサポートされます。 また、SVr4 および BPABI の 実 行 可 能 フ ァ<br />
イルと 共 有 オブジェク トである BPABI DLL をビルドしたり、 コードの<br />
生 成 方 法 を 指 定 し た り する ための 次 の 新 し い コ マン ド ラ イ ンオプシ ョ ン<br />
も 使 用 できます。<br />
— --sysv を 使 用 する と 、 SVr4 形 式 の ELF ファイルをビルドできます。<br />
— --shared を 使 用 する と、 SVr4 共 有 オブジ ェ ク ト を ビル ド で き ます。<br />
— --soname name を 使 用 する と、 共 有 オブジェ ク ト の SONAME を 指 定 でき<br />
ます。<br />
— --fpic を 使 用 する と 、 位 置 非 依 存 コー ド が リ ン ク さ れます。<br />
— --init symbol を 使 用 する と 、 初 期 化 コー ド を 指 定 で き ます。<br />
— --fini symbol を 使 用 する と 、 実 行 可 能 フ ァ イルま たは 共 有 オブジ ェ<br />
ク ト をアンロードするときにコードを 実 行 できます。<br />
— --linux_abitag id を 使 用 する と 、 最 小 限 の 互 換 性 を 持 つ Linux カー<br />
ネルバージ ョ ンを 指 定 でき ます。<br />
A-36 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
— --dynamiclinker name を 使 用 する と 、 デフ ォル ト の 動 的 リ ン カ を 変 更<br />
できます。<br />
• スタートアップシンボルが 異 なる 代 替 の C ライブラリを 使 用 するため、<br />
新 しいリ ンカオプシ ョ ン --startup を 使 用 できます。 同 様 に、 C++ 初 期<br />
化 コードには --cppinit オプシ ョ ンを 使 用 でき ます。<br />
• <strong>ARM</strong> リンカオプション --symbols を 使 用 する と 、 リ ン ク 手 順 で 使 用 さ れ<br />
てい る ローカルおよびグ ローバルのシンボルの 一 覧 が 作 成 さ れます。<br />
RVCT v2.2 のデフ ォル ト では、 この 出 力 結 果 にマ ッ ピングシンボルが 含<br />
まれません。 新 しいコマンド ラ インオプシ ョ ン --list_mapping_symbols を<br />
使 用 する と 、--symbols の 出 力 結 果 にマ ッ ピングシンボルを 含 める こ と が<br />
できます。<br />
• <strong>ARM</strong>v3 (RVCT v2.2 で 使 用 さ れな く な り ま し た) を 指 定 する オブジ ェ ク<br />
ト を 検 出 し た 場 合 、 そのオブジ ェ ク ト を <strong>ARM</strong>v4 にアップグレード して、<br />
<strong>ARM</strong> ライブラリで 使 用 できるようにします。 ターゲッ トアーキテク<br />
チャ レベルを 上 げた 場 合 は、 警 告 メ ッ セージが 表 示 されます。<br />
• <strong>ARM</strong> リンカを 使 用 して、 スキャッタロード 記 述 ファイルでシンボル 名<br />
を 使 用 して 入 力 セクシ ョ ンを 参 照 でき ます。 『リンカ/ ユーテ ィ リ テ ィ<br />
ガイド』 の input_symbol_pattern の 説 明 を 参 照 し て 下 さい。<br />
A.4.5<br />
RVCT v2.2 における <strong>ARM</strong> アセンブ ラの 変 更 点<br />
RVCT v2.2 では、 次 の 点 が 変 更 されま し た。<br />
• <strong>ARM</strong>v6T2 には、 Thumb 命 令 セ ッ ト の メ ジ ャーア ッ プデー ト であ る<br />
Thumb-2 が 定 義 されています。 <strong>ARM</strong> 命 令 セ ッ ト と ほぼ 同 一 の 機 能 が 提<br />
供 されます。 16 ビット と 32 ビッ トの 命 令 を 備 え、 <strong>ARM</strong> に 類 似 し たパ<br />
フォーマンスと Thumb に 類 似 したコード 密 度 を 両 立 しています。<br />
<strong>ARM</strong>v6T2 には、 <strong>ARM</strong> 命 令 セ ッ ト の 新 し い 命 令 も 定 義 さ れています。<br />
アセンブラでは <strong>ARM</strong> と Thumb-2 の 新 しい 命 令 がすべてサポー ト されま<br />
す。<br />
• <strong>ARM</strong>v6 アーキテ ク チ ャ の 新 し い 拡 張 機 能 がサポー ト さ れます。<br />
— <strong>ARM</strong>v6Z には、 <strong>ARM</strong>1176JZ(F)-S コアで 使 用 される <strong>ARM</strong> Security<br />
Extensions (TrustZone) が 定 義 さ れています。<br />
— <strong>ARM</strong>v6K には、 <strong>ARM</strong> MPCore で 使 用 される シンメ ト リ ッ クマルチ<br />
プロセッサシステム (SMP) の 命 令 が 定 義 されています。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-37<br />
Non-Confidential
以 前 のリ リ ースについて<br />
• RVCT v2.2 アセンブ ラ を 使 用 する と 、 記 述 し た ソ ース コー ド を <strong>ARM</strong> ま<br />
たは Thumb-2 の 命 令 にアセンブルでき ます。 Thumb-2 以 前 のプ ロ セ ッ サ<br />
を 使 用 する 場 合 、 同 じ 言 語 を 使 用 し て Thumb 命 令 を 記 述 できます。<br />
ただし RVCT v2.2 では、 従 来 のコード をアセンブルするため、 古 いアセ<br />
ンブ リ 言 語 の 構 文 も サポー ト し ます。<br />
• 指 定 さ れたサ イ ズの メ モ リ ブ ロ ッ ク を 指 定 さ れたシンボルに 割 り 当 て る<br />
COMMON デ ィ レ ク テ ィ ブをサポー ト し ます。 ま た、 メ モ リ を どの よ う に 整<br />
列 さ せる か も 指 定 で き ます。<br />
COMMON symbol{,size{,alignment}}<br />
• DWARF 3 標 準 のデバ ッ グテーブルを 指 定 する ための 新 し いオプシ ョ ン<br />
--dwarf3 があ り ます。 デフォル ト は DWARF 2 のままです。<br />
• 共 有 オブジ ェ ク ト ま たは DLL を 作 成 する と きにシンボルを 可 視 化 する<br />
ため、 次 の 新 しいオプシ ョ ンが 用 意 されています。<br />
— --dllexport_all を 使 用 すると、 他 に 何 も 指 定 しなくても、すべての<br />
グ ローバルシンボルを 動 的 に 可 視 化 で き ます。<br />
— --no_hide_all を 使 用 する と、すべての extern 定 義 がエ ク ス ポー ト さ<br />
れ、 すべての 未 定 義 参 照 が イ ンポー ト されます。<br />
• IMPORT ディレクティブと EXPORT ディレクティブに 次 の 新 しい 属 性 を 使 用<br />
して 一 定 の 可 視 度 を 設 定 し、 ELF シンボルを 出 力 できます。<br />
— DYNAMIC<br />
— HIDDEN<br />
— PROTECTED<br />
A.4.6<br />
RVCT v2.2 における fromelf ユーテ ィ リ テ ィ の 変 更 点<br />
RVCT v2.2 では、 次 の 点 が 変 更 されま した。<br />
• fromelf ユーテ ィ リ テ ィ が 強 化 され、--text=/s からの 出 力 で、GNU 拡 張 シ<br />
ンボルバージ ョ ン 管 理 テーブルをサポート します。 シンボルバージ ョ ン<br />
管 理 テーブルのデコー ド を 無 効 にする には、 新 し い --no_symbol<strong>version</strong>s<br />
オプシ ョ ンを 使 用 し ます。<br />
A-38 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
A.5 RVCT v2.1 と RVCT v2.0 の 相 違 点<br />
このセクショ ンでは、 RVCT v2.1 と RVCT v2.0 と の 間 の 相 違 点 について 説 明<br />
します。<br />
A.5.1<br />
RVCT v2.1 における 主 な 変 更 点<br />
RVCT v2.1 では、 次 の 点 が 変 更 されま し た。<br />
• 例 外 を 含 め、 C++ が 完 全 にサポー ト されます。<br />
• <strong>ARM</strong>v6 コアのサポートが 強 化 されました。 サポート されるすべてのコ<br />
アの リ ス ト を 参 照 するには、 次 の コ マン ド を 使 用 し ます。<br />
armcc --cpu list<br />
• コンパイラ、 リンカ、 アセンブラ、 および fromelf で、 Microsoft Visual<br />
Studio などの IDE と の 互 換 性 が 高 い 形 式 で 警 告 およびエ ラーを 生 成 する<br />
ための、 新 しい --diag_style オプシ ョ ンがサポー ト されます。<br />
• コ ンパイ ラおよび リ ンカで、 使 用 さ れていない 仮 想 関 数 を 生 成 済 み C++<br />
コー ド か ら 削 除 する 新 機 能 がサポー ト さ れます。<br />
• コンパイラで 新 しい --min_array_alignment オプシ ョ ンがサポー ト されま<br />
す。<br />
• 次 にフ ァ イルを コ ンパイルする と きのため、 使 用 し ていない 関 数 につい<br />
て コ ンパ イ ラ に 通 知 する リ ンカ フ ィ ー ド バ ッ ク を 使 用 で き ます。 フ ィ ー<br />
ド バ ッ ク は 関 数 自 体 のセ ク シ ョ ン 内 に 配 置 さ れ、 後 で リ ンカに よ って 削<br />
除 できるようになっています。<br />
• <strong>ARM</strong> ® ツールを 使 用 する と き、 SHF_STRINGS セクションを 使 用 して、 複 数<br />
のコ ンパ イルユニ ッ ト で 適 切 な 文 字 列 を 共 有 で き ます。 こ れは、 <strong>ARM</strong><br />
アーキテクチャ 用 ELF 標 準 [AAELF] によって 定 義 されています。<br />
• VFPv1 のサポートは 廃 止 される 予 定 です。デフォルトは VFPv2 にな り<br />
ました。 サポートされるすべての FPU のリストを 参 照 するには、 次 の<br />
コマンドを 使 用 します。<br />
armcc --fpu list<br />
• キーワー ド で 単 一 ダ ッ シ ュ を 使 用 する こ と が 制 限 さ れ、 今 後 サポー ト さ<br />
れなくなります。 コンパイルツールを 使 用 するときは、 ダッシュを 2 つ<br />
使 用 し ます。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-39<br />
Non-Confidential
以 前 のリ リ ースについて<br />
• コンパイルツールで 現 在 使 用 が 制 限 されているオプション (コンパイラ<br />
オプシ ョ ン --fpu softfpa な ど) を 使 用 する と 、 デフ ォル ト で 警 告 メ ッ<br />
セージが 表 示 されます。<br />
RVCT v2.1 で こ の 動 作 を 変 更 するには、 環 境 変 数 RVCT21_CLWARN を 次 のい<br />
ずれかの 値 に 設 定 し ます。<br />
0 古 い 構 文 および 現 在 使 用 が 制 限 さ れてい る オプシ ョ ンに 対 し<br />
て 警 告 を 表 示 し ます。<br />
1 古 い 構 文 を 許 容 して 警 告 を 表 示 せず、 現 在 使 用 が 制 限 されて<br />
い る オプシ ョ ンに 対 し て 警 告 を 表 示 し ます。 こ れがデフ ォル<br />
トです。<br />
2 古 い 構 文 および 現 在 使 用 が 制 限 さ れてい る オプシ ョ ン を 許 容<br />
して、 警 告 を 表 示 しません。<br />
A.5.2<br />
RVCT v2.1 における <strong>ARM</strong> コ ンパイ ラの 変 更 点<br />
RVCT v2.1 では、 次 の 点 が 変 更 されま した。<br />
• --gnu オプシ ョ ン を 指 定 し て コ ンパ イ ラ を 実 行 する と 、 GNU 拡 張 がサ<br />
ポー ト さ れます。 ただ し、 こ のオプシ ョ ン を 指 定 せずに コ ンパイ ラ を 実<br />
行 し て も、 い く つかの 拡 張 機 能 がサポー ト さ れます。 こ れら の コ ンパイ<br />
ルモード を、 それぞれ 次 のよ う に 呼 びます。<br />
<strong>ARM</strong> モード<br />
--gnu オプシ ョ ン を 指 定 せずに コ ンパイルする、 デフ ォル ト の<br />
モード です。<br />
GNU モード<br />
--gnu オプシ ョ ンを 指 定 してコンパイルし ます。<br />
GNU 拡 張 のすべての 機 能 の リ ス ト 、 およびそれらの 機 能 をサポー ト す<br />
るモード と 言 語 の 詳 細 については、 『RealView コード 生 成 ツール v2.1 コ<br />
ンパイ ラ / ライブラリガイド』 のコンパイラの 参 照 について 説 明 した 章<br />
を 参 照 して 下 さい。<br />
• Edison Design Group (EDG) のフロン トエンドを 使 用 して、 ISO C++ の<br />
サポー ト を 強 化 し ま した。 これによ り、 コード 生 成 の 際 に <strong>ARM</strong> コンパ<br />
イ ラ にプ ロ グ ラ ム 表 現 を 渡 す 完 全 な C++ パーサが 提 供 されます。 その 結<br />
果 、 C++ 例 外 のス ロー と キ ャ ッ チがサポー ト さ れます。<br />
A-40 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
• マルチフ ァ イルコンパイルによ って、 複 数 のコンパイルユニ ッ ト にまた<br />
がって 最 適 化 を 実 行 で き ます。 新 し い --multifile オプシ ョ ンを 使 用 する<br />
と、 この 動 作 を 指 定 できます。 マルチファイルコンパイルを 行 うには、<br />
以 下 に 示 すよ う に、 コ マン ド ラ イ ンで 複 数 のフ ァ イルを 指 定 する 必 要 が<br />
あります。<br />
armcc [options] --multifile ifile_1 ... ifile_n<br />
• マルチフ ァ イルコンパイルがデフォル ト で 可 能 な 新 しい -O3 最 適 化 レベ<br />
ルが 採 用 されま し た。<br />
• 新 しいオプシ ョ ン --cpu list および --fpu list を 使 用 する と 、サポー ト さ<br />
れている CPU とアーキテクチャについての 詳 細 を 表 示 できます。<br />
• 新 しい --min_array_alignment オプシ ョ ン を 使 用 する と 、 配 列 の 最 小 境 界<br />
整 列 を 指 定 で き ます。<br />
• 新 しい __breakpoint() 組 み 込 み 関 数 が 採 用 さ れま し た。<br />
• 戻 り 値 を 持 たない 関 数 が 採 用 されました。<br />
• --old_cfe オプションは 使 用 されなくなりました。<br />
A.5.3<br />
RVCT v2.1 における ラ イ ブ ラ リ サポー ト の 変 更 点<br />
RVCT v2.1 では、 次 の 点 が 変 更 されま し た。<br />
• C++ のライブラ リである Rogue Wave ライブラリおよび C++ ランタイム<br />
ライブラリによって、C++ 例 外 がサポー ト さ れる よ う にな り ま し た。 例<br />
外 のサポー ト を 必 要 と し ないアプ リ ケーシ ョ ン も、 これらの C++ ライブ<br />
ラリで 引 き 続 きサポートされます。<br />
• wchar.h のうち、 ファイル I/O、 および printf と scanf におけ る c99 の 16<br />
進 数 浮 動 小 数 点 演 算 のサポー ト を 除 く すべての 機 能 が C ライブラリでサ<br />
ポー ト されます。<br />
• 圧 縮 アルゴ リ ズム をサポー ト する ため、 領 域 テーブルの 新 し い 形 式 が 採<br />
用 されました。 この 新 しい 形 式 には ZISection$$Table が 含 まれていませ<br />
ん。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-41<br />
Non-Confidential
以 前 のリ リ ースについて<br />
A.5.4<br />
RVCT v2.1 における <strong>ARM</strong> リ ン カの 変 更 点<br />
RVCT v2.1 では、 次 の 点 が 変 更 されま した。<br />
• ROM サ イ ズを 最 適 化 する ため、 読 み 出 し / 書 き 込 みデータ の 圧 縮 がデ<br />
フォルトで 有 効 になっています。<br />
• コード 用 とデータ 用 に 1 つずつ、 計 2 つの RO 実 行 領 域 を 出 力 する ため<br />
に、 新 しいオプシ ョ ン --rosplit を 使 用 できます。<br />
• C++ 例 外 テーブルをサポー ト する ための 新 し い コ マン ド ラ イ ンオプシ ョ<br />
ンを 使 用 できます。 新 しいオプショ ン --noexceptions を 使 用 する と、<br />
コードで 例 外 が 処 理 されません。<br />
新 しいオプシ ョ ン --exceptions_tables=unwind|nounwind を 使 用 する と、 入<br />
力 フ ァ イルの 内 容 にかかわ らず 例 外 テーブルが 生 成 さ れます。 例 えば<br />
--exceptions_tables=unwind を 使 用 する と 、 C 言 語 およびアセンブ リ 言 語<br />
のオブジェ ク ト 用 に、 デバッ グフ レームの 情 報 が 書 き 込 まれた 例 外 テー<br />
ブルを 作 成 でき ます。<br />
• ユーザ ラ イ ブ ラ リ の 検 索 場 所 を 指 定 する ための 新 し いオプシ ョ ン<br />
--userlibpath を 使 用 できます。<br />
• リンカでは、オブジェクトファイルのアライメントがより 厳 密 にチェッ<br />
クされます。 スタックを 8 バイ ト で 区 切 る 必 要 があるコードが、 スタ ッ<br />
クの 8 バイ ト のア ラ イ メ ン ト を 保 持 する コー ド に よ ってのみ 直 接 的 ま た<br />
は 間 接 的 に 呼 び 出 さ れます。 ス タ ッ ク のア ラ イ メ ン ト が 競 合 し てい る の<br />
が 検 出 された 場 合 、 リ ンカによって 次 のよ うなエラーメ ッセージが 表 示<br />
されます。<br />
Error L6238E: object_name.o(section_name) contains invalid call from ’<br />
~PRES8’ function to ’ REQ8’ function_name<br />
外 部 シンボルのア ド レ ス を 参 照 し た 場 合 も 、 同 様 の 警 告 メ ッ セージが 表<br />
示 されます。<br />
Warning L6306W: ’ ~PRES8’ section object_name.o(section_name) should not<br />
use the address of ’ REQ8’ function_name<br />
A.5.5<br />
RVCT v2.1 における <strong>ARM</strong> アセンブ ラの 変 更 点<br />
RVCT v2.1 では、 次 の 点 が 変 更 されま した。<br />
• 新 しいオプシ ョ ン --cpu list および --fpu list を 使 用 する と、サポー ト さ<br />
れている CPU と アーキテクチャについての 詳 細 を 表 示 できます。<br />
A-42 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
• 指 定 さ れた レ ジ ス タ の 数 字 を 返 す 新 し い 単 項 演 算 子 :RCONST: が 含 まれて<br />
います。<br />
• コードを PRES8 と し てマー ク する かど う かを 判 断 する ため、 ス タ ッ ク ポ<br />
インタ (SP) を 変 更 する 命 令 を 確 認 し ます。 こ の 変 更 は、 必 要 な 場 合 自<br />
動 で 行 われます ( 詳 細 については、 『RealView コード 生 成 ツール v2.1 ア<br />
センブラガイ ド』 のデ ィ レ ク テ ィ ブ 参 照 について 説 明 し た 章 を 参 照 し て<br />
下 さい)。<br />
• コード 内 で 発 生 し う るインターロ ッ クについての 警 告 を 表 示 できます。<br />
この 機 能 を 有 効 にするには、 次 のコマン ド を 使 用 し ます。<br />
armasm --diag_warning 1563<br />
A.5.6<br />
RVCT v2.1 における fromelf ユーテ ィ リ テ ィ の 変 更 点<br />
RVCT v2.1 では、 次 の 点 が 変 更 されま し た。<br />
• ELF イ メ ージをデコー ド し て 構 造 体 内 外 の 配 列 を 展 開 する ための 新 し い<br />
--expandarrays オプシ ョ ン を 使 用 で き ます。<br />
このオプショ ンは、--text -a と 一 緒 に 使 用 する 必 要 があ り ます ( 単 独 で<br />
は 使 用 でき ません)。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-43<br />
Non-Confidential
以 前 のリ リ ースについて<br />
A.6 RVCT v2.0 と RVCT v1.2 の 相 違 点<br />
このセクションでは、 RVCT v2.0 と RVCT v1.2 と の 間 の 相 違 点 について 説 明<br />
します。<br />
A.6.1<br />
RVCT v2.0 における 主 な 変 更 点<br />
RVCT v2.0 では、 次 の 点 が 変 更 されま した。<br />
• <strong>ARM</strong> アーキテクチャ v6 がサポー ト されます。<br />
• <strong>ARM</strong> アーキテクチャ 用 ABI ( 基 本 標 準 ) [BSABI] に 準 拠 し ています。<br />
詳 細 については、 http://www.arm.com を 参 照 して 下 さい。<br />
• 浮 動 小 数 点 の 例 外 を 発 生 させるには、--fpmode ieee_full を 選 択 する 必 要<br />
があ り ます。 デフォル ト 設 定 が --fpmode std であ り、 そのままでは 浮 動<br />
小 数 点 の 例 外 が 発 生 し ないためです。<br />
• コマンド ラインキーワードを 示 すためには、 ダッシュを 2 つ (--) 使 用<br />
します ( 例 :--cpp)。<br />
A.6.2<br />
RVCT v2.0 における <strong>ARM</strong> コ ンパイ ラの 変 更 点<br />
<strong>ARM</strong> コンパイラ (armcc) では、 次 の 点 が 変 更 されま し た。<br />
• コマンド ラインオプショ ンが 変 更 された RVCT v2.0 コンパイラのフロン<br />
トエンドが 新 しくなりました。 古 い <strong>ARM</strong> コンパイラで 使 用 できたオプ<br />
シ ョ ン も、 後 方 互 換 性 のためにサポー ト さ れます。<br />
• 4 つの 独 立 し た コ ンパイ ラ armcc、 tcc、 armcpp、 および tcpp が 1 つのコ ン<br />
パイラ armcc に 統 合 されま し た。 ただし、 新 しいコ ンパイ ラに 移 行 しや<br />
すくするため、 RVCT v2.0 コ ンパ イ ラ は 個 別 の コ ンパイ ラ 名 で 呼 び 出 す<br />
ことができます。<br />
• <strong>ARM</strong>v6 をサポート し、 <strong>ARM</strong>v6 の 非 境 界 整 列 ア ク セス 動 作 を 利 用 し ま<br />
す。<br />
• イ ン ラ イ ンアセンブ ラ を 補 完 する 新 し い 組 み 込 みアセンブ ラ が 採 用 さ れ<br />
ました。<br />
• #pragma arm および #pragma thumb を 使 用 し て、 関 数 単 位 で <strong>ARM</strong> と Thumb ®<br />
のコンパイルを 実 行 できます。<br />
A-44 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential
以 前 の リ リ ースについて<br />
• --fpmode オプシ ョ ン を 使 用 し て、 5 つの 浮 動 小 数 点 モデルを 選 択 で き ま<br />
す。<br />
• --list オプシ ョ ンの 動 作 が、 古 いコンパイ ラ と 異 な り ます。<br />
• C++ テンプレー ト イ ン ス タ ン ス 生 成 が 可 能 です。<br />
• C++ ネーム スペース を 使 用 で き ます。<br />
• ポインタアライメントのレベルを 指 定 できます。<br />
• C++ をコンパイルするときに ROPI がサポー ト されな く な り ま した。<br />
• 診 断 メ ッ セージを 制 御 および 操 作 で き ます。 ま た、 診 断 メ ッ セージの 番<br />
号 の 付 け 方 が 変 更 されま し た。 メ ッ セージの 番 号 の 形 式 は #nnnn または<br />
#nnnn-D です。 接 尾 文 字 -D を 伴 う メ ッセージのメ ッセージ 番 号 は、 診 断<br />
メ ッ セージを 操 作 する オプシ ョ ンで 使 用 で き ます。<br />
• 新 しいインタフェースでは、 古 いコンパイラオプシ ョ ンの 多 くがサポー<br />
ト さ れません。 ただ し 下 位 互 換 性 のため、--old_cfe オプシ ョ ン を 使 用 す<br />
る と それらのオプシ ョ ンを 使 用 でき ます。 詳 細 については、 『RealView<br />
コード 生 成 ツール v2.0 コンパイラ / ライブラリガイド』 の 古 いコ ンパイ<br />
ラ オプシ ョ ンについて 説 明 し た 付 録 を 参 照 し て 下 さ い。 こ の 付 録 では、<br />
古 いコ ンパイ ラオプシ ョ ンの う ち、 新 しいコ ンパイ ラ オプシ ョ ンにマ ッ<br />
プで き る も のがあ る 場 合 、 それを 示 し ています。 ま た、 『RealView コー<br />
ド 生 成 ツール v2.0 コンパイラ / ライブラリガイド』 に 記 載 されている<br />
メッセージについて、 この 付 録 では、 新 しいコンパイラインタフェース<br />
で 出 力 さ れる 等 価 な メ ッ セージを 示 し ています。<br />
注<br />
--old_cfe オプシ ョ ン を 使 用 する と 、 コ ンパ イ ラ に よ り 出 力 さ れる メ ッ<br />
セージに、 古 い 形 式 で 番 号 が 付 き ます。<br />
その 他 、 新 し いプ ラ グマ と 定 義 済 みマ ク ロ の 追 加 、 C と C++ 言 語 の 拡 張 、 お<br />
よび <strong>ARM</strong> の C のライブラ リ と C++ のライブラ リの 変 更 などが 行 われました。<br />
A.6.3<br />
RVCT v2.0 における <strong>ARM</strong> リ ン カの 変 更 点<br />
<strong>ARM</strong> リンカ (armlink) では、 次 の 点 が 変 更 されま し た。<br />
• --unresolved オプシ ョ ンが 部 分 リ ン ク に 対 応 し ま し た。<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-45<br />
Non-Confidential
以 前 のリ リ ースについて<br />
• 新 しいステア リ ングファ イルコマンド RESOLVE が 追 加 され、 部 分 リ ン ク<br />
を 実 行 する と き に 使 用 さ れる よ う にな り ま し た。 RESOLVE は、 armlink オプ<br />
ションの --unresolved と 用 法 が 似 ています。<br />
• オプシ ョ ン --edit が 複 数 のフ ァ イルに 対 応 し ま し た。<br />
• バイ ト をパ ッ ド する ための 値 を 指 定 する 新 し いオプシ ョ ン --pad があ り<br />
ます。<br />
• 新 しいスキャ ッ タロード 属 性 EMPTY および ZEROPAD が 追 加 されま し た。<br />
A.6.4<br />
RVCT v2.0 における <strong>ARM</strong> アセンブ ラの 変 更 点<br />
<strong>ARM</strong> アセンブラ (armasm) では、 次 の 点 が 変 更 されま し た。<br />
• <strong>ARM</strong> アーキテクチャ v6 の 新 し い 命 令 がサポー ト さ れます。 サチュ レー<br />
ト 命 令 、 並 列 命 令 、 パ ッ ク / 展 開 命 令 な どがサポー ト さ れる よ う にな り<br />
ました。<br />
• ALIGN デ ィ レ ク テ ィ ブに、 パデ ィ ングの 内 容 を 指 定 するパラ メ ータが 追<br />
加 されました。 このパラ メータはオプシ ョ ンです。<br />
• 新 しい AREA ディレクティブ NOALLOC があ り ます。<br />
• 新 しい 2 つのデ ィ レ ク テ ィ ブ ELIF および FRAME RETURN ADDRESS があ り ま<br />
す。<br />
• 4 つの 新 し い 組 み 込 み 変 数 {AREANAME}、 {COMMANDLINE}、 {LINENUM}、 および<br />
{INPUTFILE} があ り ます。<br />
A-46 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0202IJ<br />
Non-Confidential