RXファミリ C/C++コンパイラ、アセンブラ、最適化 …...User’s Manual...
Transcript of RXファミリ C/C++コンパイラ、アセンブラ、最適化 …...User’s Manual...
-
User’s M
anual
www.renesas.com
RX ファミリ C/C++コンパイラ、
アセンブラ、最適化リンケージエディタ コンパイラパッケージ V.1.01 ユーザーズマニュアル
Rev.1.00 2011.02
本資料に記載の全ての情報は本資料発行時点のものであり、ルネサス エレクトロニクスは、 予告なしに、本資料に記載した製品または仕様を変更することがあります。 ルネサス エレクトロニクスのホームページなどにより公開される最新情報をご確認ください。
a5077977テキストボックス誤記に関するお詫び:本資料の187 ページに誤記があり、訂正いたしました。
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ はじめに
はじめに
本マニュアルは、「RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ」の使用方法を
述べたものです。
本製品は C言語、C++言語およびアセンブリ言語で記述したソースプログラムを、RXファミリ用オブジェクト
プログラムおよびロードモジュールに変換するソフトウェアシステムです。
ご使用になる前に、本マニュアルを良く読んで理解してください。
■表記上の注意事項
本マニュアルの説明の中で用いられる記号は、次の意味を示しています。
〈 〉 この記号で囲まれた内容を指定することを示します。
[ ] 省略してもよい項目を示します。
... 直前の項目を 1回以上指定することを示します。
△ 1個以上の空白を示します。
| |で区切られた項目を選択できることを示します。
本マニュアルは IBM PC*1互換機およびその互換機上で動作するMicrosoft® Windows® XP、 Windows® Vista ま
たはWindows 7®*2に対応するように書かれています。
【注】 *1 IBM PCは、米国 International Business Machines Corporationの登録商標です。
*2 Microsoft®, Windows®は、米国Microsoft Corporationの米国及びその他の国における登録商標または商標です。
※ その他、本マニュアルの文中に使われている会社名および製品名、システム名などは各社の登録商標または商標で
す。
R20UT0570JJ0100 Rev.1.00 Page i of ii 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ はじめに
R20UT0570JJ0100 Rev.1.00 Page ii of ii 2011.02.23
-
目次
1. 概要 ...............................................................................................................................................................1 1.1 コンパイラの構成 ...................................................................................................................................................1
1.1.1 コンパイルドライバへの入力........................................................................................................................2 1.1.2 コンパイルドライバの出力............................................................................................................................2 1.1.3 ccrx .....................................................................................................................................................................2 1.1.4 asrx .....................................................................................................................................................................2 1.1.5 optlnk..................................................................................................................................................................2 1.1.6 lbgrx....................................................................................................................................................................2
1.2 オプション指定規則 ...............................................................................................................................................3 1.2.1 コンパイラ(ccrx) ..............................................................................................................................................3 1.2.2 アセンブラ(asrx) ..............................................................................................................................................3 1.2.3 最適化リンケージエディタ(optlnk)...............................................................................................................3 1.2.4 ライブラリジェネレータ(lbgrx) ....................................................................................................................4
1.3 コマンドの記述例 ...................................................................................................................................................4 1.3.1 コンパイル、アセンブル、リンクを 1コマンドで実施する場合 ...........................................................4 1.3.2 コンパイルとアセンブルを 1コマンドで実施する場合 ...........................................................................5 1.3.3 コンパイル、アセンブル、リンクを各々別コマンドで実施する場合 ...................................................5 1.3.4 アセンブルとリンクを 1コマンドで実施する場合 ...................................................................................6 1.3.5 アセンブルとリンクを別コマンドで実施する場合 ...................................................................................6
2. C/C++コンパイラオプション.........................................................................................................................7 2.1 ソースオプション ...................................................................................................................................................7 2.2 オブジェクトオプション .....................................................................................................................................16 2.3 リストオプション .................................................................................................................................................24 2.4 最適化オプション .................................................................................................................................................26 2.5 マイコンオプション .............................................................................................................................................45 2.6 アセンブル、リンクオプション.........................................................................................................................62 2.7 その他のオプション .............................................................................................................................................65
3. ライブラリジェネレータオプション ...........................................................................................................69 3.1 ライブラリオプション .........................................................................................................................................69 3.2 無効となるコンパイラオプション.....................................................................................................................74
-
4. アセンブラオプション .................................................................................................................................77 4.1 ソースオプション .................................................................................................................................................77 4.2 オブジェクトオプション .....................................................................................................................................80 4.3 リストオプション .................................................................................................................................................82 4.4 マイコンオプション .............................................................................................................................................84 4.5 その他のオプション .............................................................................................................................................90
5. 最適化リンケージエディタ操作方法 ...........................................................................................................93 5.1 オプション指定規則 .............................................................................................................................................93
5.1.1 コマンドラインの形式..................................................................................................................................93 5.1.2 サブコマンドファイルの形式......................................................................................................................93
5.2 オプション解説 .....................................................................................................................................................94 5.2.1 入力オプション ..............................................................................................................................................94 5.2.2 出力オプション ..............................................................................................................................................98 5.2.3 リストオプション........................................................................................................................................117 5.2.4 最適化オプション........................................................................................................................................120 5.2.5 セクションオプション................................................................................................................................127 5.2.6 ベリファイオプション................................................................................................................................130 5.2.7 その他オプション........................................................................................................................................134 5.2.8 サブコマンドファイルオプション............................................................................................................142 5.2.9 マイコンオプション....................................................................................................................................143 5.2.10 残りのオプション........................................................................................................................................144
6. 環境変数.....................................................................................................................................................147 6.1 環境変数一覧 .......................................................................................................................................................147 6.2 プリデファインドマクロ ...................................................................................................................................148
7. ファイル仕様 .............................................................................................................................................151 7.1 ファイル名の付け方 ...........................................................................................................................................151 7.2 ソースリストの参照方法 ...................................................................................................................................152
7.2.1 ソースリストの構成....................................................................................................................................152 7.2.2 ソース情報 ....................................................................................................................................................152 7.2.3 オブジェクト情報........................................................................................................................................152 7.2.4 統計情報 ........................................................................................................................................................155 7.2.5 コンパイラのコマンド指定情報................................................................................................................155 7.2.6 アセンブラのコマンド指定情報................................................................................................................156
7.3 リンケージリストの参照方法...........................................................................................................................157 7.3.1 リンケージリストの構成............................................................................................................................157 7.3.2 オプション情報 ............................................................................................................................................158 7.3.3 エラー情報 ....................................................................................................................................................158
-
7.3.4 リンケージマップ情報................................................................................................................................159 7.3.5 シンボル情報 ................................................................................................................................................160 7.3.6 シンボル削除最適化情報............................................................................................................................161 7.3.7 クロスリファレンス情報............................................................................................................................162 7.3.8 合計セクションサイズ................................................................................................................................163 7.3.9 ベクタ情報 ....................................................................................................................................................163 7.3.10 CRC情報 .......................................................................................................................................................164
7.4 ライブラリリストの参照方法...........................................................................................................................165 7.4.1 ライブラリリストの構成............................................................................................................................165 7.4.2 オプション情報 ............................................................................................................................................165 7.4.3 エラー情報 ....................................................................................................................................................166 7.4.4 ライブラリ情報 ............................................................................................................................................166 7.4.5 ライブラリ内モジュール、セクション、シンボル情報 .......................................................................167
8. プログラミング ..........................................................................................................................................169 8.1 プログラムの構造 ...............................................................................................................................................169
8.1.1 セクション ....................................................................................................................................................169 8.1.2 C/C++プログラムのセクション.................................................................................................................170 8.1.3 アセンブリプログラムのセクション .......................................................................................................173 8.1.4 セクションの結合........................................................................................................................................174
8.2 関数呼び出しインタフェース...........................................................................................................................177 8.2.1 スタックに関する規則................................................................................................................................177 8.2.2 レジスタに関する規則................................................................................................................................178 8.2.3 引数の設定、参照に関する規則................................................................................................................180 8.2.4 リターン値の設定、参照に関する規則 ...................................................................................................182 8.2.5 引数割り付けの具体例................................................................................................................................184 8.2.6 外部名の相互参照方法................................................................................................................................187
8.3 スタートアッププログラムの作成...................................................................................................................189 8.3.1 固定ベクタテーブルの設定........................................................................................................................190 8.3.2 初期設定 ........................................................................................................................................................190 8.3.3 初期設定ルーチンの記述例........................................................................................................................194 8.3.4 低水準インタフェースルーチン................................................................................................................196 8.3.5 終了処理ルーチン........................................................................................................................................209 8.3.6 統合開発環境で生成されるスタートアッププログラム .......................................................................212
8.4 PIC/PID機能の利用 .............................................................................................................................................221 8.4.1 用語の定義 ....................................................................................................................................................221 8.4.2 各オプションの機能....................................................................................................................................221 8.4.3 アプリケーションに関する制限事項 .......................................................................................................222 8.4.4 PIC/PID機能で必要なシステム依存処理.................................................................................................223 8.4.5 コード生成オプションの組み合わせ .......................................................................................................223
-
8.4.6 マスタのスタートアップ............................................................................................................................225 8.4.7 アプリケーションのスタートアップ .......................................................................................................226
9. C/C++言語仕様 ..........................................................................................................................................231 9.1 言語仕様 ...............................................................................................................................................................231
9.1.1 コンパイラの仕様........................................................................................................................................231 9.1.2 データの内部表現........................................................................................................................................237 9.1.3 浮動小数点型の仕様....................................................................................................................................250 9.1.4 演算子の評価順序........................................................................................................................................257 9.1.5 準拠する言語仕様........................................................................................................................................257
9.2 拡張機能 ...............................................................................................................................................................258 9.2.1 #pragma、キーワード..................................................................................................................................258 9.2.2 組み込み関数 ................................................................................................................................................280 9.2.3 セクションアドレス演算子........................................................................................................................309
9.3 C/C++ライブラリ ................................................................................................................................................311 9.3.1 標準 Cライブラリ .......................................................................................................................................311 9.3.2 EC++クラスライブラリ ..............................................................................................................................536 9.3.3 リエントラントライブラリ........................................................................................................................609 9.3.4 未サポートライブラリ................................................................................................................................612
10. アセンブラの言語仕様 ...............................................................................................................................613 10.1 プログラムの記述方法 .......................................................................................................................................613
10.1.1 予約語 ............................................................................................................................................................613 10.1.2 名前 ................................................................................................................................................................613 10.1.3 ニーモニック記述行の構成........................................................................................................................614 10.1.4 ラベルの記述方法........................................................................................................................................614 10.1.5 オペレーション部の記述方法....................................................................................................................615 10.1.6 オペランド部の記述方法............................................................................................................................617 10.1.7 コメントの記述方法....................................................................................................................................627
10.2 命令の最適選択 ...................................................................................................................................................628 10.2.1 命令フォーマットの最適選択....................................................................................................................628 10.2.2 分岐命令の最適選択....................................................................................................................................636
10.3 アセンブラ制御命令の記述方法.......................................................................................................................638 10.3.1 アドレス制御命令........................................................................................................................................638 10.3.2 アセンブラ制御命令....................................................................................................................................652 10.3.3 リンク制御命令 ............................................................................................................................................654 10.3.4 アセンブルリスト制御命令........................................................................................................................658 10.3.5 条件アセンブル制御命令............................................................................................................................659 10.3.6 拡張機能制御命令........................................................................................................................................661 10.3.7 マクロ制御命令 ............................................................................................................................................668
-
10.3.8 コンパイラ専用制御命令............................................................................................................................680
11. コンパイラのエラーメッセージ.................................................................................................................681 11.1 エラー形式とエラーレベル ...............................................................................................................................681 11.2 メッセージ一覧 ...................................................................................................................................................681 11.3 C標準ライブラリ関数のエラーメッセージ ....................................................................................................773
12. アセンブラのエラーメッセージ.................................................................................................................777 12.1 エラー形式とエラーレベル ...............................................................................................................................777 12.2 メッセージ一覧 ...................................................................................................................................................777
13. 最適化リンケージエディタのエラーメッセージ .......................................................................................791 13.1 エラー形式とエラーレベル ...............................................................................................................................791 13.2 エラーの返値 .......................................................................................................................................................791 13.3 メッセージ一覧 ...................................................................................................................................................792
14. 翻訳限界.....................................................................................................................................................813 14.1 コンパイラの翻訳限界 .......................................................................................................................................813 14.2 アセンブラの翻訳限界 .......................................................................................................................................814
15. ご利用上の注意事項...................................................................................................................................815 15.1 コーディング上の注意事項 ...............................................................................................................................815 15.2 CプログラムをC++コンパイラでコンパイルするときの注意事項 ............................................................821 15.3 オプションに関する注意事項...........................................................................................................................821 15.4 旧バージョン・旧リビジョンとの互換性.......................................................................................................822
15.4.1 V.1.00との互換性 ........................................................................................................................................822
16. 付録 ...........................................................................................................................................................825 16.1 モトローラS形式、インテルHEX形式ファイル ............................................................................................825
16.1.1 モトローラ S形式ファイル .......................................................................................................................825 16.1.2 インテル HEX形式ファイル .....................................................................................................................827
16.2 ASCIIコード一覧表 ............................................................................................................................................829
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 1. 概要
1. 概要
1.1 コンパイラの構成 RXファミリ用 C/C++コンパイラの構成を示します。
rxc
asrx
デバッガ
C言語ソースファイル
(.c)
C++言語ソースファイル
(.cpp)
リロケータブルファイル (.obj)ファイル (.obj)
ユーザライブラリ
標準ライブラリ(.lib)
lbgrx
ロードモジュール(.abs等)
アセンブリ言語ファイル
(.src, .s) アセンブリ言語ファイル
(.src, .s)
ccrx コンパイル*ドライバ
コンパイラ
アセンブラ
ライブラリジェネレータ
最適化
リンケージエディタ
optlnk
【注】 * コンパイルドライバは、入力ファイルがアセンブリ言語ファイル(.src または .s)の場合、アセンブラを呼び出し、それ以外のファイルの場合コンパイラを呼び出します。
アセンブリ言語ファイル
(.src, .s)
プリプロセッサ展開
出力ファイル (.p)
リロケータブル
図 1.1 コンパイラの構成
R20UT0570JJ0100 Rev.1.00 Page 1 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 1. 概要
1.1.1 コンパイルドライバへの入力
ASCII文字と、シフト JIS文字(オプションにより、EUC、Latin1または UTF-8に変更可能)からなる、ANSI
準拠 C言語(C89/C99(可変長配列は除く))、ANSI準拠 C++言語、EC++言語で記述されたソースファイル(.c, .cpp)、
およびアセンブリ言語ファイル(.src, .s)です。
1.1.2 コンパイルドライバの出力
プリプロセッサ展開出力ファイル(.p)、アセンブリ言語ファイル(.src, .s)、リロケータブルファイル、
ロードモジュールを出力します。
1.1.3 ccrx
ccrxは、コンパイルドライバの実行ファイルです。
ccrxは、オプションの指定によりコンパイルからリンクまでの処理を一括して行うことができます。また、ccrx
の起動オプション"-asmcmd "、" -lnkcmd "、" -asmopt "、" -lnkopt "に続けてアセンブラ asrx、最適化リンケージエ
ディタ optlnkのオプションを指定することができます。
1.1.4 asrx
asrxは、アセンブラの実行ファイルです。
アセンブリ言語ファイル(.src, .s)を、リロケータブルファイルに変換します。
1.1.5 optlnk
optlnkは、最適化リンケージエディタの実行ファイルです。
複数のリロケータブルファイル(.obj)およびライブラリファイル(.lib)を、ロードモジュールファイル(.abs等)また
はライブラリファイル(.lib)に変換します。
1.1.6 lbgrx
lbgrxは、ライブラリジェネレータの実行ファイルです。
ユーザが指定したオプションに応じた標準ライブラリファイル(.lib)を生成します。
R20UT0570JJ0100 Rev.1.00 Page 2 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 1. 概要
1.2 オプション指定規則 以下に本コンパイラパッケージで利用できる起動コマンドを説明します。
なお、これらのコマンドを利用する前に、6章「環境変数」を参照のうえ、必要な環境変数が設定されているか
を確認してください。
1.2.1 コンパイラ(ccrx)
ccrxはコンパイルドライバの起動コマンドです。
本コマンド起動により、コンパイル、アセンブル、リンクを行うことができます。
入力ファイルの拡張子が「.s」「.src」「.S」「.SRC」のいずれかである場合、コンパイラはそのファイルをア
センブリ言語ファイル(.src, .s)と解釈して、アセンブラを起動します。
これら以外の拡張子のファイルは、C/C++言語ソースファイル(.c, .cpp)としてコンパイルします。 【コマンド記述形式】
ccrx [△ … ][△[△ …] …]
:-[=[=]][,…]
1.2.2 アセンブラ(asrx)
asrxは、アセンブラの起動コマンドです。 【コマンド記述形式】
asrx [△ … ][△[△ …] …]
:-[=][,…]
1.2.3 最適化リンケージエディタ(optlnk)
optlnkは、最適化リンケージエディタの起動コマンドです。
リンク処理だけではなく、以下に挙げる機能も含んでいます。
• リロケータブルファイル結合時の最適化
• ライブラリファイルの作成や編集
• モトローラS形式ファイル、インテルHEX形式ファイル、およびバイナリファイルへのコンバート
【コマンド記述形式】
optlnk [△ … ][△[△ …] …]
:-[=][,…]
R20UT0570JJ0100 Rev.1.00 Page 3 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 1. 概要
1.2.4 ライブラリジェネレータ(lbgrx)
lbgrxは、ライブラリジェネレータの起動コマンドです。 【コマンド記述形式】
lbgrx [△ … ]
:-[=][,…]
1.3 コマンドの記述例
1.3.1 コンパイル、アセンブル、リンクを 1コマンドで実施する場合
以下の手順全てを 1コマンドで実施します。
• C/C++言語ソースファイル(tp1.cとtp2.c)をccrxでコンパイルする
• コンパイル後、asrxでアセンブルする
• アセンブル後、optlnkでリンクして、アブソリュートファイル(tp.abs)を作成する 【コマンド記述】
ccrx -cpu=rx600 -output=abs=tp.abs tp1.c tp2.c
【備考】
• outputオプションの出力形式指定を"-output=sty"に変えると、リンク後のファイルをモトローラS形式ファイ
ルとして生成します。
• アブソリュートファイル生成過程で生じる中間ファイル(アセンブリ言語ファイルや、リロケータブルファイ
ル)は残りません。生成されるファイルは、outputオプションで指示した形式のファイルのみです。
• ccrxに対して、アセンブラ、最適化リンケージエディタにのみ有効なアセンブルオプションやリンクオプショ
ンを指示したい場合には、-asmcmdオプション、-lnkcmdオプション、-asmoptオプション、-lnkoptオプション
を使用して指示してください。
• リンク対象のオブジェクトは、0番地から配置します。セクションの並び順は保証されません。配置アドレス
やセクションの配置順序を指示したい場合には、-lnkcmdオプション、-lnkoptオプションを使用して最適化リ
ンケージエディタへオプション指示してください。
R20UT0570JJ0100 Rev.1.00 Page 4 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 1. 概要
1.3.2 コンパイルとアセンブルを 1コマンドで実施する場合
以下の手順を 1コマンドで実施し、別コマンドでリンカを起動して、tp.absを作成します。
• C/C++言語ソースファイル(tp1.cとtp2.c)をccrxでコンパイルする
• コンパイル後、asrxでアセンブルして、リロケータブルファイル(tp1.obj, tp2.obj)を作成する 【コマンド記述】
ccrx -cpu=rx600 -output=obj tp1.c tp2.c
optlnk -form=abs -output=tp.abs -subcommand=cmd.sub tp1.obj tp2.obj
【備考】
• ccrxに対して"-output=obj"オプションを指示すると、ccrxはリロケータブルファイルを生成します。
• リロケータブルファイル名を変更する場合は、ccrxへC/C++言語ソースファイルをひとつずつ入力する必要が
あります。
• optlnkのformオプションを、"-form=sty"に変えると、リンク後のファイルをモトローラS形式ファイルとして
生成します。
1.3.3 コンパイル、アセンブル、リンクを各々別コマンドで実施する場合
以下の個々の手順を、それぞれ 1コマンドで実施します。
• C/C++言語ソースファイル(tp1.cとtp2.c)をccrxでコンパイルして、アセンブリ言語ファイル (tp1.src, tp2.src)を
作成する
• アセンブリ言語ファイル(tp1.src, tp2.src)をasrxでアセンブルして、リロケータブルファイル(tp1.obj, tp2.obj)を
生成する
• リロケータブルファイル(tp1.obj, tp2.obj)をoptlnkでリンクして、アブソリュートファイル(tp.abs)を作成する 【コマンド記述】
ccrx -cpu=rx600 -output=src tp1.c tp2.c
asrx tp1.src tp2.src
optlnk -form=abs -output=tp.abs -subcommand=cmd.sub tp1.obj tp2.obj
【備考】
• ccrxに対して"-output=src"オプションを指示すると、ccrxはアセンブリ言語ファイルを生成します。
R20UT0570JJ0100 Rev.1.00 Page 5 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 1. 概要
R20UT0570JJ0100 Rev.1.00 Page 6 of 830 2011.02.23
1.3.4 アセンブルとリンクを 1コマンドで実施する場合
以下の手順全てを 1コマンドで実施します。
• アセンブリ言語ファイル(tp1.src, tp2.src)をasrxでアセンブルする
• アセンブル後、optlnkでリンクして、アブソリュートファイル(tp.abs)を作成する 【コマンド記述】
ccrx -cpu=rx600 -output=abs=tp.abs tp1.src tp2.src
【備考】
• リンク対象のオブジェクトは、0番地から配置します。セクションの並び順は保証されません。配置アドレス
やセクションの配置順序を指示したい場合には、-lnkcmdオプション、-lnkoptオプションを使用して最適化リ
ンケージエディタへオプション指示してください。
1.3.5 アセンブルとリンクを別コマンドで実施する場合
以下の個々の手順を、それぞれ 1コマンドで実施します。
• アセンブリ言語ファイル(tp1.src, tp2.src)をasrxでアセンブルして、リロケータブルファイル(tp1.obj, tp2.obj)を
生成する
• リロケータブルファイル(tp1.obj, tp2.obj)をoptlnkでリンクして、アブソリュートファイル(tp.abs)を作成する 【コマンド記述 1】
ccrx -cpu=rx600 -output=obj tp1.src tp2.src
optlnk -form=abs -output=tp.abs -subcommand=cmd.sub tp1.obj tp2.obj
【コマンド記述 2】
asrx -cpu=rx600 tp1.src tp2.src
optlnk -form=abs -output=tp.abs -subcommand=cmd.sub tp1.obj tp2.obj
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
2. C/C++コンパイラオプション
2.1 ソースオプション 表 2.1 ソースオプション一覧
No. オプション ダイアログメニュー 内容
1 lang = { c
| cpp
| ecpp
| c99 }
コンパイラ
[オプション項目: ]
[ソースファイル]
[言語 :]
[C :]
[C(C89)]
[C99]
[C++ :]
[C++]
[EC++]
C(C89)言語ソースファイルとしてコンパイル
C++言語ソースファイルとしてコンパイル
EC++言語ソースファイルとしてコンパイル
C(C99)言語ソースファイルとしてコンパイル
2 include = [,…] コンパイラ
[オプション項目 :]
[インクルードファイル
ディレクトリ]
インクルードファイルの取り込み先パス名を
指定
3 preinclude = [,
…]
コンパイラ
[オプション項目 :]
[デフォルトインクルード
ファイル]
指定したファイルをコンパイル単位の先頭に
インクルード
4 define = [,…]
:[=]
コンパイラ
[オプション項目 :]
[マクロ定義]
をとして定義
5 undefine = [,…]
:
コンパイラ
[オプション項目 :]
[マクロ定義の無効化]
のプリデファインドマクロを無効
化
6 message
nomessage[=
[-][,…]]
コンパイラ
[オプション項目 :]
[インフォメーション
メッセージ]
[インフォメーションレベル
メッセージ抑止]
インフォメーションメッセージ出力有効
インフォメーションメッセージ出力無効
R20UT0570JJ0100 Rev.1.00 Page 7 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
No. オプション ダイアログメニュー 内容
7 change_message
=[,…]
:
[=[-m],[…]]
:{Information | warning
| error }
コンパイラ
[ユーザ指定オプション :]
コンパイラ出力メッセージのレベル変更
8 file_inline_path=[,…] コンパイラ
[オプション項目 :]
[ファイル間インライン
展開ディレクトリ]
ファイル間インライン展開ファイル取り込み
先パス名を指定
9 comment = { nest
| nonest }
コンパイラ
[オプション項目: ]
[ソースファイル]
[コメントの(/* */)のネストを
許す]
コメント(/* */)のネストを許す
コメント(/* */)のネストを許さない
10 check={ nc | ch38 | shc } コンパイラ
[オプション項目: ]
[ソースファイル]
[互換性チェック :]
[なし]
[NC コンパイラ]
[H8 コンパイラ]
[SH コンパイラ]
既存プログラムとの互換性をチェックする
R20UT0570JJ0100 Rev.1.00 Page 8 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
lang
書 式 lang= { c | cpp | ecpp | c99 }
説 明 ソースファイルの言語を指定します。
lang=cオプション指定時は、C (C89)言語ソースファイルとしてコンパイルします。
lang=cppオプション指定時は、C++言語ソースファイルとしてコンパイルします。
lang=ecppオプション指定時は、Embedded C++言語ソースファイルとしてコンパイルします。
lang=c99オプション指定時は、C (C99)言語ソースファイルとしてコンパイルします。
本オプションを省略した場合は、拡張子が cpp、cc、cpのときには C++言語ソースファイルとしてコンパイルし、それ以外の場合は C(C89)言語ソースファイルとしてコンパイルします。ただし、拡張子が src、sの場合は本オプション指定に関わらずアセンブリ言語ファイルとして扱います。
備 考 Embedded C++言語仕様では、catch、const_cast、dynamic_cast、explicit、mutable、namespace、
reinterpret_cast、static_cast、template、throw、try、typeid、typename、using、多重継承、仮想基底クラスをサポートしていません。これらを記述した場合、エラーメッセージを出力します。EC++ライブラリを使用する場合は、必ず lang=ecppオプションを指定してください。
include
書 式 include = [,…]
説 明 インクルードファイルの存在するパス名を指定します。
パス名が複数ある場合にはカンマ(,)で区切って指定することができます。
システムインクルードファイルの検索は、includeオプション指定フォルダ、環境変数 INC_RX指定フォルダ、環境変数 BIN_RX指定フォルダの順序で行います。
ユーザインクルードファイルの検索は、コンパイル対象ソースファイルのあるフォルダ、includeオプション指定フォルダ、環境変数 INC_RX指定フォルダ、環境変数 BIN_RX指定フォルダの順序で行います。
備 考 本オプションを複数回指定した場合、指定した全てのパス名が有効になります。
R20UT0570JJ0100 Rev.1.00 Page 9 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
preinclude
書 式 preinclude = [,…]
説 明 指定したファイルの内容をコンパイル単位の先頭に取り込みます。ファイル名が複数ある場
合にはカンマ(,)で区切って指定することができます。 includeオプション指定フォルダが複数ある場合、左に指定したものから順に検索を行います。
備 考 本オプションを複数回指定した場合、指定した全てのファイルが取り込み対象となります。
define
書 式 define = [,…]
: [= ]
説 明 ソースファイル内で記述する#defineと同等の効果を得ます。
=と記述することでをマクロ名として定義できます。
サブオプションにを単独で指定した場合は、そのマクロ名が定義されたものと仮定します。には、名前または整定数を記述することができます。
備 考 本オプションで指定したマクロ名がソース中で#defineにより既に定義されている場合、
#defineを優先します。
本オプションを複数回指定した場合、指定した全てのマクロ名が有効となります。
undefine
書 式 undefine = [,…]
:
説 明 <マクロ名>のプリデファインドマクロを無効化します。
マクロ名が複数ある場合にはカンマ(,)で区切って指定することができます。
備 考 指定可能なプリデファインドマクロについては、「6.2 プリデファインドマクロ」を参照く
ださい。
本オプションを複数回指定した場合、指定した全てのマクロ名が未定義となります。
R20UT0570JJ0100 Rev.1.00 Page 10 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
message, nomessage
書 式 message
nomessage [= [- ][,…]
説 明 インフォメーションレベルメッセージの出力有無を指定します。
message オプションを指定した場合、インフォメーションレベルメッセージを出力します。
nomessage オプションを指定した場合、インフォメーションレベルメッセージの出力を抑止します。また、サブオプションでエラー番号を指定すると、指定したインフォメーションレベルメッセージの出力だけを抑止します。エラー番号が複数ある場合にはカンマ(,)で区切って指定することができます。 -のようにハイフン(-)で抑止するエラー番号の範囲を指定することもできます。
本オプションの省略時解釈は、nomessageです。
備 考 本オプションを指定してアセンブラや最適化リンケージエディタのメッセージ出力を制御す
ることはできません。最適化リンケージエディタのメッセージについては、lnkcmdオプションにより、最適化リンケージエディタの messageオプションおよび nomessageオプションを指定することで出力制御が可能です。
nomessageオプションを複数回指定した場合、指定した全てのエラー番号について抑止します。
R20UT0570JJ0100 Rev.1.00 Page 11 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
change_message
書 式 change_message = [,…]
: [=[- ][,…]]
: { information | warning | error }
説 明 インフォメーション、ウォーニングのメッセージレベルを変更します。
エラー番号が複数ある場合にはカンマ(,)で区切って指定することができます。
例 change_message=information=エラー番号
ウォーニングレベルの指定エラー番号のみインフォメーションレベルに変更します。
change_message=warning=エラー番号
インフォメーションレベルの指定エラー番号のみウォーニングレベルに変更します。
change_message=error=エラー番号
インフォメーション、ウォーニングレベルの指定エラー番号のみエラーレベルに変更します。
change_message=information
全てのウォーニングメッセージをインフォメーションレベルに変更します。
change_message=warning
全てのインフォメーションメッセージをウォーニングレベルに変更します。
change_message=error
全てのインフォメーション、ウォーニングメッセージをエラーレベルに変更します。
備 考 インフォメーションレベルに変更したメッセージについては、nomessageオプション指定によ
り出力を抑止できます。
本オプションを指定してアセンブラや最適化リンケージエディタのメッセージ出力を制御することはできません。最適化リンケージエディタのメッセージについては、lnkcmdオプションにより、最適化リンケージエディタの messageオプションおよび nomessageオプションを指定することで出力制御が可能です。
本オプションを複数回指定した場合、指定した全てのエラー番号について有効になります。
エラーメッセージは本オプションのレベル制御対象外です。
R20UT0570JJ0100 Rev.1.00 Page 12 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
file_inline_path
書 式 file_inline_path= [,…]
説 明 ファイル間インライン展開対象となるファイルの存在するパス名を指定します。
パス名が複数ある場合にはカンマ(,)で区切って指定することができます。ファイル間インライン展開対象ファイルの検索は、file_inline_path オプション指定フォルダ、カレントフォルダの順序で行います。
備 考 本オプションを複数回指定した場合、指定した全てのパス名が有効となります。
comment
書 式 comment = { nest | nonest }
説 明 comment=nestを指定した場合、ネストしたコメントの記述を可能にします。
comment=nonestを指定した場合、ネストしたコメントを記述するとエラーになります。
本オプションの省略時解釈は、comment=nonestです。
例 /* This is an example of /* nested */ comment */
↑ [1] comment=nestを指定した場合は全てコメントと解釈しますが、comment=nonestを指定した場合は[1]でコメントが終わっていると解釈します。
R20UT0570JJ0100 Rev.1.00 Page 13 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
check
書 式 check = { nc | ch38 | shc}
説 明 R8C, M16Cファミリ用 Cコンパイラ、H8, H8S, H8SXファミリ用 C/C++コンパイラおよび
SuperHファミリ用 C/C++コンパイラ向けにコーディングした C/C++言語ソースファイルを本コンパイラへ流用する際、互換性に影響するオプション指定、ソース記述をチェックすることができます。
check=ncでは、R8C,M16Cファミリ用 Cコンパイラとの互換性をチェックします。 チェックされるオプションや型には、次のようなものがあります。
• オプション:signed_char, signed_bitfield, bit_order=left, endian=big, dbl_size=4
• inline、enum型、#pragma BITADDRESS、#pragma ROM、 #pragma PARAMETER、__asm()
• -int_to_shortの指定がないときに、signed short範囲外の定数をint,signed int型へ代入、あるいはunsigned short範囲外の定数をint型またはunsigned int型へ代入
• signed short, unsigned short共範囲外の定数をlong, long long型へ代入
• signed short範囲外の定数とint, short, char型(char型は符号付き除く)との比較式
check=ch38では、H8,H8S,H8Sファミリ用 C/C++コンパイラとの互換性をチェックします。 チェックされるオプションや型には、次のようなものがあります。
• オプション:unsigned_char, unsigned_bitfield, bit_order=right, endian=little, dbl_size=4
• __asm、#pragma unpack
• signed longの最大値より大きな定数との比較式
• -int_to_shortの指定がないときに、signed short範囲外の定数をint,signed int型へ代入、あるいはunsigned short範囲外の定数をint型またはunsigned int型へ代入
• signed short, unsigned short共範囲外の定数をlong, long long型へ代入
• signed short範囲外の定数とint, short, char型(char型は符号付き除く)との比較式
check=shcでは、SuperHファミリ用 C/C++コンパイラとの互換性をチェックします。 チェックされるオプションや型には、次のようなものがあります。
• オプション:unsigned_char, unsigned_bitfield, bit_order=right, endian=little, dbl_size=4 , round=nearest
• #pragma unpack
• volatile修飾した変数
表示された項目により、それぞれ次の項目を確認ください。
オプション:言語仕様で規定されていない実装依存の内容がコンパイラ間で異なっています。メッセージで出力されたオプションの選択を確認してください。
拡張仕様:プログラムの動作に影響を及ぼす可能性がある拡張仕様です。メッセージで出力された拡張仕様の記述を確認してください。
R20UT0570JJ0100 Rev.1.00 Page 14 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
備 考 dbl_size=4が有効な時に、R8C, M16Cファミリ用 Cコンパイラ、H8, H8S, H8SXファミリ用C/C++コンパイラおよび SuperHファミリ用C/C++コンパイラと浮動小数点関連の変換/ライブラリの計算結果が異なる場合があります。dbl_size=4は、本コンパイラでは、double型およびlong double型を 32ビットにしますが、各種R8C, M16Cファミリ用Cコンパイラ(fdouble_32)、H8, H8S, H8SXファミリ用 C/C++コンパイラ(double=float) および SuperHファミリ用 C/C++コンパイラ(double=float)では、double型のみ 32ビットにします。
unsigned int型と long型をオペランドとする二項演算(加減乗除や比較など)に対する結果が、SuperHファミリ用 C/C++コンパイラと異なる場合があります。本コンパイラではオペランドをunsigned long型に変換してから演算しますが、SuperHファミリ用C/C++コンパイラ(ただし、strict_ansiを指定しないとき)では、signed long long型に変換してから演算します。
volatile修飾した変数に対し、読み出しや書き込みのサイズが、SuperHファミリ用 C/C++コンパイラと異なる場合があります。volatile修飾したビットフィールドは、本コンパイラでは宣言型より小さなサイズでアクセスすることがありますが、SuperHファミリ用 C/C++コンパイラでは宣言型のサイズ通りにアクセスします。
構造体およびビットフィールドメンバの割り付けについては、本オプションでメッセージを出力しません。割り付けを意識した宣言をしている場合には、「9.1.2 データの内部表現」を参照してください。
R8C, M16Cファミリ用 Cコンパイラ(fextend_to_intを指定しない)では、条件式で汎整数拡張を行わずに評価したコードを生成するので、本コンパイラの生成コードと動作が異なる場合があります。
R20UT0570JJ0100 Rev.1.00 Page 15 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
2.2 オブジェクトオプション 表 2.2 オブジェクトオプション一覧
No. オプション ダイアログメニュー 内容
1 output
= {prep
| src
| obj
| abs
| hex
| sty} [= ファイル名]
コンパイラ
[出力ファイル形式 :]
[機械語プログラム]
[アセンブリプログラム]
[プリプロセッサ展開プログラム]
出力ファイル形式を指定
プリプロセッサ展開後のソースファイル
を出力
アセンブリ言語ファイルを出力
リロケータブルファイルを出力
アブソリュートファイルを出力
インテル HEX形式ファイルを出力
モトローラ S形式ファイルを出力
2 noline コンパイラ
[出力ファイル形式 :]
[プリプロセッサ展開プログラム
(#line出力抑止)]
プリプロセッサ展開時に#lineの出力を抑
止
3 debug
nodebug
コンパイラ
[デバッグ情報出力]
デバッグ情報出力あり
デバッグ情報出力なし
4 section = [,…]
:
{P =
| C =
| D =
| B =
| L =
| W = }
コンパイラ
[詳細…]
[セクション :]
[プログラム領域 (P)]
[定数領域 (C)]
[初期化データ領域(D)]
[未初期化データ領域(B)]
[リテラル領域(L)]
[switch文分岐テーブル領域(W)]
セクション名変更
プログラム領域のセクション名
定数領域のセクション名
初期化データ領域のセクション名
未初期化データ領域のセクション名
リテラル領域のセクション名
switch文分岐テーブル領域のセクション名
R20UT0570JJ0100 Rev.1.00 Page 16 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
No. オプション ダイアログメニュー 内容
5 stuff
nostuff[= { B
| D
| C
| W } [,…]]
コンパイラ
[詳細…]
[変数の配置 :]
[未初期化データ領域(B)]
[初期化データ領域(D)]
[定数領域(C)]
[switch文分岐テーブル領域(W)]
変数のアライメントに応じたセクション
に配置
初期値なし変数をアライメント 4のセク
ションに配置
初期値あり変数をアライメント 4のセク
ションに配置
const修飾変数をアライメント 4のセク
ションに配置
switch文分岐テーブルをアライメント 4の
セクションに配置
6 -instalign4[=]
-instalign8[=]
-noinstalign
:
{ loop |
inmostloop }
コンパイラ
[分岐先の命令実行向け整合:]
[4バイト整合]
[8バイト整合]
[なし]
[指定なし]
[loop]
[inmostloop]
分岐先を 4バイトで命令実行向け整合する
分岐先を 8バイトで命令実行向け整合する
分岐先を命令実行向け整合をしない
ループの先頭
最内周ループの先頭
R20UT0570JJ0100 Rev.1.00 Page 17 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
output
書 式 output = [=]
: { prep | src | obj | abs | hex | sty }
説 明 出力ファイルの形式を指定します。
サブオプションと出力ファイルの一覧を以下に示します。
を指定しない場合は、先頭に入力したソースファイル名に以下表の拡張子をつけたファイルを作成します。
本オプションの省略時解釈は、output=objです。
表 2.3 サブオプション出力形式
サブオプション 出力形式 ファイル名指定省略時の拡張子
prep プリプロセッサ展開後のソースファイル C(C89, C99)言語ソースファイル:p
C++言語ソースファイル:pp
src アセンブリ言語ファイル src
obj リロケータブルファイル obj
abs アブソリュートファイル abs
hex インテル HEX形式ファイル hex
sty モトローラ S形式ファイル mot
【注】 リロケータブルファイルは、アセンブラの出力ファイルです。
アブソリュートファイル、インテル HEX形式ファイル、およびモトローラ S形式ファイルは、最適化リンケージエディ
タの出力ファイルです。 備 考 指定した形式のファイルを作成するための中間ファイルは、フォルダ指定があればそのフォ
ルダに、フォルダ指定がなければカレントフォルダに作成します。
noline
書 式 noline
説 明 プリプロセッサ展開時に#line出力を抑止します。
備 考 本オプションは output=prepオプションの指定が無い場合は無効となります。
R20UT0570JJ0100 Rev.1.00 Page 18 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
debug, nodebug
書 式 debug
nodebug
説 明 debugオプションを指定した場合、Cソースレベルデバッグに必要なデバッグ情報を出力しま
す。debugオプションは、最適化オプションを指定した場合も有効となります。
nodebugオプションを指定した場合、デバッグ情報を出力しません。
本オプションの省略時解釈は、nodebugです。
section
書 式 section = [,…]
: { P = |
C = |
D = |
B = |
L = |
W = }
説 明 セクション名を指定します。
section=P =は、プログラム領域のセクション名を指定します。
section=C =は、定数領域のセクション名を指定します。
section=D =は、初期化データ領域のセクション名を指定します。
section=B =は、未初期化データ領域のセクション名を指定します。
section=L =は、リテラル領域のセクション名を指定します。
section=W=は、switch文分岐テーブル領域のセクション名を指定します。
は、英字、数字、下線(_)、または$の列で、先頭が数字以外のものです。
本オプションの省略時解釈は、section=P=P,C=C,D=D,B=B,L=L,W=Wです。
備 考 プログラムとセクション名の対応についての詳細は、「8.1.2 C/C++プログラム のセクショ
ン」を参照してください。
V.1.00と同様にLセクションを出力せず、リテラル領域をCセクションに出力したい場合は、section=L=Cを選択してください。
R20UT0570JJ0100 Rev.1.00 Page 19 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
Lセクションを Cセクションと同じ名前のセクション名に変更する場合を除き、領域が異なるセクションに同じセクション名を指定できません。
セクション名長の翻訳限界については、「第 14章 翻訳限界」を参照してください。
stuff, nostuff
書 式 stuff
nostuff [= [,…]]
:{ B | D | C | W}
説 明 stuffオプションを指定した場合、全ての変数をアライメント数に応じてアライメント数が 4
のセクション、2のセクション、1のセクションに配置します(表 2.4)。
表 2.4 stuffオプション指定時の、各変数と出力先セクションの関係
変数の種類 変数のアライメント数 変数が所属するセクション
4 C
2 C_2
const修飾変数
1 C_1
4 D
2 D_2
初期値あり変数
1 D_1
4 B
2 B_2
初期値なし変数
1 B_1
4 W
2 W_2
switch文分岐テーブル
1 W_1
nostuffオプションを指定した場合、指定したに属する変数をアライメント数が 4 のセクションに配置します。を省略した場合は、すべてのセクション種別の変数が対象になります。
C、D、B は sectionオプションまたは#pragma sectionで指定したセクション名になります。 Wは sectionオプションで指定したセクション名になります。各セクション内のデータは常に定義順に出力されます。
本オプションの省略時解釈は、stuffです。
R20UT0570JJ0100 Rev.1.00 Page 20 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
例 int a;
char b=0;
const short c=0;
struct {
char x;
char y;
} ST;
<stuffオプション指定時> <nostuffオプション指定時>
.SECTION C_2,ROMDATA,ALIGN=2 .SECTION C,ROMDATA,ALIGN=4
.glb _c .glb _c
_c: _c:
.word 0000H .word 0000H
.SECTION D_1,ROMDATA .SECTION D,ROMDATA,ALIGN=4
.glb _b .glb _b
_b: _b:
.byte 00H .byte 00H
.SECTION B,DATA,ALIGN=4 .SECTION B,DATA,ALIGN=4
.glb _a .glb _a
_a: _a:
.blkl 1 .blkl 1
.SECTION B_1,DATA,ALIGN=2
.glb _ST .glb _ST
_ST _ST
.blkb 2 .blkb 2
備 考 sutffオプションは B,D,CおよびW以外のセクションに対しては無効です。 nostuffオプションに B,D,CおよびW以外のセクションを指定することはできません。
R20UT0570JJ0100 Rev.1.00 Page 21 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
instalign4, instalign8, noinstalign
書 式 instalign4[={loop|inmostloop}]
instalign8[={loop|inmostloop}]
noinstalign
説 明 分岐先の命令実行向け整合を行います。
instalign4を指定した場合は 4バイト、-instalign8を指定した場合は 8バイトでそれぞれ配置アドレスを命令実行向け整合します
本オプションの省略時解釈は、noinstalignです。
命令実行向け整合とは、指定された場所の命令が、アライメント数(4または 8)の倍数であるアドレスをまたいでいる場合(*1)にだけ整合を取るものです。
分岐先の種類は、-instalign4と-instalign8のサブオプションの指定により次の 3種類から選択します(*2)。
指定なし: 関数先頭、switch文の caseおよび defaultラベル
inmostloop: 各最内周ループの先頭、関数先頭、switch文の caseおよび defaultラベル
loop: 各ループの先頭、関数先頭、switch文の caseおよび defaultラベル
本オプションを選択すると、プログラムセクションのアライメント数が 1から 4(instalign4の場合)または 8(instalign8の場合)に変わります。
本オプションは、分岐先命令のアドレス整合することで RX CPUの命令キューを効率よく動作させ、プログラムの実行速度向上を図るものです。 それぞれのオプションは、次の用途を想定した仕様となっております。
instalign8 … 命令キューが 64ビットの CPU(主に RX600シリーズ)で速度向上を図る場合
instalign4 … 命令キューが 32ビットの CPU(主に RX200シリーズ)で速度向上を図る場合
noinstalign … 本機能の効果を期待しない、もしくはコードサイズを重視したい場合
[注]
*1) 命令サイズがアライメント数以下の場合です。命令サイズがアライメント数よりも大きい場合は、またいでいる箇所が 2以上の場合にだけ整合を取ります。
*2) ここに挙げたもの以外の分岐先は、命令実行向け整合の対象ではありません。たとえば、loopを選択した場合はループの先頭は対象ですが、ループ内にあるループを構成しない if文などの分岐先は対象ではありません。
R20UT0570JJ0100 Rev.1.00 Page 22 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
例 <Cソース>
long a;
int f1(int num)
{
return (num+1);
}
void f2(void)
{
a = 0;
}
void f3(void)
{
}
<出力コード>
[-instalign8を指定してコンパイルした場合]
下記は、各関数の先頭を、8バイトで命令実行向け整合させた場合の例です。
8バイトの命令実行向け整合では、対象命令が 8バイトの境界をまたがない限り、配置アドレスを変更しないため、実際に整合がかかるのは関数 f2のアドレスだけです。
.SECTION P,CODE,ALIGN=8
.INSTALIGN 8
_f1: ; 関数 f1。配置アドレス=0000H
ADD #01H,R1 ; 2バイト
RTS ; 1バイト
.INSTALIGN 8
_f2: ; 関数 f2。配置アドレス=0008H ※整合有り
; 0003Hに 6バイト命令が来ると、8バイト境界を
; またぐため、整合が取られる。
MOV.L #_a,R4 ; 6バイト
MOV.L #0,[R4] ; 3バイト
RTS ; 1バイト
.INSTALIGN 8
_f3: ; 関数 f3。配置アドレス=0012H
ADD #01H,R1
RTS
.END
R20UT0570JJ0100 Rev.1.00 Page 23 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
2.3 リストオプション 表 2.5 リストオプション一覧
No. オプション ダイアログメニュー 内容
1 listfile[=]
nolistfile
コンパイラ
[リスト出力]
ソースリストファイル出力あり
ソースリストファイル出力なし
2 show = [,…]
:
{source
| conditionals
| definitions
| expansions }
コンパイラ
[リスト内容 :]
ソースリストの内容の設定
C/C++ソースの出力
条件アセンブルで偽の行の出力
.DEFINE置換前の情報
アセンブラマクロ記述展開行の出力
listfile, nolistfile
書 式 listfile[=]
nolistfile
説 明 ソースリストファイルの出力有無を指定します。
listfileオプションを指定した場合、ソースリストファイルを出力します。<ファイル名>を指定することもできます。
nolistfileオプションを指定した場合、ソースリストファイルは出力しません。
<ファイル名>を指定しない場合は、ソースファイルと同じファイル名で、拡張子が lst のソースリストファイルを作成します。
本オプションの省略時解釈は、nolistfileです。
備 考 本オプションを指定してリンケージリストを出力することはできません。リンケージリスト
を出力するには、lnkcmdオプションにより最適化リンケージエディタの listオプションを指定してください。
コンパイラが出力する情報は、ソースリストに書き込まれます。ソースリストファイルのフォーマットについては、「7.2 ソースリストの参照方法」を参照ください。
R20UT0570JJ0100 Rev.1.00 Page 24 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
show
書 式 show=[,…]
: { source | conditionals | definitions | expansions }
説 明 ソースリストファイルの内容の設定を行います。
サブオプションと指定内容の一覧を以下に示します。
表 2.6 サブオプション指定一覧
サブオプション 内容
source C/C++ソースを出力
conditionals 条件アセンブルで条件が偽となる行も含めて出力
definitions .DEFINEを置き換える以前の情報を出力
expansions アセンブラマクロ記述展開行を出力
備 考 本オプションは listfileオプション指定時のみ有効です。
コンパイラが出力する情報は、ソースリストに書き込まれます。ソースリストファイルのフォーマットについては、「7.2 ソースリストの参照方法」を参照ください。
R20UT0570JJ0100 Rev.1.00 Page 25 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
2.4 最適化オプション 最適化に関わるオプションは、条件により、適用されない場合もあります。当該最適化が適用されたかどうか
は出力コードで確認してください。
表 2.7 最適化オプション一覧
No. オプション ダイアログメニュー 内容
1 optimize = { 0 | 1 | 2 | max } コンパイラ
[最適化レベル :]
最適化レベルの指定
2 goptimize コンパイラ
[モジュール間最適化]
モジュール間最適化用付加情報出
力
3
speed
size
コンパイラ
[最適化方法 :]
[スピード優先 :]
[サイズ優先 :]
最適化選択
実行性能重視の最適化を実施
コードサイズ重視の最適化を実
施
4 loop[=] コンパイラ
[詳細…]
[その他]
[ループ展開 :]
最大展開数= のループ展開
を行う
5 inline[=]
noinline
コンパイラ
[詳細…]
[インライン展開]
[自動インライン展開 :]
自動インライン展開を行う
自動インライン展開を行わない
6 file_inline = [,
…]
コンパイラ
[詳細…]
[インライン展開]
[インライン展開ファイル]
ファイル間インライン展開を行う
7 case = { ifthen
| table
| auto }
コンパイラ
[詳細…]
[その他]
[switch文展開 :]
if_then方式で展開
テーブルジャンプ方式で展開
展開方式をコンパイラが選択
8 volatile
novolatile
コンパイラ
[詳細…]
[外部変数]
[外部変数の volatile化]
外部変数を volatile化する
外部変数を volatile化しない
9 const_copy
noconst_copy
コンパイラ
[詳細…]
[外部変数]
[外部変数の定数伝播 :]
const宣言された外部変数の定数伝
播を実施
const宣言された外部変数の定数伝
播を抑止
R20UT0570JJ0100 Rev.1.00 Page 26 of 830 2011.02.23
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
R20UT0570JJ0100 Rev.1.00 Page 27 of 830 2011.02.23
No. オプション ダイアログメニュー 内容
10 const_div
noconst_div
コンパイラ
[詳細…]
[その他]
[定数除算/剰余算 :]
定数除算(剰余算)を乗算を用いた命
令列で行う
定数除算(剰余算)を除算を用いた命
令列で行う
11 library = { function
| intrinsic }
コンパイラ
[詳細…]
[その他]
[ライブラリ関数 :]
ライブラリ関数を関数呼び出し
一部のライブラリ関数を命令展開
12 scope
noscope
コンパイラ
[詳細…]
[その他]
[最適化範囲の分割 :]
最適化範囲を分割する
最適化範囲を分割しない
13 schedule
noschedule
コンパイラ
[詳細…]
[その他]
[命令並べ替え :]
命令並べ替えを行う
命令並べ替えを行わない
14 map=
smap
nomap
コンパイラ
[外部変数アクセス最適化 :]
[モジュール間]
[モジュール内]
[なし]
外部変数アクセス最適化を行う
コンパイル対象ファイル内で定義
された外部変数に対し、外部変数ア
クセス最適化を行う
外部変数アクセス最適化を抑止
15 approxdiv コンパイラ
[詳細…]
[その他]
[浮動小数点定数除算の乗算化]
浮動小数点定数除算の乗算化を行
う
16 enable_register コンパイラ
[詳細…]
[その他]
[register指定変数の
優先レジスタ割り付け]
register記憶クラスを指定した変数
を優先的にレジスタ割り付け
17 simple_float_conv コンパイラ
[詳細…]
[その他]
[浮動小数点数 –
整数変換時の範囲チェック省略]
浮動小数点型の型変換処理の一部
を省略
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
R20UT0570JJ0100 Rev.1.00 Page 28 of 830 2011.02.23
No. オプション ダイアログメニュー 内容
18 fpu
nofpu
コンパイラ
[詳細…]
[その他]
[FPU命令の使用 :]
FPU命令を使用したオブジェクト
を出力
FPU命令を使用しないオブジェク
トを出力
19 alias={ noansi
| ansi }
コンパイラ
[詳細…]
[その他]
[ポインタ指示先の型を考慮した最
適化]
ポインタ指示先の型を考慮した最
適化をしない
ポインタ指示先の型を考慮した最
適化をする
20 float_order コンパイラ
[詳細…]
[その他]
[浮動小数点式の演算順序変更]
浮動小数点式の演算順序変更の最
適化を行う
-
RXファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ 2. C/C++コンパイラオプション
optimize
書 式 optimize = { 0 | 1 | 2 | max }
説 明 最適化レベルを指定します。
optimize=0を指定した場合、最適化を実施しません。これにより、デバッグ情報を高い精度で出力でき、ソースレベルデバッグがしやすくなります。
optimize=1を指定した場合、自動変数のレジスタ割付、関数出口ブロックの統合、統合可能な複数命令の統合など、一部最適化を実施します。これにより、optimize=0指定時よりもコードサイズを削減できます。
optimize=2を指定した場合、全般的に最適化を実施します。ただし、実施する最適化の内容は、size/speedオプションの選択によって若干異なります。
optimize=maxを指定した場合、実施可能な最適化を最大限に行います。たとえば、最適化の適用範囲を最大限に拡大したり、speedオプション指定時には、大規模なループ展開を可能にします。最適化の効果が期待できる反面、コンパイル時間の増大や、speedオプション指定時のコードサイズ大幅な増加など、副作用を伴う場合があります。
本オプションの省略時解釈は、optimize=2です。
備 考 各種最適化オプションの説明で、デフォルトが記述されていないものは、