07.01.2015 Views

PDF version - ARM Information Center

PDF version - ARM Information Center

PDF version - ARM Information Center

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!