本ドキュメントは Cypress (サイプレス) 製品に関する情報が記載されております。本ドキュメント には、仕様の開発元企業として「スパンション」または「Spansion」の名が記載されておりますが、 これらの製品は Cypress が新規および既存のお客様に引き続き提供してまいります。 商品仕様の継続性について Cypress 製品として提供することに伴う商品仕様としての変更はなく、ドキュメントとしての変更も ありません。また本ページのお知らせは、変更情報として追記いたしません。本ドキュメントに変更 情報が記載されている場合、それは本お知らせを除いた前版からの変更点です。なお、今後改訂は必 要に応じて行われますが、その際の変更内容は改訂後のドキュメントに記載いたします。 オーダ型格および品名について Spansion は既存のオーダ型格および品名を引き続きサポートいたします。これらの製品をご注文の 際は、このドキュメントに記載されているオーダ型格および品名をご使用ください。 詳しいお問い合わせ先 Cypress 製品およびそのソリューションの詳細につきましては、お近くの営業所へお問い合わせくだ さい。 サイプレスについて サイプレス (銘柄コード:CY) は、車載や産業機器、ネットワーキング プラットフォームから高機能 民生機器およびモバイル機器まで、今日の最先端組み込みシステム向けに高性能で高品質のソリュー TM TM ションを提供します。NOR フラッシュ メモリや F-RAM 、SRAM、Traveo マイクロコントロー ® ラー、業界唯一の PSoC プログラマブル システムオンチップ ソリューション、アナログおよび PMIC Power Management IC、CapSense®静電容量タッチセンシング コントローラー、Wireless ® BLE Bluetooth Low-Energy、USB コネクティビティ ソリューションなど、幅広い差別化製品ポート フォリオを、一貫した革新性と業界最高クラスの技術サポート、比類のないシステム バリューとと もにグローバルに提供します。 F2MC-16 ファミリ SOFTUNE® C コンパイラマニュアル Software Support Manual Publication Number CM42-00328 MB90880ÉVÉäÅ[ÉY Cover Sheet Revision 9.0 Issue Date July 31, 2015 F2MC-16 ファミリ SOFTUNE® C コンパイラマニュアル Software Support Manual MB90880ÉVÉäÅ[ÉY Cover Sheet S o ft w a r e S u p p o r t M a n u a l はじめに ■ 本書の目的と対象読者 本書は , SOFTUNE C コンパイラ ( 以降 , C コンパイラと称します ) の使用方法およびラ イブラリについて記述しています。 本書は , 本コンパイラを使用して , C 言語によりアプリケーションプログラムを作成ま たは開発する技術者を対象にしています。本書をご一読ください。 本書を読むに当たっては , 各 MCU(Micro Controller Unit) の基本的な知識が必要です。 本 コ ン パ イ ラ は , "American National Standard for Information Systems Programming Language C, X3.159-1989."に準拠しています。本書では, これを"ANSI 規格"と略します。 ■ 商標 SOFTUNE は Spansion LLC の商標です。 F2MC は Spansion LLC の商標です。 Windows は , 米国 Microsoft Corporation の米国およびその他の国における登録商標また は商標です。 UNIX は , X/Open カンパニーリミテッドがライセンスしている米国ならびに他の国に おける登録商標です。 その他の記載されている社名および製品名などの固有名詞は , 各社の商標または登録 商標です。 July 31, 2015, CM42-00328-9 i So ft war e S up po r t M a nu al ■ 本書の全体構成 本書は , 以下に示す 10 の章および付録で構成されています。 第 1 章 SOFTUNE C コンパイラの 概要 この章では , C コンパイラの概要について説明します。 第 2 章 使い始める前に行う システム内の環境設定 この章では , C コンパイラを動作させるための , システム内の環境変数について説 明します。 第 3 章 C コンパイラの操作 この章では , コマンドの機能仕様について説明します。 第 4 章 オブジェクトプログラムの構成 この章では , プログラムを実行する上で必要なことについて説明します。 第 5 章 拡張言語仕様 この章では , コンパイラがサポートしている拡張言語仕様について説明します。ま た , コンパイラが翻訳処理を行う際の限界についても説明します。 第 6 章 実行環境 この章では , オペレーティングシステムが存在していない環境においての実行方法 について説明します。 第 7 章 ライブラリの概要 この章では , ライブラリが提供するファイルの構成やライブラリを組み込むシステ ムとの関係など , C ライブラリの概要について説明します。 第 8 章 ライブラリの組込み この章では , ライブラリを使用する際に準備が必要な処理 , および関数について記 述します。 第 9 章 コンパイラにより 異なる仕様 この章では , コンパイラにより異なる仕様について説明します。ANSI 規格を元に規 格化された JIS 規格に関連させた記述となっています。 第 10 章 シミュレータデバッガ用 低水準関数ライブラリ この章では , シミュレータデバッガ用の低水準関数ライブラリの利用方法について 説明します。 付録 付録では , ライブラリで提供する型 , マクロ , 関数の一覧とライブラリ固有の動作に ついて記述します (A, B)。F2MC-16LX CPU を使用する際の注意事項について記述 します(C)。 関数呼び出しインタフェースを引数のレジスタ渡しに変更するためのガ イドを記述します (D)。エラーメッセージの一覧を記述します (E)。C ライブラリの リエントラント性について , 記述します (F)。スタンバイ制御マクロ , CPU 間欠動作 制御マクロ , ソフトウェアリセットマクロについて , 記述します (G)。16FX ファミ リ TBR レジスタ使用方法について,記述します (H)。処理系定義の動作について, 記述します (I)。 ■ 文法書 C 言語の文法および標準ライブラリ関数については , ANSI 規格に準拠した参考書が市 販されておりますので , それらを参照してください。 ii CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l ■ 参考文献 THE C PROGRAMMING LANGUAGE (Brian W.Kernighan & Dennis M.Ritchie) 日本語版 " プログラミング言語 C UNIX 流プログラム書法と作法 " ( 石田晴久訳-共立出版- ) American National Standard for Information Systems - Programming Language C, X3.159-1989 UNIX system User's Manual system V (Western Electric Company, Incorporated) UNIX system V Programmer Reference Manual (AT&T Bell Laboratories) User Reference Manual UTS/5 Release 0.1 (Western Electric Company, Incorporated and Amdahl Corporation) UTS Command Reference Manual UTS/5 Release 0.1 (Western Electric Company, Incorporated and Amdahl Corporation) 日本工業規格プログラム言語 C ( 財団法人日本規格協会 ) July 31, 2015, CM42-00328-9 iii So ft war e iv S up po r t M a nu al CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 目次 第1章 1.1 1.2 1.3 第2章 2.1 2.2 2.3 2.4 2.5 第3章 SOFTUNE C コンパイラの概要................................................................. 1 C コンパイラの機能 ............................................................................................................... 2 コマンドの基本的な処理 ........................................................................................................ 4 C コンパイラの基本的な機能 ................................................................................................. 6 使い始める前に行うシステム内の環境設定............................................... 9 FETOOL ............................................................................................................................... 10 OPT907 ................................................................................................................................ 11 INC907 ................................................................................................................................. 12 TMP ...................................................................................................................................... 13 FELANG ............................................................................................................................... 14 C コンパイラの操作 ................................................................................. 15 3.1 コマンド行............................................................................................................................ 16 3.2 コマンドのオペランド.......................................................................................................... 17 3.3 ファイル名とディレクトリ名 ............................................................................................... 18 3.4 コマンドのオプション.......................................................................................................... 19 3.4.1 コマンドのオプション一覧 ........................................................................................ 20 3.4.2 コマンドの取り消しオプション一覧 .......................................................................... 23 3.5 オプションの詳細 ................................................................................................................. 25 3.5.1 翻訳制御関連オプション ............................................................................................ 26 3.5.2 プリプロセッサ関連オプション ................................................................................. 28 3.5.3 情報出力関連オプション ............................................................................................ 31 3.5.4 言語仕様関連オプション ............................................................................................ 36 3.5.5 最適化関連オプション ............................................................................................... 39 3.5.6 出力オブジェクト関連オプション.............................................................................. 48 3.5.7 デバッグ情報関連オプション..................................................................................... 54 3.5.8 コマンド関連オプション ............................................................................................ 55 3.5.9 オプションファイル関連オプション .......................................................................... 56 3.6 オプションファイル ............................................................................................................. 57 3.7 翻訳時メッセージ ................................................................................................................. 59 第4章 オブジェクトプログラムの構成............................................................... 61 4.1 セクション構成 .................................................................................................................... 62 4.2 メモリモデル ........................................................................................................................ 65 4.3 コンパイラで使用する名前の生成規則................................................................................. 67 4.4 境界整合 ............................................................................................................................... 68 4.5 ビットフィールド ................................................................................................................. 69 4.6 構造体 / 共用体 ..................................................................................................................... 71 4.7 関数呼び出しインタフェース ( 引数のスタック渡し ) ......................................................... 73 4.7.1 スタックフレーム ( 引数のスタック渡し ) ................................................................. 74 4.7.2 引数 ( 引数のスタック渡し )....................................................................................... 76 4.7.3 引数の拡張形式 ( 引数のスタック渡し )..................................................................... 77 4.7.4 呼び出し手続き ( 引数のスタック渡し )..................................................................... 78 July 31, 2015, CM42-00328-9 v So ft war e S up po r t M a nu al 4.7.5 レジスタ ( 引数のスタック渡し )................................................................................ 79 4.7.6 戻り値 ( 引数のスタック渡し ) ................................................................................... 80 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) ......................................................... 81 4.8.1 スタックフレーム ( 引数のレジスタ渡し ) ................................................................. 82 4.8.2 引数 ( 引数のレジスタ渡し )....................................................................................... 84 4.8.3 引数の拡張形式 ( 引数のレジスタ渡し )..................................................................... 86 4.8.4 呼び出し手続き ( 引数のレジスタ渡し )..................................................................... 87 4.8.5 レジスタ ( 引数のレジスタ渡し )................................................................................ 89 4.8.6 戻り値 ( 引数のレジスタ渡し ) ................................................................................... 90 4.9 割込み関数呼び出しインタフェース .................................................................................... 91 4.9.1 割込みスタックフレーム ............................................................................................ 92 4.9.2 割込み関数呼び出し手続き ........................................................................................ 93 第5章 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 第6章 6.1 6.2 6.3 第7章 7.1 7.2 第8章 拡張言語仕様............................................................................................ 95 アセンブラ記述機能 ............................................................................................................. 96 割込み制御機能 .................................................................................................................... 98 I/O 領域アクセス機能 ......................................................................................................... 100 direct 領域アクセス機能 ..................................................................................................... 101 16 ビット /24 ビットアドレッシングアクセス機能............................................................ 103 インライン展開指定機能 .................................................................................................... 105 セクション名の変更機能 .................................................................................................... 106 レジスタバンク番号の設定機能 ......................................................................................... 109 割込みレベルの設定機能 .................................................................................................... 110 システムスタックの利用指定機能...................................................................................... 111 スタックバンクの自動判別機能 ......................................................................................... 112 レジスタ退避なしの割込み関数機能 .................................................................................. 113 ビルトイン関数 .................................................................................................................. 114 既定義マクロ ...................................................................................................................... 118 コンパイラの翻訳限界........................................................................................................ 119 実行環境................................................................................................. 121 実行処理の概要 .................................................................................................................. 122 スタートアップルーチンの作成 ......................................................................................... 124 ROM 化プログラムの注意事項........................................................................................... 126 ライブラリの概要 .................................................................................. 127 ファイルの構成 .................................................................................................................. 128 組み込むシステムとの関係................................................................................................. 131 ライブラリの組込み............................................................................... 133 8.1 ライブラリの組込みの概略................................................................................................. 134 8.2 ライブラリを使用する際に必要な初期化処理 / 終了処理................................................... 135 8.3 低水準関数の種類 ............................................................................................................... 136 8.4 標準ライブラリと必要な処理 / 低水準関数 ........................................................................ 137 8.5 低水準関数の仕様 ............................................................................................................... 138 8.5.1 open 関数 ................................................................................................................. 139 8.5.2 close 関数 ................................................................................................................. 140 8.5.3 read 関数 .................................................................................................................. 141 8.5.4 write 関数.................................................................................................................. 142 vi CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 8.5.5 lseek 関数 ................................................................................................................. 143 8.5.6 isatty 関数 ................................................................................................................. 144 8.5.7 sbrk 関数................................................................................................................... 145 8.5.8 _exit 関数.................................................................................................................. 146 8.5.9 _abort 関数 ............................................................................................................... 147 8.6 時間関数の仕様 .................................................................................................................. 148 8.6.1 clock 関数 ................................................................................................................. 149 8.6.2 time 関数................................................................................................................... 150 第9章 9.1 9.2 9.3 コンパイラにより異なる仕様 ................................................................ 151 コンパイラに依存した言語仕様の相違点 ........................................................................... 152 浮動小数点データの形式と表現できる値の範囲 ................................................................ 154 実行時ライブラリ関数による浮動小数点データの演算 ..................................................... 155 第 10 章 10.1 10.2 10.3 10.4 低水準関数ライブラリの概略 ............................................................................................. 158 低水準関数ライブラリの利用 ............................................................................................. 159 低水準関数の機能 ............................................................................................................... 161 低水準関数ライブラリの変更 ............................................................................................. 163 付録 付録 A 付録 B 付録 C 付録 D 付録 E 付録 F 付録 G 付録 H 付録 I 付録 J 索引 シミュレータデバッガ用低水準関数ライブラリ.................................... 157 ................................................................................................................165 型 , マクロ , 変数 , 関数一覧 ........................................................................................... 166 ライブラリ固有の動作.................................................................................................... 171 F2MC-16LX CPU の符号付き除算命令の注意事項について .......................................... 177 関数呼び出しインタフェース変更ガイド....................................................................... 180 エラーメッセージ一覧.................................................................................................... 189 C ライブラリのリエントラント性について ................................................................... 334 スタンバイ制御マクロ , CPU 間欠動作制御マクロ , ソフトウェアリセットマクロ......................................................................................... 337 16FX ファミリ TBR レジスタ使用方法......................................................................... 339 処理系定義の動作........................................................................................................... 341 主な変更内容 .................................................................................................................. 351 ................................................................................................................353 July 31, 2015, CM42-00328-9 vii So ft war e viii S up po r t M a nu al CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 第1章 SOFTUNE C コンパイラの 概要 C コンパイラの概要について説明します。C コン パイラは , C 言語で記述されたソースプログラムを , 各種 MCU(Micro Controller Unit) のアセンブリ言 語に翻訳する言語処理系プログラムです。 1.1 C コンパイラの機能 1.2 コマンドの基本的な処理 1.3 C コンパイラの基本的な機能 July 31, 2015, CM42-00328-9 1 第 1 章 SOFTUNE C コンパイラの 概要 1.1 C コンパイラの機能 So ft war e 1.1 S up po r t M a nu al C コンパイラの機能 C コンパイラは , C 言語で表現された C ソースファイルを入力とし , アセンブリ言語 で表現されるアセンブラソースファイルを生成します。 ■ C コンパイラの機能 C コンパイラの機能により , アセンブラソースファイルが生成されるまでの 2 つの処理 過程を以下に示します。 ● 前処理 前処理は, コンパイラのサブコンポーネントであるプリプロセッサ(cpps)によって行わ れます。プリプロセッサ (cpps) では , C ソースファイル中の前処理指令 (#if, #define, #include など ) を解釈し , 前処理済 C ソースファイルに変換します。 ● コンパイル コンパイルは , コンパイラ (ccoms) によって行われます。コンパイラ (ccoms) では , 前 処理済 C ソースファイルを , アセンブラソースファイルに変換します。 C コンパイラを機能させるためには , fcc907s コマンドを使用します。これらのコマン ドは , C コンパイラを構成するツール ( プリプロセッサ , コンパイラ ) を自動的に呼び 出し , C ソースファイルのコンパイル処理を制御します。このような機能を持つ C コ ンパイラは , 図 1.1-1 のように構成されます。 2 CM42-00328-9, July 31, 2015 第 1 章 SOFTUNE C コンパイラの 概要 1.1 C コンパイラの機能 S o ft w a r e S u p p o r t M a n u a l 図 1.1-1 C コンパイラの構成 Cソースファイル 標準ヘッダファイル プリプロセッサ (cpps) メッセージファイル 前処理済 Cソースファイル メッセージファイル コンパイラ (ccoms) スタック使用量情報ファイル アセンブラ ソースファイル 以降の各節では , C コンパイラの翻訳処理について , コマンドを使用して説明します。 コマンドの機能仕様の詳細については , 「第 3 章 C コンパイラの操作」を参照してく ださい。 July 31, 2015, CM42-00328-9 3 第 1 章 SOFTUNE C コンパイラの 概要 1.2 コマンドの基本的な処理 So ft war e 1.2 S up po r t M a nu al コマンドの基本的な処理 ここでは , C コンパイラで使用するコマンドの基本的な処理について記述します。C コンパイラでは , 以下のコマンドを使用します。 • fcc907s …… F2MC-16 ファミリ用コマンド ■ fcc907s コマンドの基本的な処理 fcc907s コマンドの基本的な処理は , C ソースファイルを入力とし , オブジェクトファ イルを生成します。fcc907s コマンドでは , 拡張子が .c のファイルを C ソースファイル とみなします。以下に fcc907s コマンドの使用例を示します。使用例で示す ">" は , コ マンドプロンプトです。 【例】 > fcc907s -cpu MB90F553A file.c 上の例のように入力すると , fcc907s コマンドは , file.c を C ソースファイルとみなし , エラーが検出されなければ , カレントディレクトリにオブジェクトファイル file.obj を 生成します。 【例】 > fcc907s -o outfile -cpu MB90F553A file.c 上の例のように入力すると , fcc907s コマンドは , オブジェクトファイル outfile を生成 します。fcc907s コマンドでは , この場合の例のように , -o などのオプションを指定す ることにより , 処理過程を制御できます。 ■ コンパイル処理の過程を制御するオプション ● -P オプション -P オプションを指定すると , コマンドはプリプロセッサのみを呼び出して前処理を行 い , カレントディレクトリに前処理済 C ソースファイルを生成します。生成するファ イルは , 拡張子を .i に変更したファイルです。 ● -S オプション -S オプションを指定すると , コマンドはプリプロセッサとコンパイラを呼び出して前 処理とコンパイルを行い , カレントディレクトリにアセンブラソースファイルを生成 します。生成するファイルは , 拡張子を .asm に変更したファイルです。 ● -o オプション -o オプションを指定すると , コマンドは処理の結果として , コマンド行で指定したファ イルを生成します。これらの , 各オプションの指定により生成される出力ファイルは , fcc907s コマンドの入力ファイルとすることもできます。入力ファイルとオプションに よって生成される出力ファイルを , 図 1.2-1 に示します。 4 CM42-00328-9, July 31, 2015 第 1 章 SOFTUNE C コンパイラの 概要 1.2 コマンドの基本的な処理 S o ft w a r e S u p p o r t M a n u a l 図 1.2-1 入力ファイルとオプションによって生成される出力ファイルの関係 -P プリプロセッサ -P -o file.i コンパイラ -S -o file.asm 指定file file.asm アセンブラ -o file.obj 指定file -S fcc907sコマンド July 31, 2015, CM42-00328-9 file.i 指定file file.c 5 第 1 章 SOFTUNE C コンパイラの 概要 1.3 C コンパイラの基本的な機能 So ft war e 1.3 S up po r t M a nu al C コンパイラの基本的な機能 ここでは , C コンパイラの 3 つの基本的な機能について記述します。 • ヘッダファイルの検索 • シンボリックデバッガとの連携 • 最適化 なお , シンボリックデバッガは , C 言語で作成したプログラムを解析するための支援 ツールです。 ■ ヘッダファイルの検索 C プログラムの #include 指令で , ヘッダファイルを取り込むことができます。角括弧 (< >) で囲まれたヘッダファイルは , 絶対パス名で指定されたときにはそのディレクト リから検索されます。それ以外のときには , 標準のディレクトリから検索されます。標 準のヘッダファイルは , C コンパイラによって提供されます。二重引用符 (" ") で囲ま れたヘッダファイルは , 絶対パス名で指定されたときにはそのディレクトリから検索 されます。それ以外のときには , #include 行を含むファイルがあるディレクトリから検 索されます。#include 行を含むファイルがあるディレクトリにヘッダファイルがない場 合 , 次に標準のディレクトリから検索されます。-I オプションは , ヘッダファイルを検 索するディレクトリを追加できます。 【例】 > fcc907s -cpu MB90F553A -I ..\include file.c 上の例のように入力すると , コマンドは , 角括弧 (< >) で囲まれたヘッダファイルの検 索を , 以下の順序で行います。 1. ..\include 2. 標準のディレクトリ また , 二重引用符で囲まれたヘッダファイルの検索は , 以下の順序で行います。 1. #include 行を含むファイルのカレントディレクトリ 2. ..\include 3. 標準のディレクトリ -I オプションは複数指定することが可能であり , 指定された順に検索します。 6 CM42-00328-9, July 31, 2015 第 1 章 SOFTUNE C コンパイラの 概要 1.3 C コンパイラの基本的な機能 S o ft w a r e S u p p o r t M a n u a l ■ シンボリックデバッガとの連携 -g オプションを指定すると , コンパイラはシンボリックデバッガによって使用される デバッグ情報を生成します。この情報を生成することにより , シンボリックデバッガに おいて , C 言語レベルデバッグが可能になります。シンボリックデバッガには , シミュ レータデバッガとエミュレータデバッガがあります。 最適化オプション (-O[1-4]) を指定した場合 , 以下の点に注意してデバッグしてくださ い。 最適化オプションを指定すると , コンパイラは , より良いコードを出力するために , 演算を行う位置を移動したり, 不必要であると判断した演算を削除したりします。また, メモリとのデータのやりとりを少なくするために , データをレジスタ上に保持しよう とします。これにより , ある行にブレークポイントを設定しても , ブレークがかからな かったり , あるアドレスのデータを監視していても , 思いどおりのタイミングで変化し なかったりすることが考えられます。また , 使用していないローカル変数や , 最適化の 結果スタック上に領域が必要なくなったローカル変数に対するデバッグ情報は出力さ れません。これらの点を考慮してデバッグしてください。 ■ 最適化 -O オプションを指定すると , コンパイラは汎用最適化を実施した , より効率の良いオ ブジェクトを生成します。 July 31, 2015, CM42-00328-9 7 第 1 章 SOFTUNE C コンパイラの 概要 1.3 C コンパイラの基本的な機能 So ft war e 8 S up po r t M a nu al CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 第2章 使い始める前に行う システム内の環境設定 C コンパイラを動作させるために必要な , システム 内の環境変数について説明します ( 環境変数の設定 方法については , 各オペレーティングシステムのマ ニュアルを参照してください )。なお , すべての環 境変数は , 省略できます。また , 提供形態について は『C コンパイラインストール説明書』を参照し てください。 Windows 版では , 環境変数に設定するディレクト リにロングファイル名を使用できます。ロング ファイル名に使用できる文字については「3.3 ファイル名とディレクトリ名」を参照してくださ い。 【設定例】 set FETOOL=c:¥Softune 環境変数で指定するディレクトリ名は二重引用符 ("") で囲まないでください。 2.1 FETOOL 2.2 OPT907 2.3 INC907 2.4 TMP 2.5 FELANG July 31, 2015, CM42-00328-9 9 第 2 章 使い始める前に行う システム内の環境設定 2.1 FETOOL So ft war e 2.1 S up po r t M a nu al FETOOL 開発環境は , インストールしたディレクトリを指定してください。 ■ FETOOL 【記述形式 1 UNIX 系 OS の場合】 setenv FETOOL インストールディレクトリ 【記述形式 2 WINDOWS の場合】 set FETOOL= インストールディレクトリ コマンドは , FETOOL に設定されたパスからコンパイラ , メッセージファイル , インク ルードファイルなどをアクセスします。FETOOL が設定されていない場合 , 起動した コマンドのあるディレクトリの親ディレクトリ ( コマンドがあるディレクトリの位置 \..) をインストールディレクトリとみなします。ディレクトリは複数記述できません。 【例 UNIX 系 OS の場合】 setenv FETOOL /usr/local/softune 【例 WINDOWS の場合】 set 10 FETOOL=c:\softune CM42-00328-9, July 31, 2015 第 2 章 使い始める前に行う システム内の環境設定 2.2 OPT907 S o ft w a r e 2.2 S u p p o r t M a n u a l OPT907 コマンドが使用するデフォルトオプションファイルのディレクトリを , 指定してく ださい。 ■ OPT907 【記述形式 1 UNIX 系 OS の場合】 setenv OPT907 デフォルトオプションファイルのディレクトリ 【記述形式 2 WINDOWS の場合】 set OPT907= デフォルトオプションファイルのディレクトリ コマンドが使用するデフォルトオプションファイルのディレクトリを , 指定してくだ さい。 OPT907 が設定されていない場合 , FETOOL に設定されたディレクトリからの相対位置 (%FETOOL%\lib\907) をデフォルトオプションファイルのディレクトリとみなします。 ただし , ディレクトリは複数記述できません。 【例 UNIX 系 OS の場合】 setenv OPT907 /usr/local/softune/lib/907 【例 WINDOWS の場合】 set OPT907=c:\softune\lib\907 July 31, 2015, CM42-00328-9 11 第 2 章 使い始める前に行う システム内の環境設定 2.3 INC907 So ft war e 2.3 S up po r t M a nu al INC907 コマンドが標準ヘッダファイルの検索を行うディレクトリを設定してください。 ■ INC907 【記述形式 1 UNIX 系 OS の場合】 setenv INC907 標準インクルードディレクトリ 【記述形式 2 WINDOWS の場合】 set INC907= 標準インクルードディレクトリ 標準ヘッダファイルの検索を行うディレクトリを設定してください。INC907 に設定さ れたディレクトリを標準インクルードディレクトリとします。INC907 が設定されてい ない場合 , FETOOL に設定されたディレクトリからの相対位置 (%FETOOL%\lib\907\ include) を標準ヘッダファイルのディレクトリとみなします。ディレクトリは複数記述 できません。 【例 UNIX 系 OS の場合】 setenv INC907 /usr/local/softune/lib/907/include 【例 WINDOWS の場合】 set 12 INC907=c:\softune\lib\907\include CM42-00328-9, July 31, 2015 第 2 章 使い始める前に行う システム内の環境設定 2.4 TMP S o ft w a r e 2.4 S u p p o r t M a n u a l TMP C コンパイラが使用するテンポラリファイルのディレクトリを指定してください。 ■ TMP 【記述形式 1 UNIX 系 OS の場合】 setenv TMP テンポラリディレクトリ 【記述形式 2 WINDOWS の場合】 set TMP= テンポラリディレクトリ C コンパイラが使用するテンポラリファイルを作成する作業用ディレクトリを指定し てください。TMP が設定されていない場合 , UNIX 系 OS の場合は /tmp に , WINDOWS の場合はカレントディレクトリにテンポラリファイルを作成します。ディレクトリは 複数記述できません。 【例 UNIX 系 OS の場合】 setenv TMP /usr/tmp 【例 WINDOWS の場合】 set July 31, 2015, CM42-00328-9 TMP=c:\tmp 13 第 2 章 使い始める前に行う システム内の環境設定 2.5 FELANG So ft war e 2.5 S up po r t M a nu al FELANG メッセージのコード系を指定します。 ■ FELANG 【記述形式 1 UNIX 系 OS の場合】 setenv FELANG メッセージのコード系 【記述形式 2 WINDOWS の場合】 set FELANG= メッセージのコード系 メッセージのコード系を指定します。指定できるコード系は以下のいずれかです。 ASCII: メッセージを ASCII コードで出力します。メッセージの言語は英語になります。日 本語環境のないシステムの場合 , この形式にしてください。 EUC: メッセージを EUC コードで出力します。メッセージの言語は日本語になります。 SJIS: メッセージを SHIFT JIS コードで出力します。メッセージの言語は日本語になりま す。FELANG が設定されていない場合 , ASCII が指定されているものとみなします。 【例 UNIX 系 OS の場合】 setenv FELANG EUC 【例 WINDOWS の場合】 set 14 FELANG=SJIS CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 第3章 C コンパイラの操作 コマンドの機能仕様について説明します。 3.1 コマンド行 3.2 コマンドのオペランド 3.3 ファイル名とディレクトリ名 3.4 コマンドのオプション 3.5 オプションの詳細 3.6 オプションファイル 3.7 翻訳時メッセージ July 31, 2015, CM42-00328-9 15 第 3 章 C コンパイラの操作 3.1 コマンド行 So ft war e 3.1 S up po r t M a nu al コマンド行 コマンド行の形式を , 以下に示します。 • fcc907s [options] operands ■ コマンド行 コマンド行には, オプションとオペランドを指定できます。オプションとオペランドは, コマンド行のどの位置からでも指定できます。オプションとオペランドは , それぞれ複 数指定することが可能です。オプションは省略してもかまいません。オプションとオ ペランドは , それぞれ空白文字列で区切られます。コマンドは , 以下に示す順序でオプ ションとオペランドを認識します。 1. まずハイフン "-" で始まるものをオプションとして認識し , 次に続く文字列を解 釈して , オプションの種類を判別します。 2. オプションの中で引数を持つものに対しては , 次に続く文字列を引数とみなし ます。 3. 最後にコマンド行に残ったものを , オペランドとして認識します。 【例】 >fcc907s file1.c -S -I \home\myincs file2.c -cpu MB90F553A まず , -S と -I をオプションとして認識します。-I オプションは引数を持つので , 次に続 く文字列 ¥home¥myincs を引数とみなします。そして最後に残った , file1.c と file2.c を オペランドとみなします。 オプション : -S, -I \home\myincs オペランド: file1.c, file2.c ■ コマンドの処理 コマンドは , 各入力ファイルに対して , 指定された順にプリプロセッサ , コンパイラ , アセンブラ , およびリンカを呼び出し , 前処理 , コンパイル , アセンブル , およびリンク を行います。結果は , 入力ファイルの拡張子を .obj に変更したファイルに出力します。 【例】 >fcc907s file1.c file2.c file3.c -cpu MB90F553A ファイル file1.c, file2.c, file3.c に対して , 前処理 , コンパイルおよびアセンブルを行い , ファイル file1.obj, file2.obj, file3.obj を生成します。 16 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.2 コマンドのオペランド S o ft w a r e 3.2 S u p p o r t M a n u a l コマンドのオペランド オペランドには , 複数の入力ファイルを指定できます。 ■ コマンドのオペランド コマンドは , 入力ファイルの拡張子によりファイルの種類を判別し , それぞれの種別に 対応する処理を行います。ただし , 拡張子は省略できません。 ファイル指定: 指定できるファイルには , C ソースファイル , 前処理済 C ソースファイル , アセンブ ラソースファイルおよびオブジェクトファイルがあります。 ファイルの拡張子: 入力ファイル拡張子とコマンドの処理の関係を , 表 3.2-1 に示します。 表 3.2-1 拡張子とコマンドの処理の関係 拡張子 コマンドの処理 .c C ソースファイルとみなして , 前処理以降の処理を行います。 .i 前処理済 C ソースファイルとみなして , コンパイル処理以降の処理を行います。 .asm コンパイル処理済アセンブラソースファイルとみなして , アセンブル処理以降の 処理を行います。 .obj 何も行われません。 .abs リンク処理済アブソリュートファイルとみなして , エラーを出力します。アブソ リュートファイルは指定できません。 オプションの指定により , 対応する処理が抑止されることがあります。 【例】 >fcc907s file1.c file2.i -cpu MB90F553A ファイル file1.c に対して , 前処理 , コンパイル , アセンブルを行い , 次に file2.i に対し て , コンパイル , アセンブルを行い , file1.obj と file2.obj を生成します。 July 31, 2015, CM42-00328-9 17 第 3 章 C コンパイラの操作 3.3 ファイル名とディレクトリ名 So ft war e 3.3 S up po r t M a nu al ファイル名とディレクトリ名 ファイル名およびディレクトリ名として使用できる文字は以下のとおりです。 ■ ファイル名とディレクトリ名 ● Windows 版 英数字 , \ / : * ? " < > | 以外の記号 , シフト JIS 漢字コードおよびシフト JIS 半角カナ コード ロングファイル名をオプションとオペランドに指定する場合 , ファイル名を二重引用 符 ("") で括ってください。ただし , 環境変数に設定する場合 , 二重引用符は使用できま せん。 ● その他の版 アンダバー "_" および英数字 ( ただし , 先頭文字はアンダバー "_" および英字のみ ) ● モジュール名について モジュール名は,ファイル名から生成されます。モジュール名として使用できる文字は, アンダバー "_" および英数字 ( ただし , 先頭文字はアンダバー "_" および英字のみ ) で す。ファイル名にこれ以外の文字が使用されている場合 , モジュール名として使用でき ない文字をアンダバー "_" に変換します。変換後のモジュール名が同一となるような ファイル名は使用しないでください。 18 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.4 コマンドのオプション S o ft w a r e 3.4 S u p p o r t M a n u a l コマンドのオプション コマンドのオプションについて説明します。 ■ オプションのシンタックス オプションは , ハイフン "-" と次に続く 1 つ以上の文字からなります。また , オプショ ンの中には , 引数を持つものがあります。オプションと引数の間には , 空白文字列を入 れてください。コマンドのオプションは , グルーピングして指定できません。グルーピ ングによる指定とは , 例えば , -S オプションと -g オプションを , -Sg のような形式で指 定する方法です。 ■ 同一オプションの複数指定 同一のオプションが複数指定されたときには , コマンド行で最後に指定されたオプ ションのみを有効とします。 【例】 >fcc907s -o outfile file.c -o outobj -cpu MB90F553A 出力するファイルの名前は , outobj になります。次に示すオプションは , 複数の指定が 可能であり , それぞれの指定が意味を持ちます。 ● 複数の指定が意味を持つオプション -D, -f, -I, -INF, -K, -T, -U, -x, -Y これらのオプションが複数指定されたときの意味については , 各オプションの詳細を 参照してください。 ■ コマンド行での位置 オプションのコマンド行での位置は , 特別な意味を持ちません。すなわち , コマンド行 のどの位置で指定しても , 同じ意味で解釈されます。 【例】 1)>fcc907s -C -E file1.c file2.c -cpu MB90F553A 2)>fcc907s file1.c -E file2.c -C -cpu MB90F553A 1), 2) とも , 同一の処理が行われます。 ■ 排他関係と依存関係 オプションの中には , オプション間で排他関係を持つもの , または依存関係を持つもの があります。オプション間の排他関係および依存関係については , 各オプションの詳細 を参照してください。 ■ 大文字小文字の区別 オプションは , 大文字と小文字を区別しています。例えば , -O と -o は違うオプション です。サブオプションは大文字と小文字を区別しません。例えば , -K eopt と -K EOPT は同じオプションです。サブオプションとは , -K オプションや -INF オプションに続く 文字列のことを示します。 July 31, 2015, CM42-00328-9 19 第 3 章 C コンパイラの操作 3.4 コマンドのオプション So ft war e S up po r t M a nu al コマンドのオプション一覧 3.4.1 コマンドは , 引数を指定せずに起動すると , オプションの一覧を標準出力に出力しま す。コマンドのオプションの一覧を表 3.4-1 , 表 3.4-2 に示します。一覧で示される ものが , コマンドが認識するオプションです。 ■ コマンドのオプション一覧 表 3.4-1 コマンドのオプション一覧 (1 / 2) 指定形式 20 機能概要 -B C++ スタイルのコメント (//) を許す。 -C 前処理結果にコメントを残す。 -c アセンブルまでの処理を行い , 結果を .obj に出力する。 -cmsg コンパイル処理の終了メッセージを標準出力に出力する。 -cpu MB 番号 使用する CPU の MB 番号を指定する。 -cwno 警告発生時の終了コードを 1 にする。 -D name[=[tokens] ] マクロ name を定義する。 -E 前処理のみを行い , 結果を標準出力に出力する。 -f filename オプションファイルを指定する。 -g デバッグに必要な情報をオブジェクトに追加する。 -H 取り込まれたヘッダファイルのパス名を , 標準出力に出力する。 -HH 取り込まれたヘッダファイルのパス名を標準出力に表示し , オブジェクトを生成する。 -help オプション一覧を標準出力に出力する。 -I dir 検索するヘッダファイルのディレクトリを指定する。 -INF LIST アセンブルリストを生成する。 -INF {SRCIN | LINENO} アセンブラソースに , 対応する C ソースの情報をコメントで挿入する。 -INF STACK [=filename] スタック使用量情報を生成する。 -Xinittbl __far 型修飾子が指定されたデータ領域を初期化するためのテーブルを 生成しない。 -J {a | c} コンパイラが解釈する言語仕様レベルを指定する。 -K {DCONST | FCONST} 接尾語なしの実数定数の型を指定する。 -K EOPT 演算の評価方法を変更する最適化を行う。 -K LIB 標準関数の動作を認識してインライン展開 / 他の関数への置換えを 行う。 -K LNKOPT リンク時に未使用関数を削除するための前処理を行う。 -K NOALIAS 異なるポインタは同一領域を指さないとして最適化する。 -K NOINTLIB 割込み関連関数をインライン展開しない。 -K NOUNROLL ループアンローリング抑止。 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.4 コマンドのオプション S o ft w a r e S u p p o r t M a n u a l 表 3.4-1 コマンドのオプション一覧 (2 / 2) 指定形式 機能概要 -K NOVOLATILE _ _ io 修飾変数を volatile と見なさない。 -K REALOS ITRON システムコール関数をインライン展開する。 -K {SIZE | SPEED} サイズ / 実行速度を重視して最適化を選択する。 -K {UCHAR | SCHAR} 単なる char の符号の取り扱いを指定する。 -K {UBIT | SBIT} 単なる int のビットフィールドの符号の取り扱いを指定する。 -kanji {SJIS | EUC} プログラム中で使用する漢字コードを指定する。 -O level 汎用最適化を指示する。 -o pathname 結果を pathname に出力する。 -P 前処理のみを行い , 結果を .i に出力する。 -S コンパイルまでの処理を行い , 結果を .asm に出力する。 -s defname=newname[, attr [, address] ] セクション名を変更する。 -splitsection CODE セクションを関数単位に分割する。 -T item, arg1 [, arg2...] ツールに引数を渡す。 -U name マクロ name の定義を取り消す。 -V 実行されたコンパイラ・ツールのバージョン情報を , 標準出力に出力する。 -w level 警告メッセージの出力レベルを指定する。 -Xdof デフォルトオプションファイルの読み込みを抑止する。 -x func [, fun2...] 関数のインライン展開を指定する。 -xauto [size] 論理行が size 行以上の関数をインライン展開の対象とする。 -Y item, dir item の位置を dir に変更する。 July 31, 2015, CM42-00328-9 21 第 3 章 C コンパイラの操作 3.4 コマンドのオプション So ft war e S up po r t M a nu al 表 3.4-2 コマンドのオプション一覧 指定形式 22 機能概要 -div905 DIV/DIVW 命令を代替命令に置換しない。 -K ACCOPT アキュムレータへの即値転送コードの最適化を行 う。 -K ADDSP 実引数領域の解放をまとめて行う。 -K ARRAY 配列要素アクセスコードの最適化を行う。 -K BITOPT ビット操作命令の有効的な生成を行う。 -K BITFIELD_ORDER_LSB ビットフィールドメンバを LSB 側から配置する。 -K BITFIELD_ORDER_MSB ビットフィールドメンバを MSB 側から配置する。 -pack 構造体 / 共用体メンバをパックする。 -model {SMALL | MEDIUM | COMPACT | LARGE} メモリモデルを指定する。 -ramconst ミラー機能を使用しないことを指定する。 -varorder {SORT | NORMAL} 外部変数および静的変数のセクション内での配置方 法を指定する。 -align {DIR1 | DIR2 | FUNC1 | FUNC2} DIR1 もしくは DIR2 の場合 , __direct 型修飾子が指 定された変数の境界整合値を指定する。 FUNC1 もしくは FUNC2 の場合 , 関数の境界整合値 を指定する。 -rp 関数の引数をレジスタ渡しにする。 -dF __direct 型修飾子を有効利用する。 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.4 コマンドのオプション S o ft w a r e 3.4.2 S u p p o r t M a n u a l コマンドの取り消しオプション一覧 コマンドのオプションを個別に取り消すオプションです。コマンドの取り消しオプ ションの一覧を表 3.4-3 および表 3.4-4 に示します。 ■ コマンドの取り消しオプション一覧 表 3.4-3 コマンドの取り消しオプション一覧 指定形式 機能概要 -XB -B オプションを取り消す。 -XC -C オプションを取り消す。 -Xcmsg -cmsg オプションを取り消す。 -Xcwno -cwno オプションを取り消す。 -Xf -f オプションを取り消す。 -Xg -g オプションを取り消す。 -XH -H オプションを取り消す。 -XHH -HH オプションを取り消す。 -Xhelp -help オプションを取り消す。 -XI -I オプションを取り消す。 -INF NOLINENO LINENO サブオプションを取り消す。 -INF NOLIST LIST サブオプションを取り消す。 -INF NOSRCIN SRCIN サブオプションを取り消す。 -INF NOSTACK STACK サブオプションを取り消す。 -inittbl -Xinittbl オプションを取り消す。 -K ALIAS NOALIAS サブオプションを取り消す。 -K INTLIB NOINTLIB サブオプションを取り消す。 -K NOEOPT EOPT サブオプションを取り消す。 -K NOLIB LIB サブオプションを取り消す。 -K NOREALOS REALOS サブオプションを取り消す。 -K UNROLL NOUNROLL サブオプションを取り消す。 -K VOLATILE NOVOLATILE サブオプションを取り消す。 -Xo -o オプションを取り消す。 -Xs -s オプションを取り消す。 -XT item -T の item に対する指定を取り消す。 -XV -V オプションを取り消す。 -Xx -x オプションを取り消す。 -Xxauto -xauto オプションを取り消す。 -XY item -Y の item に対する指定を取り消す。 July 31, 2015, CM42-00328-9 23 第 3 章 C コンパイラの操作 3.4 コマンドのオプション So ft war e S up po r t M a nu al 表 3.4-4 コマンドの取り消しオプション一覧 指定形式 24 機能概要 -K NOACCOPT ACCOPT サブオプションを取り消す。 -K NOADDSP ADDSP サブオプションを取り消す。 -K NOARRAY ARRAY サブオプションを取り消す。 -K NOBITOPT BITOPT サブオプションを取り消す。 -Xpack -pack オプションを取り消す。 -Xdiv905 -div905 オプションを取り消す。 -Xramconst -ramconst オプションを取り消す。 -Xalign -align オプションを取り消す。 -Xrp -rp オプションを取り消す。 -XdF -dF オプションを取り消す。 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e 3.5 S u p p o r t M a n u a l オプションの詳細 ここでは , オプションの詳細について説明します。 ■ 翻訳制御関連オプション 翻訳制御関連オプションは , プリプロセッサ , コンパイラ , アセンブラの呼び出し制御 に関連するオプションです。 ■ プリプロセッサ関連オプション プリプロセッサ関連オプションは , プリプロセッサの動作に関連するオプションです。 ■ 情報出力関連オプション 情報出力関連オプションは , コマンド , プリプロセッサやコンパイラの情報出力に関連 するオプションです。 ■ 言語仕様関連オプション 言語仕様関連オプションは , コンパイラが認識する言語仕様に関連するオプションで す。 ■ 最適化関連オプション 最適化関連オプションは , コンパイラが施す最適化に関連するオプションです。 ■ 出力オブジェクト関連オプション 出力オブジェクト関連オプションは , 出力するオブジェクトの形式に関連するオプ ションです。 ■ デバッグ情報関連オプション デバッグ情報関連オプションは , シンボリックデバッガが参照するデバッグ情報に関 連するオプションです。 ■ コマンド関連オプション コマンド関連オプションは , コマンドが呼び出す他のツールに関連するオプションで す。 ■ オプションファイル関連オプション オプションファイル関連オプションは , オプションファイルに関連するオプションで す。 July 31, 2015, CM42-00328-9 25 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e 3.5.1 S up po r t M a nu al 翻訳制御関連オプション 翻訳制御関連オプションは , プリプロセッサ , コンパイラ , およびアセンブラの呼び 出し制御に関するオプションです。 ■ 翻訳制御関連オプション 翻訳制御関連オプションは , 次に示す優先順位を持ちます。指定した順序は関係ありま せん。 -E > -P > -S > -c 翻訳制御関連オプションの排他関係を表 3.5-1 に示します。 表 3.5-1 翻訳制御関連オプションの排他関係 指定されたオプション 無効となるオプション -E -S, -c -P -S, -c -S -c -c なし -E オプションと -P オプションが同時に指定されたときについては , 下記を参照してく ださい。 以下に , 翻訳制御関連オプションについて説明します。 ● -E オプション -E オプションは , すべてのファイルに対して前処理のみを行い , 結果を標準出力に出力 します。出力結果には , コンパイラが必要とする , プリプロセッサが生成した前処理指 令が含まれます。プリプロセッサが生成する前処理指令の情報の対象となるのは, #line, #pragma 指令です。ただし , -P オプションが同時に指定されたときには , プリプロセッ サが生成した前処理指令が抑止されます。もし入力ファイルが C ソースファイルでな いときには , 何もしません。 【例】 >fcc907s -E -cpu MB90F553A sample.c sample.c に対して前処理を行った結果を標準出力に出力します。 ● -P オプション -P オプションは , C ソースファイルに対して前処理のみを行い , 拡張子を .i に変更した ファイルに結果を出力します。-E オプション指定時と異なり , 出力結果にプリプロセッ サが生成した前処理指令は含まれません。もし入力ファイルが C ソースファイルでな いときには , 何もしません。 【例】 >fcc907s -P -cpu MB90F553A sample.c sample.c に対して前処理を行った結果を sample.i に出力します。 26 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l ● -S オプション -S オプションは , コンパイルまでの処理を行い , 拡張子を .asm に変更したファイルに 結果のアセンブラソースを出力します。もし入力ファイルが C ソースファイルまたは 前処理済 C ソースファイルでないときには , 何もしません。 【例】 >fcc907s -S -cpu MB90F553A sample.c sample.c に対して前処理およびコンパイル処理を行った結果を sample.asm に出力しま す。 ● -c オプション -c オプションは , アセンブルまでの処理を行い , 拡張子を .obj に変更したファイルに , 結果のオブジェクトを出力します。入力ファイルがオブジェクトファイルのときには , 何もしません。 【例】 >fcc907s -c -cpu MB90F553A sample.c sample.c に対して前処理 , コンパイル処理およびアセンブル処理を行った結果を sample.obj に出力します。 ファイルの種別と翻訳制御関連オプションに対して行われる処理の関係を , 表 3.5-2 に 示します。 表 3.5-2 ファイル種別と翻訳制御関連オプションに対して行われる処理の関係 オプションファイル種別 ( 拡張子 ) -E -P -S -c 指定なし C ソースファイル (.c) P P P, C P, C,A P, C, A 前処理済 C ソースファイル (.i) - - C C, A C, A アセンブラソースファイル (.asm) - - - A A オブジェクトファイル (.obj) - - - - - P : 前処理 C : コンパイル A : アセンブル fcc907s コマンドではリンカを呼び出しません。 【例】 >fcc907s -E file1.c file2.i -cpu MB90F553A ファイル file1.c に対して前処理のみを行い , 結果を標準出力に出力します。file2.i に対 しては何も行いません。 >fcc907s -S file1.c file2.i file3.asm -cpu MB90F553A ファイル file1.c に対しては前処理とコンパイルが , ファイル file2.i に対してはコンパイ ルがそれぞれ行われます。ファイル file3.asm に対しては何も行いません。結果として , カレントディレクトリにファイル file1.asm と file2.asm が生成されます。 July 31, 2015, CM42-00328-9 27 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e 3.5.2 S up po r t M a nu al プリプロセッサ関連オプション プリプロセッサ関連オプションは , プリプロセッサの動作に関するオプションです。 プリプロセッサの呼び出しが行われないときには , プリプロセッサ関連オプション は無効になります。 ■ プリプロセッサ関連オプション 以下に , プリプロセッサ関連オプションについて説明します。 ● -B オプションと -XB オプション -B オプションは , C++ スタイルのコメント表記を許します。このオプションを指定し た場合 , /* */ スタイルのコメントに加えて // スタイルのコメントが使用できます。 -XB オプションは , -B オプションを取り消します。 【使用例】 /* コメント */ // コメント ● -C オプションと -XC オプション -Cオプションは, 前処理指令行の注釈以外のすべての注釈を, 前処理結果として残しま す。このオプションの指定がない場合 , 注釈は 1 つの空白文字に置き換えられます。 -XC オプションは , -C オプションを取り消します。 【出力例】 入力: /* コメント */ void func(void) {} 操作: fcc907s 出力: # 1 -C -E -cpu MB90F553A sample.c "test5.c" コメント */ /* void func(void) {} ● -D name [= [tokens] ] オプション tokens をマクロ定義として , マクロ name を定義します。このオプションは , 次に示す #define 指令と等しくなります。 #define name tokens =tokens の省略時には , tokens として 1 が与えられます。tokens の省略時には指定字句 がソースファイル上から削除されます。-D オプションにおけるエラーは , #define 指令 におけるエラーと同じになります。本オプションは , 複数の指定が可能です。 【例】 >fcc907s -D os=m -D sys file.c -cpu MB90F553A ファイル file.c で , os が m, sys が 1 でマクロ定義されたものとして処理します。 28 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l ● -H オプションと -XH オプション -H オプションは , 前処理時に取り込まれるヘッダファイルのパス名を , 標準出力に出 力します。パス名は取り込まれる順に , 一行に 1 つずつ出力します。ただし , 同一のパ ス名が出現したときには , 初めのパス名のみ出力されます。本オプションの指定時に は , コマンドは -E オプションを内部的に設定し , すべてのファイルに対して前処理の みを行います。ただし , 前処理結果の出力はしません。なお , -XH オプションは , -H オ プションを取り消します。 【出力例】 入力: #include <stdio.h> #include "head.h" 操作: fcc907s 出力: /usr/softune/lib/907/include/stdio.h -H -cpu MB90F553A sample.c /usr/softune/lib/907/include/stddef.h /usr/softune/lib/907/include/stdarg.h ./head.h ● -HH オプションと -XHH オプション -HH オプションは , 前処理時に取り込まれるヘッダファイルのパス名を , 標準出力に出 力します。パス名は取り込まれる順に , 一行に 1 つずつ出力します。 ただし , 同一のパス名が出現したときには , 初めのパス名のみ出力されます。 -HH オプションは , -H オプションとは異なり , 翻訳制御オプション (-E, -P, -S, -c) の指 定に応じて , オブジェクトファイルを出力します。 -XHH オプションは , -HH オプションを取り消します。 【出力例】 入力: #include <stdio.h> #include "head.h" 操作: fcc907s 出力: /usr/softune/lib/907/include/stdio.h -HH -S -cpu MB90F553A sample.c /usr/softune/lib/907/include/stddef.h /usr/softune/lib/907/include/stdarg.h ./head.h ● -I dir オプションと -XI オプション ヘッダファイルの検索を , 標準のディレクトリより先に , dir で指定されたディレクト リから行うように変更します。標準のディレクトリは , ${INC907} です。 このオプションは複数の指定が可能であり , 指定順に検索されます。オプションが指定 された場合 , ヘッダファイルの検索は , 以下に示すディレクトリの順で行います。 【角括弧 ( <> ) で囲まれたヘッダファイル】 1. -I オプションで指定されたディレクトリ 2. 標準のディレクトリ 【二重引用符 ("") で囲まれたヘッダファイル】 1. #include 行を含むファイルがあるディレクトリ 2. -I オプションで指定されたディレクトリ 3. 標準のディレクトリ July 31, 2015, CM42-00328-9 29 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e S up po r t M a nu al ヘッダファイルが絶対パス名で指定されたときには , 指定された絶対パス名のみ検索 します。もし存在しない dir が指定されたときには , 本オプションは無効となります。 -XI は , -I オプションを取り消します。 ● -U name -Dで指定されたマクロnameの定義を取り消します。本オプションは, 以下に示す#undef 指令に等しくなります。 #undef name -D と -U オプションの両方で , 同じ name が指定されたときには , オプションの指定順 序に関係なく , name の定義を取り消します。本オプションは , 複数の指定が可能です。 -U オプションにおけるエラーは , #undef 指令におけるエラーと同じになります。 【例】 >fcc907s -U m -D n -D m file.c -cpu MB90F553A -D オプションで定義されたマクロ m の定義を取り消します。 30 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e 3.5.3 S u p p o r t M a n u a l 情報出力関連オプション 情報出力関連オプションは , コマンド , プリプロセッサ , およびコンパイラの情報出 力に関するオプションです。 ■ 情報出力関連オプション ● -cmsg オプション コンパイル処理の完了メッセージを出力します。 【例】 操作: fcc907s 出力: COMPLETED -cmsg C -S -cpu MB90F553A sample.c Compile, FOUND NO ERROR : sample.c ● -cwno オプション 警告レベルのエラー発生時の修了コードを 1 にします。このオプションを指定してい ないときの修了コードは 0 です。 ● -help オプションと -Xhelp オプション オプション一覧を標準出力に出力します。 -Xhelp は , -help オプションを取り消します。 【例】 >fcc907s -help コマンドのオプション一覧を標準出力に出力します。 ● -INF LINENO オプションと -INF NOLINENO オプション -INF LINENO オプションは , アセンブラソースファイル内に , C ソースファイルの行番 号をコメントとして挿入することを指定します。 LINENO サブオプションは , SRCIN サブオプションと同時に指定できません。 なお , NOLINENO サブオプションは , LINENO サブオプションを取り消します。 【出力例】 入力: void func(void){} 操作: fcc907s 出力: _func: ;;;; -INF LINENO LINK #0 sample.c, line UNLINK RET -S -cpu MB90F553A sample.c 1 ● -INF LIST オプションと -INF NOLIST オプション -INF LIST オプションは , アセンブルリストを出力します。カレントディレクトリに ソースファイル名の拡張子を .lst に変更したファイルを生成します。アセンブルリスト はアセンブル時に生成されるため , アセンブルを行わないときは生成されません。アセ ンブルリストの詳細については , 『F2MC-16 ファミリ SOFTUNE アセンブラマニュア ル』を参照してください。 July 31, 2015, CM42-00328-9 31 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e S up po r t M a nu al なお , NOLIST サブオプションは , LIST サブオプションを取り消します。 【例】 >fcc907s -INF LIST -cpu MB90F553A sample.c sample.c に対して前処理 , コンパイル処理 , およびアセンブル処理を行った結果を sample.obj に出力し , そのとき生成されたアセンブルリストを sample.lst に出力します。 ● -INF SRCIN オプションと -INF NOSRCIN オプション -INF SRCIN オプションは , アセンブラソースファイル内に , C ソースファイルをコメ ントとして挿入することを指定します。NOSRCIN サブオプションは , SRCIN サブオプ ションを取り消します。 ただし , LINENO サブオプションと同時に指定できません。 【出力例】 入力: void func(void){} 操作: fcc907s -INF SRCIN -S -cpu MB90F553A sample.c 出力: _func: LINK ;;;; #0 void func(void){} UNLINK RET ● -INF STACK [=file] オプションと -INF NOSTACK オプション -INF STACK [=file] オプションは , スタック使用量情報を出力します。カレントディレ クトリに指定されたファイルを生成し , スタック使用量情報を出力します。file が指定 されない場合 , 同時にコンパイルされたすべてのファイルのそれぞれのソースファイ ル名の拡張子を .stk に変更したファイルを生成し出力します。 -K ADDSP オプションを同時に指定した場合, スタックの解放が逐次行われなくなるた め , 生成されるスタック使用量情報は , 不正確になります。このため , SOFTUNE C ア ナライザで計算した最大スタック使用量情報は , 実際の最大使用量よりも小さくなる 可能性がありますので , ご注意ください。 スタック使用量情報の利用方法や情報ファイルの仕様については , 『FR/F2MC ファミ リ SOFTUNE C ANALYZER マニュアル V3 対応』を参照してください。 なお , NOSTACK サブオプションは , STACK サブオプションを取り消します。 【出力例】 入力: extern void void sub(void); func(void){sub();} 操作: fcc907s -INF STACK -S -cpu MB90F553A sample.c 出力: @sample.c # E=Extern # {Stack} # -> # S=Static I=Interrupt {E|S|I} {function name} [A] {E_S} {call function} ... # 32 4 E _func -> E _sub CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l ● -o pathname オプションと -Xo オプション -o pathname オプションは , 出力ファイル名を pathname にします。このオプションを指 定しない場合 , それぞれのファイル形式のデフォルトに従います。 -Xo オプションは , -o オプションを取り消します。 【例】 >fcc907s -o output.asm -S -cpu MB90F553A sample.c sample.c に対して前処理およびコンパイル処理を行った結果を output.asm に出力しま す。 ● -V オプションと -XV オプション -V オプションは , 実行されたコンパイラの各ツールのバージョン情報を , 標準出力に 出力します。なお , -XV オプションは , -V オプションを取り消します。 ● -w level オプション -w level オプションは , 診断メッセージのうち , 警告メッセージの出力レベルを指定し ます。level は , 0 から 8 の間で指定できます。level が 0 の場合 , 警告メッセージは出力 されません。また , level の値が大きいほど多くの警告を出力します。-w level オプショ ンを省略した場合 , -w 1 が適用されます。なお , 診断メッセージの形式の詳細について は , 「3.7 翻訳時メッセージ」を参照してください。警告レベルと警告する項目の関係 については , 表 3.5-3 を参照してください。 【出力例】 入力: const 操作: fcc907s int -w a; 5 -S -cpu MB90F553A sample.c 出力: *** a.c(1) W1219C:'const' シンボル 'a' は初期設定されていません。 July 31, 2015, CM42-00328-9 33 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e S up po r t M a nu al 表 3.5-3 警告レベルごとの警告項目 警告レベル 34 警告項目 レベル 0 警告の抑止 レベル 1 基本的な警告を行う。 レベル 2 レベル 1 に加えて以下の警告を行う。 関数内で使用されない変数について警告を発する。 関数内で初期化される前に使用された変数について警告を発する。 Static 関数の使用の有無について警告を発する。 レベル 3 レベル 2 に加えて以下の警告を行う。 値を返すべき関数で return がない場合について警告を発する。 値を返すべき関数で return に値が指定されていない場合について警告を発す る。 認識できない pragma について警告を発する。 比較演算で定数との比較を行う場合定数の値の範囲について警告を発する。 レベル 4 レベル 3 に加えて以下の警告を行う。 extern 関数がブロック内で宣言された場合について警告を発する。 構造体 / 共用体配列の extern 宣言で構造体 / 共用体の定義がない場合について 警告を発する。 条件式が期待されるところに比較式でなく代入式などが記述されている場合 について警告を発する。 auto 変数のアドレスを関数の戻り値として使用している場合について警告を 発する。 レベル 5 レベル 4 に加えて以下の警告を行う。 暗黙の int 宣言があった場合について警告を発する。 関数のプロトタイプ宣言がない場合について警告を発する。 条件式に定数が記述された場合について警告を発する。 パラメータの暗黙の int 宣言があった場合について警告を発する。 宣言が以前の宣言を隠した場合について警告を発する。 enum メンバの最後にコンマが続いた場合について警告を発する。 const つきの宣言に初期値がない場合について警告を発する。 変数のアドレスが 0 と比較された場合について警告を発する。 キャスト式の中で型定義がなされている場合について警告を発する。 struct, union, 配列変数宣言に register が指定されている場合について警告を発す る。 レベル 6 レベル 5 に加えて以下の警告を行う。 default のない switch がある場合について警告を発する。 unsigned int 型に拡張された場合について警告を発する。 int 型に拡張された場合について警告を発する。 引数に対してポインタ型が必要な場合について警告を発する。 関数の返り値の型が型拡張されない場合について警告を発する。 拡張表記 ( エスケープシーケンス ) '¥x' が指定された場合について警告を発す る。 プロトタイプ宣言の引数の型と関数呼び出し時の実引数の型について , 整数型 同士または浮動小数点型同士で型のサイズが異なる場合に警告を発する。 プロトタイプ宣言の引数の型と関数呼び出し時の実引数の型について , 整数型 同士の型のサイズが一致していても符号が一致していなければ警告を発する。 初期値が指定されていないデータが存在する場合について警告を発する。 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l 表 3.5-3 警告レベルごとの警告項目 警告レベル 警告項目 レベル 7 レベル 6 に加えて以下の警告を行う。 int 型が使われた場合について警告を発する。 ビットフィールドが int, signed int, unsigned int ではない場合について警告を発 する。 プロトタイプ宣言の引数の型と関数呼び出し時の実引数の型について , 両者の 型グループ ( 整数型 , 浮動小数点型 , void, ポインタ型 , その他 ) が異なる場合 に警告を発する。 レベル 8 レベル 7 に加えて以下の警告を行う。 関数へのポインタを使って , 関数が呼び出された場合について警告を発する。 July 31, 2015, CM42-00328-9 35 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e 3.5.4 S up po r t M a nu al 言語仕様関連オプション 言語仕様関連オプションは , コンパイラが認識する言語仕様に関するオプションで す。 ■ 言語仕様関連オプション ● -J {a | c} オプション コンパイラ ( プリプロセッサを含む ) が解釈する , 言語仕様のレベルを指定します。 -Ja を指定した場合 , 拡張仕様を含む , ANSI 規格の仕様で解釈します。-Jc を指定した 場合 , 厳密に ANSI 規格の仕様で解釈します。拡張仕様に対しては , 警告メッセージを 出力します。なお , -J{a|c} オプションを省略した場合 , -Ja が適用されます。 【例】 >fcc907s -J a file1.c -J c file2.c -cpu MB90F553A -Jc オプションが有効となり , ファイル file1.c と file2.c を , 厳密に ANSI 規格の仕様で 解釈します。 ● -K {DCONST | FCONST} オプション FCONST サブオプションは , 接尾語が指定されていない浮動小数点定数を float 型とし て扱います。DCONST サブオプションは , 接尾語が指定されていない浮動小数点定数 を double 型として扱います。省略した場合 , -K DCONST が適用されます。 【出力例】 入力: extern void float f1, f2; func(void){ f1 = f2+1.0;} 操作: fcc907s -K FCONST -cpu MB90F553A -S sample.c 出力: _func: LINK #0 MOVL A, #1065353216 MOVL RL2, A MOVL A, _f2 CALLP FADD MOVL _f1, A UNLINK RET 36 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l ● -K NOINTLIB オプションと -K INTLIB オプション NOINTLIB サブオプションは , 割込み関連関数 (_ _ DI(), _ _ EI(), _ _ set_il()) をインライン 展開せず, 通常の関数呼び出しを行います。なお, INTLIBサブオプションは, NOINTLIB サブオプションを取り消します。 【出力例】 入力: void func(void){ _ _ DI();} 操作: fcc907s -K NOINTLIB -cpu MB90F553A -S sample.c 出力: _func: LINK #0 CALL _ _ _ DI UNLINK RET ● -K NOVOLATILE オプションと -K VOLATILE オプション NOVOLATILE サブオプションは , _ _ io 型修飾子が付けられた変数を volatile 型である と認識しないことを指定します。これにより , _ _ io 型修飾子が付けられた変数が最適 化の対象になります。なお , VOLATILE サブオプションは , NOVOLATILE サブオプ ションを取り消します。 【例】 >fcc907s -K NOVOLATILE -S -O -cpu MB90F553A sample.c sample.c において _ _ io 型修飾された変数を処理するとき volatile 型修飾されている変数 として扱わず , 最適化の対象とします。 ● -K {UCHAR | SCHAR} オプション -K {UCHAR | SCHAR} オプションは , char 型の最上位ビットを符号ビットとして扱う かどうかを指定します。UCHAR サブオプションを指定した場合 , 最上位ビットを符号 ビットとして扱いません。SCHAR サブオプションを指定した場合 , 最上位ビットを符 号ビットとして扱い , 既定義マクロ __SCHAR__ が 1 に定義されます。なお , -K {UCHAR | SCHAR} オプションを省略した場合 , -K UCHAR が適用されます。 【出力例】 入力: extern int data; char void July 31, 2015, CM42-00328-9 c = -1; func(void){ data = c;} 操作: fcc907s -K 出力: MOVX A, _c MOVW _data, A SCHAR -cpu MB90F553A -S sample.c 37 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e S up po r t M a nu al ● -K REALOS オプションと -K NOREALOS オプション REALOS サブオプションは , ITRON システムコール関数をインライン展開します。 REALOS 上で動作するプログラムを記述する場合に利用できます。ITRON システム コール関数については , 『F2MC-16L/16LX/16/16H/16F SOFTUNE REALOS/907 カーネ ルマニュアル』を参照してください。なお , REALOS サブオプションを指定するとき には , 必ず REALOS が提供しているシステムコール宣言用のヘッダファイルをインク ルードしてください。システムコール宣言用ヘッダファイルをインクルードせずに REALOS サブオプションを指定し , システムコールのインライン展開を行った場合 , 引 数の型のチェックが十分に行われていない可能性があるため , 動作は保証されません。 なお , NOREALOS サブオプションは , REALOS サブオプションを取り消します。 【出力例】 入力: #include void "scdef_w.h" func(void){ ext_tsk();} 操作: fcc907s 出力: INTP -K REALOS -cpu MB90F553A -S sample.c ext_tsk BRA * ● -K {UBIT | SBIT} オプション char, short int, int, long int型をビットフィールドに指定したときに, 最上位ビットを符号 ビットとして扱うかどうかを指定します。UBIT サブオプションを指定した場合 , 最上 位ビットを符号ビットとして扱いません。SBIT サブオプションを指定した場合 , 最上 位ビットを符号ビットとして扱います。省略した場合 , -K UBIT が適用されます。 【出力例】 入力: extern int struct void tag{ int bf:1;}st = {-1}; func(void){ data = st.bf;} 操作: fcc907s 出力: data; -K MOVB SBIT -cpu -S sample.c A, _st:0 EXT MOVW MB90F553A ; 符号拡張する _data, A ● -kanji {SJIS | EUC} オプション プログラム中に日本語を記述した場合に使用した日本語のコード系を指定します。 プログラムのコメントおよび文字列中に半角カナ文字を含む日本語を記述できます。 コンパイラは , このオプションの指定により記述されている日本語のコード系を識別 します。SJIS はシフト JIS コード系が使用されていることを意味し , EUC は EUC コー ド系が使用されていることを意味します。省略した場合 , Windows 版と HP-UX 版では -kanji SJIS が , Solaris 版では -kanji EUC が適用されます。 38 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e 3.5.5 S u p p o r t M a n u a l 最適化関連オプション 最適化関連オプションは , コンパイラが行う最適化に関するオプションです。 ■ 最適化関連オプション ● -K SIZE オプション オブジェクトサイズを重視した最適化の組み合わせが選択されます。指定されるオプ ションを以下に示します。 • -O 3 • -K EOPT • -K NOUNROLL SIZE サブオプションより後に , これらのオプションに反するオプション ( 例えば -O0) を指定した場合 , そのオプションが有効になります。-K SIZE オプションは最適化の組 み合わせ指定機能の他に , オブジェクトサイズが最小になるように命令やオブジェク トパターンを生成する機能を持っています。 ● -K SPEED オプション 生成されたオブジェクトの実行スピードを重視した最適化の組み合わせが選択されま す。指定されるオプションを以下に示します。 • -O 4 SPEED サブオプションより後に , これらのオプションに反するオプション ( 例えば -O0) を指定した場合 , そのオプションが有効になります。 -K SPEED オプションは最適化の組み合わせ指定機能の他に , 実行スピードが最速にな るように命令やオブジェクトパターンを生成する機能を持っています。 ● -O [level] オプション -O [level] は , 最適化のレベルを指定します。level には x, 0, 1, 2, 3 または 4 を指定しま す。最適化レベルが高いほど , 生成されたオブジェクトの実行時間が短縮されますが , コンパイル時間は増加します。高位の最適化レベルは , 低位の最適化レベルを機能的に 包含します。level は , 以下に示す機能を持っています。level を省略した場合 , -O2 が適 用されます。 • x ( 最適化レベル取り消し ) 最適化レベル 0 から 4 の最適化を取り消します。 • 0 ( 最適化レベル 0) 限定された最適化を行います。たとえば , 実行されないと判断された文の削除 , 定 数計算や強さの縮小のような演算式を変形する最適化が行われます。-O を指定しな いときと等価です。 • 1 ( 最適化レベル 1) プログラムの流れを詳細に解析して最適化が行われます。 July 31, 2015, CM42-00328-9 39 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e S up po r t M a nu al • 2 ( 最適化レベル 2) 最適化レベル 1 に加えて , 以下に示す最適化が行われます。 - ループアンローリング ループアンローリングとは , ループ回数が検出可能であるときに , ループ回数を 減らすことにより実行速度の向上がはかれますが , オブジェクトサイズが増加す る傾向があります。したがって , オブジェクトサイズを重視する場合 , この最適 化を実施すべきではありません。 ( アンローリング前 ) for(i=0;i<3;i++){ a[i]=0;} ( アンローリング後 ) a[0]=0; a[1]=0; a[2]=0; • 3 ( 最適化レベル 3) 最適化レベル 2 に加えて , 以下に示す最適化が行われます。 - ループアンローリング ( 拡張 ) 最適化レベル 2 におけるループアンローリングで最適化の対象とならなかった分 岐命令を含むループが最適化の対象になります。 - 最適化機能の繰返し実施 最適化機能の繰返し実施は , ループアンローリングを除く最適化機能を , 最適化 の余地がなくなるまで繰り返して実施します。翻訳時間が増加します。 • 4 ( 最適化のレベル 4) 最適化レベル 3 に加えて , 次に示す最適化が行われます。 - 演算の評価方法の変更 (-K EOPT の指定と同じ ) コンパイル段階で , 演算の評価方法を変更する最適化を行います。このオプショ ンを指定した場合には , 実行結果に副作用が生じることがあります。 - 標準関数の展開 / 変更 (-K LIB の指定と同じ ) 標準関数の動作を認識して, 標準関数のインライン展開および同じ動作をする, よ り高速な標準関数への置換えを行います。このオプションを指定した場合には , 実行結果に副作用を及ぼす可能性があります。標準関数のインライン展開が実施 されるため , コードサイズが大きくなる可能性があります。 40 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l ● -K ADDSP オプションと -K NOADDSP オプション -K ADDSP オプションは, 関数呼び出しのためにスタックに積まれた実引数領域の解放 をまとめて行います。この最適化により , 関数呼び出しのオーバヘッドが軽減され , よ り小さく高速なオブジェクトになります。 このオプションを指定したときに , スタックの解放が逐次行われなくなるため , -INF STACK オプションを指定することにより生成されるスタック使用量情報は , 不正確に なります。このため , SOFTUNE C アナライザで計算した最大スタック使用量情報は , 実際の最大使用量よりも小さくなる可能性がありますので , ご注意ください。なお , NOADDSP サブオプションは , ADDSP サブオプションを取り消します。 【出力例】 入力: extern int extern void i; void sub(int); func(void){ sub(i); sub(i); } 操作: fcc907s 出力: -K ADDSP MOVW -cpu MB90F553A -S sample.c A, _i PUSHW A CALL _sub MOVW A, _i PUSHW A CALL _sub ADDSP #4 ; 引数領域の解放を合成 ● -K EOPT オプションと -K NOEOPT オプション EOPT サブオプションは , コンパイル段階で , 演算の評価方法を変更する最適化を行い ます。このオプションを指定した場合には , 実行結果に副作用が生じることがありま す。このオプションは , 最適化レベル 1 以上のときに有効です。なお , NOEOPT サブオ プションは , EOPT サブオプションを取り消します。 【出力例】 入力: extern void int i; func(int a, int b){ i=a-100+b+100; } 操作: fcc907s -K 出力 : MOVW A, @RW3+4 ADDW A, @RW3+6 EOPT MOVW July 31, 2015, CM42-00328-9 -O -cpu MB90F553A ; -S sample.c 演算の順序の入れ換え _i, A 41 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e S up po r t M a nu al ● -K LIB オプションと -K NOLIB オプション LIB サブオプションは , 標準関数の動作を認識して , 標準関数のインライン展開および 同じ動作をする , より高速な標準関数への置換えを行います。このオプションを指定し た場合には , 実行結果に副作用を及ぼす可能性があります。標準関数のインライン展開 が実施されるため , コードサイズが大きくなる可能性があります。このオプションは , 最適化レベル 1 以上のときに有効です。なお , NOLIB サブオプションは , LIB サブオプ ションを取り消します。 【出力例】 入力: extern int i; void func(void){ i=strlen("ABC"); } 操作: fcc907s 出力: -K LIB -O -cpu MOVN A, #3 MOVW _i, A MB90F553A -S sample.c ; strlen と同等の処理を展開 ● -K NOALIAS オプションと -K ALIAS オプション NOALIAS サブオプションは , 異なるポインタは同一の領域を指さないとして , ポイン タにより指されるデータの最適化を行います。このオプションは , 最適化レベル 1 以上 のときに有効です。異なるポインタが同一の領域を指すことは , 言語仕様で許されてい るため , このオプションを利用するときはプログラムを十分確認してください。なお , ALIAS サブオプションは , NOALIAS サブオプションを取り消します。 【出力例】 入力: extern int extern void i; int j; func9(int *p){ *p=i+1; j=i+1; } 操作: fcc907s 出力 : -K NOALIAS MOVW -O -cpu MB90F553A -S sample.c A, _i MOVN A, #1 ADDW A MOVW RW4, A MOVW A, @RW3+4 MOVW @AL, AH MOVW A, RW4 MOVW _j, A ; *p=i+1 の値を再利用している。 ● -K NOUNROLL オプションと -K UNROLL オプション NOUNROLL サブオプションは , ループアンローリングの最適化を抑止します。このオ プションは , -O2 ~ -O4 オプションを指定して , かつ , ループアンローリングの最適化 を抑止したいときに使用します。なお , UNROLL サブオプションは , NOUNROLL サブ オプションを取り消します。 42 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l ● -x 関数名 1 [, 関数名 2, ...] オプションと -Xx オプション -x オプションは , C ソース上で定義された関数に対して , 関数呼び出しの代わりにイン ライン展開を行います。ただし , 再帰的に呼び出される関数についてはインライン展開 の対象にはなりません。また , asm 文の使用や構造体 / 共用体型引数の有無 , setjmp 関 数の呼び出しなどの条件により , インライン展開の対象とならないときがあります。こ のオプションは , 最適化レベル 1 以上のときに有効です。なお , -Xx は , -x オプション を取り消します。 【出力例】 入力: extern int a; static void sub(void){ a=1; } void func(void){ sub(); } 操作: fcc907s -cpu MB90F553A -O -x sub -S sample.c 出力: _func: MOVN A, #1 MOVW _a, A RET ● -xauto [size] オプションと -Xxauto オプション -xauto オプションは , 論理行が size 行以下の関数に対して , 関数呼び出しの代わりにイ ンライン展開を行います。ただし , 再帰的に呼び出される関数についてはインライン展 開の対象にはなりません。また , asm 文の使用や構造体 / 共用体型引数の有無 , setjmp 関数の呼び出しなどの条件により , インライン展開の対象とならないときがあります。 size を省略した場合 , 30 が指定されたものとみなします。このオプションは , 最適化レ ベル 1 以上のときに有効です。なお , -Xxauto は , -xauto オプションを取り消します。 ● -K ARRAY オプションと -K NOARRAY オプション ARRAY サブオプションは , a[i]++; などの配列要素を参照するコードを最適化します。 このオプションは , 最適化レベル 1 以上のときに有効です。ただし , ARRAY サブオプ ションを指定した場合 , 死変数の削除など一部の最適化の効果がなくなることがあり , ソースプログラムによってはコードが悪くなる場合があります。 なお , NOARRAY サブオプションは , ARRAY サブオプションを取り消します。 July 31, 2015, CM42-00328-9 43 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e S up po r t M a nu al ● –K ACCOPT オプションと -K NOACCOPT オプション ACCOPT サブオプションは , 同一定数の連続代入における , アキュムレータへの即値転 送コードを最適化します。このオプションは,最適化レベル 1 以上のときに有効かつ デフォルトで動作します。なお , NOACCOPT サブオプションは , ACCOPT サブオプ ションを取り消します。 【出力例】 入力: extern int a,b,c; void func(void){a=b=c=1;} 操作: fcc907s -K ACCOPT -S -cpu MB90F553A -O sample.c 出力: _func: MOVN A, #1 MOVW _c, A MOVW _b, A MOVW _a, A ● –K BITOPT オプションと -K NOBITOPT オプション BITOPT サブオプションは , ビット操作命令の有効的な生成を行います。このオプショ ンは, 最適化レベル0以上のときに有効かつデフォルトで動作します。なお, NOBITOPT サブオプションは , BITOPT サブオプションを取り消します。 【出力例】 入力: extern int a; void func(void){a|=0x80;} 操作: fcc907s -K BITOPT -S -cpu MB90F553A -O sample.c 出力: _func: SETB _a:7 ● -K LNKOPT オプション LNKOPT サブオプションは , リンク時に未使用関数を削除するために必要な以下の前 処理を行います。 • 未使用関数削除情報ファイル (*.ufi) 出力 • CODE セクションを関数単位に分割 LNKOPT サブオプションを指定すると , -splitsection オプションが有効になります。 未使用関数削除情報ファイル (*.ufi) は -o オプションによる出力ファイルと同じディレ クトリに出力されます。 リンク時に未使用関数を削除する場合は , リンカに -lnkopt オプションを指定してくだ さい。 未使用関数削除機能と -lnkopt オプションの詳細は ,「SOFTUNE リンケージキットマ ニュアル」を参照してください。 省略時は , -K LNKOPT オプションが無効になります。 44 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l ■ 最適化レベルごとに実施する最適化について ● 最適化レベル 0 デバッグ時に非実行文の箇所にブレークポイントが置けなくなる最適化や演算式を変 形する最適化が行われます。-O を指定しない場合と等価です。 - 非実行文の削除 if 文 , while 文などの条件式の真偽判定ができる時や , 無条件分岐などで , 実行さ れない文があるときは , それらのコードを生成しない。 - 定数計算 ( 定数の畳み込み ) 計算可能な定数計算をコンパイル時に行う。 - 強さの縮小 2 のべき乗の定数による乗算をシフト化するなど , より高速な演算に置き換える。 [ 最適化前 ] [ 最適化後 ] a=b*2; a=b<<1; - -K BITOPT の実施 - switch-case のテーブル分岐化 ● 最適化レベル 1 プログラムの流れを詳細に解析して最適化が行われます。 - 直後への分岐の削除 - 連続した分岐の削除 - if 文外実行言の then-else への吸収 if 文の then 節または , else 節のどちらか一方でのみ定義のあるデータがある場合 , if 文外にそのデータの定義文があれば , その文を , 定義のない節に移動する。 また , if 文に else 節がない場合 , else 節に相当する処理単位を作り , その処理単位 に文を移動する。 [ 最適化前 ] [ 最適化後 ] A=x; ( 削除 ) if (...) { if (...) { A=y; A=y; } else { } else { B=z; B=z; A=x; - 共通式の除去 [ 最適化前 ] [ 最適化後 ] t1=a+b; t1=a+b; t2=a+b; t2=t1; July 31, 2015, CM42-00328-9 45 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e S up po r t M a nu al - 定数計算 ( 定数の畳み込み ) 計算可能な定数計算をコンパイル時に行う。 - 定数の伝播 定数が代入された変数の使用を定数で置き換える。 [ 最適化前 ] [ 最適化後 ] a=0; ( 削除 ) /* 以降で a が使用されない */ =a; =0; /*a の参照を 0 で置き換える */ - 非実行文の削除 if 文 , while 文などの条件式の真偽判定ができる時や , 無条件分岐などで , 実行さ れない文があるときは , それらのコードを生成しない。 - ループ内不変式の移動 ループ内で値が変化しない式をループの外に移動する。 - 複写の伝播 [ 最適化前 ] [ 最適化後 ] a=b; ( 削除 ) /* 以降で a が使用されない */ /* この間に a, B の定義がない */ =a; =b; /*a の参照を b で置き換える */ - 死変数の除去 [ 最適化前 ] [ 最適化後 ] a=b; ( 削除 ) /* 以降で a が使用されない */ - 単純代入の除去 [ 最適化前 ] [ 最適化後 ] a=b; a=b; b=a; ( 削除 ) - 強さの縮小 2 のべき乗の定数による乗算をシフト化するなど , より高速な演算に置き換える。 [ 最適化前 ] [ 最適化後 ] a=b*2; a=b<<1; - 関数のインライン展開 (-x func の指定と同じ ) - switch-case のテーブル分岐化 - レジスタ割り付け 46 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l ● 最適化レベル 2 最適化レベル 1 に加えて , 以下の最適化が行われます。 オブジェクトが増加する場合があります。 - ストレートループに対するループアンローリング ● 最適化レベル 3 最適化レベル 2 に加えて , 以下の最適化が行われます。 コンパイル時間が大幅に増加します。 - 出口が 2 つあるループに対するループアンローリング - if 文による分岐があるループに対するループアンローリング - 最適化機能の繰返し実施 ● 最適化レベル 4 最適化レベル 3 に加えて , 以下の最適化が行われます。 - 演算の評価方法の変更 (-K EOPT の指定と同じ ) - 標準関数呼び出しの変更 (-K LIB の指定と同じ ) C の strcpy, strcmp, strlen, memcpy, memset 関数のインライン展開を行う。 July 31, 2015, CM42-00328-9 47 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e 3.5.6 S up po r t M a nu al 出力オブジェクト関連オプション 出力オブジェクト関連オプションは , 出力するオブジェクトの形式に関するオプ ションです。 ■ 出力オブジェクト関連オプション ● -cpu MB 番号オプション -cpu オプションでは , CPU 情報ファイルに記述されている , 実際に使用する CPU の MB 番号を指定します。CPU のシリーズ情報を CPU 情報ファイルから取得するため , CPU 情報ファイルに記述されていない MB 番号を指定すると , エラーになります。 このオプションは , 省略できません。 【例】 >fcc907s -S -cpu MB90F553A sample.c ● -div905 オプションと -Xdiv905 オプション -div905 オプションと -Xdiv905 オプションは , MB90500 シリーズの 「DIV A,Ri」,「DIVW A,RWi」命令の不具合に関してのオプションです。本不具合の詳細につきましては , 「付録 C F2MC-16LX CPU の符号付き除算命令の注意事項について」を参照してくださ い。 -div905 オプションと -Xdiv905 オプションは , fcc907s コマンドにのみ指定でき , -cpu オ プションで MB90500 シリーズの MB 番号を指定した時にのみ有効になります。 -div905 オプションは , DIV/DIVW 命令を生成します。DIV/DIVW 命令を使用しても問 題がない時にのみ指定してください。 -Xdiv905 オプションは, -div905 オプションを取り消します。-cpuオプションで MB90500 シリーズの MB 番号を指定した時に -div905 オプションと -Xdiv905 オプションを省略 した時は , -Xdiv905 オプションが適用されます。 -Xdiv905 オプションが指定された時は , DIV/DIVW 命令ではなく , 実行時ライブラリ呼 び出しとして生成します。そのため , スタック使用量が増加する場合があります。また , ビルトイン関数 __mul(), __div(), __mod() も機械命令ではなく , 実行時ライブラリ呼び 出しとして生成します。 ● -model {SMALL | MEDIUM | COMPACT | LARGE} オプション メモリモデルを指定します。メモリモデルの詳細については , 「4.2 メモリモデル」を 参照してください。 48 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l ● -ramconst オプションと -Xramconst オプション ミラー機能を使用しないときに指定します。const 型修飾された静的変数を RAM に配 置することを指定します。このオプションが指定されると , コンパイラは ROM データ を 16 ビットシンボルでアクセスできるようにするため , CONST セクションに対応す る CINIT セクションを生成します。スタートアップルーチンで CONST 内のデータを CINIT にコピーする必要があります。また , このオプションは , ラージモデルやコンパ クトモデルおよび _ _ far 型修飾された変数に対して生成されるモジュール名 _CONST セクションには作用しません。なお , -Xramconst は , -ramconst オプションを取り消しま す。 【出力例】 入力: const int a=0x10; 操作: fcc907s -ramconst 出力: .SECTION .ALIGN -S -cpu MB90F553A sample.c CONST, CONST, ALIGN=2 2 .DATA.H 16 .SECTION .ALIGN CINIT, DATA, ALIGN=2 2 .GLOBAL _a _a: .RES.H 1 ● -s defname=newname [, attr [, address] ] オプションと -Xs オプション コンパイラが出力するセクション名 defname を newname に変更し , そのセクションの タイプを attr に変更します。 ラージモデルやコンパクトモデル , ミディアムモデルおよび _ _ far 型修飾された変数や 関数のセクション名は , 先頭に "FAR_" をつけることにより指定できます。 配置アドレスを address に指定することもできます。 コンパイラが出力するセクション名については「4.1 セクション構成」を , 指定できる セクションタイプについては『F2MC-16 ファミリ SOFTUNE アセンブラマニュアル』 を参照してください。 配置アドレスを指定した場合 , リンク時にそのセクションに対して配置アドレスは指 定できません。なお , -Xs は , -s オプションを取り消します。 <注意事項> 同じセクション名に対して , 配置アドレスを指定したものと , 指定していないものが混在 した場合の動作は , 保証いたしません。 【出力例】 入力: void func(void){} 操作: fcc907s 出力: July 31, 2015, CM42-00328-9 -s CODE=PROGRAM, CODE, 0x1000 -S -cpu MB90F553A sample.c .SECTION PROGRAM, CODE, LOCATE=H'0:H'1000 ;-------begin_of_function .GLOBAL _func _func: LINK #0 UNLINK 49 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e S up po r t M a nu al RET ● -varorder {SORT | NORMAL} オプション 外部変数および静的変数のセクション内での配置方法を指定します。SORT サブオプ ションを指定した場合 , 境界整合による無駄な領域が発生しないようにするため , 外部 変数および静的変数を並べ替えてセクション内に配置します。これは , メモリ使用量を 小さくする効果があります。NORMAL サブオプションを指定した場合 , 外部変数およ び静的変数を定義順にセクション内に配置します。__io 修飾された変数は , この指定 に関わらず , 定義順に IO セクションに配置されます。 省略した場合 , -varorder SORT が適用されます。 【出力例】 入力: int i1; char c; int i2; 操作: fcc907s -varorder NORMAL -S -cpu MB90F553A sample.c 出力: .SECTION DATA, DATA, ALIGN=2 .ALIGN 2 _i1: .RES.B 2 _c: .RES.B 1 .ALIGN 2 .RES.B 2 _i2: ● -pack オプションと -Xpack オプション -pack オプションを指定した場合 , 構造体 / 共用体のメンバの配置において隙間を空け ません。 なお , -Xpack は , -pack を取り消します。 【出力例】 入力:struct tag { char a; int b; char c; } s; f() {s.b=0;} 操作:fcc907s -cpu MB90F553A -S -pack sample.c 出力: MOVN A, #0 MOVW _s+1, A ● -K BITFIELD_ORDER_LSB オプションと -K BITFIELD_ORDER_MSB オプション BITFIELD_ORDER_LSBサブオプションは, ビットフィールドメンバの配置方向をLSB 側から配置します。BITFIELD_ORDER_MSB サブオプションは , ビットフィールドメ ンバの配置方向を MSB 側から配置します。BITFIELD_ORDER_MSB サブオプション が指定された場合 , 既定義マクロとして , __BITFIELD_ORDER_MSB__ が定義されま す。ビットフィールドメンバの配置方向が異なるため , BITFIELD_ORDER_MSB サブ オプションを指定したオブジェクトとそうでないオブジェクトをリンクした場合は正 常に動作しません。 50 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l ● -align { DIR1 | DIR2 | FUNC1 | FUNC2 } オプションと -Xalign オプション DIR1 サブオプションが指定された時は , __direct 型修飾された変数の境界整合値を 1 に します。DIR2 サブオプションが指定された時は , __direct 型修飾された変数の境界整合 値を 2 にします。 FUNC1 サブオプションが指定された時は,CODE セクションの境界整合値を 1 にしま す。 FUNC2 サブオプションが指定された時は,CODE セクションの境界整合値を 2 にしま す。 #pragma section または #pragma segment で align= または locate= が指定された場合, #pragma section または #pragma segment による指定が優先されます。 -s オプションで address が指定された場合,-s オプションの指定のほうが優先されます。 #pragma section で align= 指定または locate= 指定が記述されなかった場合,-align オプ ションの指定が有効になります。 #pragma segment で align= 指定または locate= 指定が記述されなかった場合,各セクショ ンのデフォルト境界値になります。 #pragma section および #pragma segment の詳細については「5.7 セクション名の変更機 能」を参照してください。 DIR1 と DIR2 の指定は排他です。後に指定されたほうが有効になります。 FUNC1 と FUNC2 の指定は排他です。後に指定されたほうが有効になります。 省略した場合 , -align DIR2 -align FUNC1 が適用されます。 なお , -Xalign オプションは , -align オプションを取り消します。 【出力例】 入力: __direct int a; __direct char b; 操作: fcc907s -align 出力: .SECTION DIR1 -cpu MB90F553A -S sample.c DIRDATA, DIR, ALIGN=1 .GLOBAL _a _a: .RES.B 2 .GLOBAL _b _b: .RES.B 1 ● -rp オプションと -Xrp オプション -rp オプションは , 関数呼び出しインタフェースを , 「引数のレジスタ渡し」( 関数の引 数をレジスタ (RW0, RW1) で受け渡すインタフェース ) に変更します。 なお , -Xrp オプションは , -rp オプションを取り消します。 従来の関数呼び出しインタフェースを変更する場合 , 「付録 D 関数呼び出しインタ フェース変更ガイド」を参照してください。 【出力例】 入力: 操作: 出力: July 31, 2015, CM42-00328-9 int func(int a, int b){ return a + b; } fcc907s -rp -O -cpu MB90F553A _func: -S sample.c 51 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e MOVW ADDW RET A, RW0 A, RW1 S up po r t M a nu al ; 実引数 a をレジスタで受け渡し ; 実引数 b をレジスタで受け渡し <注意事項> -rp オプション指定時には , "_rp" 付きのライブラリをリンクしてください。 関数呼び出しインタフェースの異なるオブジェクトを混在してリンクした場合の動作は 保証されません。 ● -dF filename オプションと -XdF オプション -dF オプションは , filename として SOFTUNE C ANALYZER の「__direct 検査」機能で 生成されたデータファイルを指定します。これにより , __direct 型修飾子を簡単かつ , 効果的に使用できます。 -dF オプションを指定すると , __direct 型修飾された変数が配置されるセクションの境 界整合値は 1 になります。境界整合値を 2 にする場合は , -dF オプションの後ろに -align DIR2 オプションを指定してください。 なお , -XdF オプションは , -dF オプションを取り消します。 このオプションは , Windows 版コンパイラでのみ有効です。 <注意事項> SOFTUNE C ANALYZER の「__direct 検査」機能で生成されたデータファイル以外を指 定した場合の動作は保証されません。 ● -Xinittbl オプションと -inittbl オプション -Xinittblオプションは, __far型修飾子が指定されたデータ領域を初期化するためのテー ブルを生成しません。このオプションは , 0x10000 番地以降に外部 I/O 領域を定義する 場合に指定してください。 -Xinittbl オプションの指定がない時は , 初期化のためのテーブルを生成します。 なお , -inittbl オプションは , -Xinittbl オプションの指定を取り消します。 ● -splitsection オプション -splitsection オプションは , CODE セクションを関数単位に分割します。 関数単位に分割された CODE セクションの命名規則は , 以下の通りです。 <CODE セクション名 >_< ソースファイル名 >_< 関数名 > <CODE セクション名 > CODE セクションの名前です。 CODE セクションの名前のデフォルトは ,"CODE" です。 セクション名の変更機能で変更された場合 , この部分は変更されたセクション名に なります。 < ソースファイル名 > ソースファイルの拡張子を除いたファイル名です。 52 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e S u p p o r t M a n u a l ファイル名にモジュール名として使用できない文字が含まれている場合 , アンダ バー '_' に置換します。 (「3.3 ファイル名とディレクトリ名」参照 ) < 関数名 > 関数名です。 【例】 入力: void func1(void){} #pragma segment CODE=PROG void func2(void{} 操作: fcc907s -splitsection -S -cpu MB90F553A sample.c 出力: .SECTION CODE_sample_func1, CODE, ALIGN=1 ;-------begin_of_function .GLOBAL _func1 _func1: LINK #0 UNLINK RET .SECTION PROG_sample_func2, CODE, ALIGN=1 ;-------begin_of_function .GLOBAL _func2 _func2: LINK #0 UNLINK RET -K LNKOPT オプションが指定された場合 ,-splitsection オプションが有効になります。 -K LNKOPT オプションと -splitsection オプションを省略した時は ,-splitsection オプショ ンは無効になります。 July 31, 2015, CM42-00328-9 53 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e 3.5.7 S up po r t M a nu al デバッグ情報関連オプション デバッグ情報関連オプションは , シンボリックデバッガが参照するデバッグ情報に 関するオプションです。 ■ デバッグ情報関連オプション ● -g オプションと -Xg オプション -g オプションは , デバッグ情報を , オブジェクトファイルに追加します。 -Xg オプションは , -g オプションを取り消します。 最適化関連のオプションを指定したときは , 以下の点に注意してデバッグしてくださ い。 • ブレークポイントが指定できない場合があります 該当行が移動または , 削除されることがあるため , ブレークポイントが指定できな い場合があります。 • ブレークポイントが複数同時に設定される場合があります 命令が削除された行が連続する場合があるため , ブレークポイントが複数同時に設 定される場合があります。 • 指定したブレークポイントで停止しない場合があります 該当行が移動または , 削除されることがあるため , 指定したブレークポイントで停 止しない場合があります。 • ウォッチウィンドウに表示される変数の値が正しくない場合があります 変数に値を格納する命令が移動することがあるため , 更新されるタイミングが C ソースと一致しない場合があります。 ひとつのレジスタが複数の変数に割り当てられることがあるため , 更新されるタイ ミングが C ソースと一致しない場合があります。 • ローカル変数および , 仮引数が参照できない場合があります 最適化されたローカル変数および , 仮引数については , デバッガで参照できない場 合があります。 • コールスタック機能および , ステップアウト機能が使用できない場合があります 関数の出入口コードが最適化された場合にデバッガでコールスタック機能 (SHOW CALLS コマンド ) および , ステップアウト機能 (GO /RETURN コマンド ) が使用で きなくなります。 • 関数のインライン展開オプション (-x func または , -xauto) を指定したときは , ソース ウィンドウに表示される C ソースが正しくない場合があります 54 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.5 オプションの詳細 S o ft w a r e 3.5.8 S u p p o r t M a n u a l コマンド関連オプション コマンド関連オプションは , コマンドが呼び出す他のツールに関するオプションで す。 ■ コマンド関連オプション ● -Y item, dir オプションと -XY オプション item の位置を , ディレクトリ dir に変更します。 -XY は , -Y オプションを取り消します。 item は , 以下に示すいずれかです。 • p:プリプロセッサのパス名を dir に変更 • c:コンパイラのパス名を dir に変更 • a:アセンブラのパス名を dir に変更 【例】 >fcc907s file.c -Yp,\home\newlib -cpu MB90F553A プリプロセッサを , ¥home¥newlib¥cpps として呼び出します。 ● -T item, arg1 [, arg2...] オプションと -XT オプション -T オプションは , コンパイラの各ツールの引数として , item に arg を渡します。 -XT は , -T オプションを取り消します。各々の引数は , カンマによって区切られます。引数に カンマを記述したいときには , カンマの直前にバックスラッシュ "\" を付加してくださ い。バックスラッシュに続くカンマは , 引数の区切りとして解釈しません。また , 引数 に空白を記述したいときには , 空白の代わりにカンマを記述してください。なお , 各コ マンドのオプションについては , それぞれのマニュアルを参照してください。item に は , 以下が指定できます。 • a:アセンブラ 【例】 >fcc907s -Ta,-lf,asmlist file.c -cpu MB90F553A アセンブラに , 引数 "-lf" と "asmlist" を順に渡します。したがって , コマンドの実行結 果として , アセンブルリスト asmlist が生成されます。 July 31, 2015, CM42-00328-9 55 第 3 章 C コンパイラの操作 3.5 オプションの詳細 So ft war e 3.5.9 S up po r t M a nu al オプションファイル関連オプション オプションファイル関連オプションは , オプションファイルに関するオプションで す。 ■ オプションファイル関連オプション ● -f filename オプションと -Xf オプション -f オプションは , 指定したオプションファイル filename を読み込みます。オプション ファイル名に拡張子を省略した場合 , 拡張子 ".opt" を補います。オプションファイルに は , コマンドのオプションが記述できます。オプションファイルに関しては , 「3.6 オ プションファイル」を参照してください。なお , -Xf は , -f オプションを取り消します。 ● -Xdof オプション -Xdof オプションは , デフォルトオプションファイルを読み込まないことを指定しま す。デフォルトオプションファイルに関しては , 「3.6 オプションファイル」を参照し てください。 56 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.6 オプションファイル S o ft w a r e 3.6 S u p p o r t M a n u a l オプションファイル コマンドのオプションファイルについて説明します。オプションをファイルに記述 しておき , 一括指定できます。この機能により , 指定する起動時オプションなどを ファイルにすることができます。 ■ オプションファイル オプションを指定することにより , オプションファイルを読み込みます。これにより , オプションをコマンドラインの -f を指定した位置で指定した場合と同じ結果が得られ ます。オプションファイル名に拡張子を省略した場合 , '.opt' を補います。 ● オプションファイルの記述形式 オプションファイルには , コマンドラインに記述できるすべてのものが記述できます。 オプションファイル中の改行は , 空白に置き換えられます。オプションファイル中のコ メントは , 空白に置き換えられます。 【例】 -I -D -g -S /usr/include F2MC16 # # # # インクルード指定 マクロ指定 デバッグ情報生成指定 コンパイルまで実行 ■ オプションファイルの制限 オプションファイルに記述できる一行の長さは , 4095 文字以内です。オプションファ イル内に -f オプションを記述できますが , 最大のネストレベルは 8 レベルです。 オプションファイル中の漢字コードは , ご使用頂くホストの漢字コードと同じにして ください。コマンドライン上の漢字コードとオプションファイル中の漢字コードが異 なる場合の動作は保証いたしません。 OS 種別 使用できる漢字コード Windows ShiftJIS Solaris2.x EUC HP-UX10.x ShiftJIS ■ オプションファイルに記述できるコメント コメントは , 任意のカラムから始めることができます。コメントは , シャープ (#) で始 まります。行終端までコメントになります。その他に以下のコメントも使用できます。 • /* コメント */ • // コメント • ; コメント 【例】 -I -D -g -S July 31, 2015, CM42-00328-9 /usr/include F2MC16 # /* // ; インクルード指定 マクロ指定 */ デバッグ情報生成指定 コンパイルまで実行 57 第 3 章 C コンパイラの操作 3.6 オプションファイル So ft war e S up po r t M a nu al ■ デフォルトオプションファイル あらかじめ指定されているオプションファイルを読み込み , コマンドを実行します。オ プションをコマンドラインで指定したオプションより前で指定した場合と同じ結果が 得られます。なお , デフォルトオプションファイル名は , 以下のように決められていま す。 【UNIX 系 OS の場合】 ${OPT907}/fcc907.opt 【WINDOWS の場合】 %OPT907%\fcc907.opt デフォルトオプションファイル名は fcc907.opt です。指定されたディレクトリにデフォ ルトオプションファイルが存在しない場合 , 指定を無視します。デフォルトオプション ファイル機能を抑止する場合 , オプション -Xdof をコマンドラインで指定してくださ い。 58 CM42-00328-9, July 31, 2015 第 3 章 C コンパイラの操作 3.7 翻訳時メッセージ S o ft w a r e 3.7 S u p p o r t M a n u a l 翻訳時メッセージ 翻訳時のメッセージには , ソースプログラムに誤りがあったときや , 注意を促すよう な事柄があったときに出力される診断メッセージがあります。コンパイラ以外の ツールが出力するメッセージについては , それぞれのツールのマニュアルを参照し てください。 ■ 翻訳時メッセージ 診断メッセージの出力例を図 3.7-1 に示します。 図 3.7-1 診断メッセージの例 *** test.c(4) E4110C: 識別子‘a’が宣言されていません エラー識別番号 ソース中の論理行番号 E4110C: ツール識別子 ソースファイル名 エラー番号(4桁) エラーレベル ■ ツール識別子 ツール識別子は , 誤りを検出したツールを表しています。 • D:コマンド • P:プリプロセッサ • C:コンパイラ • A:アセンブラ July 31, 2015, CM42-00328-9 59 第 3 章 C コンパイラの操作 3.7 翻訳時メッセージ So ft war e S up po r t M a nu al ■ エラーレベル エラーレベルは診断の種別を表しています。エラーレベルと復帰コードの関係とその 意味を表 3.7-1 に示します。 表 3.7-1 エラーレベルと復帰コードの関係 60 エラーレベル 復帰コード 意味 I 0 エラーではないが , 注意を促すメッセージです。 W 0 軽度のエラーを示すメッセージであり , そのまま処理を続行 します。復帰コードは , -cwno オプションにより変更できま す。 E 2 重度のエラーを示すメッセージであり , 処理を打ち切りま す。 F 3 致命的な誤り , 定量制限またはシステムの障害であり , 処理 を打ち切ります。 CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 第4章 オブジェクトプログラムの 構成 プログラムを実行する上で必要なことについて説 明します。 4.1 セクション構成 4.2 メモリモデル 4.3 コンパイラで使用する名前の生成規則 4.4 境界整合 4.5 ビットフィールド 4.6 構造体 / 共用体 4.7 関数呼び出しインタフェース ( 引数のスタック渡し ) 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) 4.9 割込み関数呼び出しインタフェース July 31, 2015, CM42-00328-9 61 第 4 章 オブジェクトプログラムの構成 4.1 セクション構成 So ft war e 4.1 S up po r t M a nu al セクション構成 表 4.1-1 は , コンパイラが生成するセクションとその意味を示しています。24 ビッ トシンボルでアクセスするセクションのセクション名は , 各セクション名の末尾に "_ モジュール名 " を付けたものになります (-s オプションで指定するセクション名 は ,"FAR_ セクション名 " になります )。モジュール名にはソースファイル名が流用 されます。-s オプションでセクション名を変更した場合 , 変更したセクション名に なります。 ■ セクション構成 表 4.1-1 セクション一覧 No. セクションの種類 セクション タイプ 境界整合 (BYTE) 書込み 初期値有無 CODE CODE 1 否 有 INIT DATA 2 可 無 DCONST CONST 2 否 有 CONST CONST 2 否 有 1 Code section 2 Initialized section 3 Initial value of INIT 4 Constant section 5 RAM area of CONST CINIT DATA 2 可 無 6 Data section DATA DATA 2 可 無 7 Initialized direct section DIRINIT DIR 2 可 無 8 Initial value of DIRINIT DIRCONST DIRCONST 2 否 有 9 Direct section DIRDATA DIR 2 可 無 10 I/O section IO IO 2 可 無 11 Vector section INTVECT CONST 2 否 有 12 Data transfer section DTRANS CONST 2 否 有 13 Data clear section DCLEAR CONST 2 否 有 それぞれのセクションについて使用目的と , C 言語との対応について説明します。 ● Code section Code section は , マシンコードを格納します。C 言語では , 手続き部に対応します。デ フォルトのセクション名は CODE です。 ● Initialized section Initialized section は , 初期値付き変数領域を格納します。C 言語では , const 属性なしの 外部変数 , 静的外部変数 , 静的内部変数に対応します。デフォルトのセクション名は INIT です。 62 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.1 セクション構成 S o ft w a r e S u p p o r t M a n u a l ● Initial value of INIT Initial value of INIT は , 初期値付き変数の初期値を格納します。このセクションは ROM に配置されます。スタートアップルーチンで DCONST のデータを INIT にコピーする 必要があります。コンパイラが出力するセクションの順番を入れ換えたりすることに より , DCONST と INIT の対応がとれなくなった場合 , 動作は保証されません。デフォ ルトのセクション名は DCONST です。 ● Constant section Constant sectionは, 書き換え不可の初期値付き変数領域を格納します。C言語では, const 属性付きの外部変数 , 静的外部変数 , 静的内部変数に対応します。デフォルトのセク ション名は , CONST です。 ● RAM area of CONST RAM area of CONST は , ミラー機能が使用できないタイプの CPU を使うときに , -ramconst オプションを指定することによりこのセクションが生成されます。スタート アップルーチンで CONST のデータを CINIT にコピーする必要があります。コンパイ ラが出力するセクションの順番を入れ換えたりすることにより , CONST と CINIT の対 応がとれなくなった場合, 動作は保証されません。デフォルトのセクション名は, CINIT です。 ● Data section Data section は , 初期値なし変数領域を格納します。 C 言語では , (const 属性付きも含む ) 外部変数 , 静的外部変数 , 静的内部変数に対応します。デフォルトのセクション名は , DATA です。 ● Initialized direct section Initialized direct section は , _ _ direct 型修飾された初期値付き変数領域を格納します。C 言語では , _ _ direct 型修飾された const 属性なしの外部変数 , 静的外部変数 , 静的内部変 数に対応します。デフォルトのセクション名は , DIRINIT です。 ● Initial value of DIRINIT Initial value of DIRINIT は , _ _ direct 型修飾された初期値付き変数の初期値を格納しま す。このセグメントは ROM に配置されます。スタートアップルーチンで DIRCONST のデータを DIRINIT にコピーする必要があります。コンパイラが出力するセクション の順番を入れ換えたりすることにより , DIRCONST と DIRINIT の対応がとれなくなっ た場合 , 動作は保証されません。デフォルトのセクション名は , DIRCONST です。 ● Direct section Data direct section は , _ _ direct 型修飾された初期値なし変数領域を格納します。C 言語 では , _ _ direct 型修飾された (const 属性付きも含む ) 外部変数 , 静的外部変数 , 静的内部 変数に対応します。デフォルトのセクション名は , DIRDATA です。 ● I/O section Data I/O section は , _ _io 型修飾された変数領域を格納します。C 言語では , _ _ io 型修飾 された (const 属性付きも含む ) 外部変数 , 静的外部変数 , 静的内部変数に対応します。 デフォルトのセクション名は , IO です。 July 31, 2015, CM42-00328-9 63 第 4 章 オブジェクトプログラムの構成 4.1 セクション構成 So ft war e S up po r t M a nu al ● Vector section Vector section は , 割込みベクタテーブルを格納します。C 言語では , #pragma intvect で ベクタテーブルの生成を指定された場合にのみ生成されます。デフォルトのセクショ ン名は , INTVECT です。 ● Data transfer/Data clear section Data transfer/Data clear section は , 外部変数領域の初期化のためのデータテーブルです。 詳細は , 「第 6 章 実行環境」を参照してください。 64 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.2 メモリモデル S o ft w a r e 4.2 S u p p o r t M a n u a l メモリモデル メモリモデルについて説明します。 ■ メモリモデル 表 4.2-1 は , コンパイル時に選択できるメモリモデルとその意味を示しています。コン パイラは , コードのアドレスやデータのアドレスのデフォルトを , 指定されたメモリモ デルとします。変数または関数に , _ _ far/_ _ near 型修飾子をつけた場合 , 型修飾子の指 定に従います。 表 4.2-1 メモリモデル一覧 メモリモデル コードのアドレス空間 データのアドレス空間 コンパイルオプション スモールモデル 16 ビット 16 ビット -model small ミディアムモデル 24 ビット 16 ビット -model medium コンパクトモデル 16 ビット 24 ビット -model compact ラージモデル 24 ビット 24 ビット -model large ● スモールモデル スモールモデルは , コードおよびデータのすべてが 16 ビットのアドレス空間内に配置 できるときに指定します。アドレスをすべて 16 ビットで表現するため , コンパクトで 高速なプログラムが実現できます。ミラー機能を持たない品種を使うときには , ROM のデータをアクセスするための領域を RAM 上に確保するため , -ramconst オプション を指定する必要があります。型修飾子によるアドレスサイズの指示があるときには , そ の指示に従います。_ _ far 型修飾された関数から , _ _ near 型修飾された関数を呼び出す 場合 , 両方の関数が同じセクションに配置されていなければなりません。これは , _ _ far 型修飾された関数を呼び出すときに設定された PCB が _ _ near 型修飾された関数の呼 び出しに対してそのまま使用されるためです。 ● ミディアムモデル ミディアムモデルは , コードを 24 ビットのアドレス空間に配置し , データを 16 ビット のアドレス空間内に配置できるときに指定します。ミラー機能を持たない品種を使う ときには , ROM のデータをアクセスするための領域を RAM 上に確保するため , -ramconst オプションを指定する必要があります。型修飾子によるアドレスサイズの指 示があるときには , その指示に従います。 ● コンパクトモデル コンパクトモデルは , コードを 16 ビットのアドレス空間に配置し , データを 24 ビット のアドレス空間内に配置できるときに指定します。型修飾子によるアドレスサイズの 指示があるときには , その指示に従います。 変数はバンクの境界を越えて配置できません。このような配置を行った場合 , プログラ ム中で , データへのアクセスが正常にできないため注意してください。 July 31, 2015, CM42-00328-9 65 第 4 章 オブジェクトプログラムの構成 4.2 メモリモデル So ft war e S up po r t M a nu al ● ラージモデル ラージモデルは , コードおよびデータのすべてが 24 ビットのアドレス空間内に配置で きるときに指定します。ラージモデルでは , アドレスをすべて 24 ビットで表現するた め , スモールモデルに比べ , 冗長なコードになります。型修飾子によるアドレスサイズ の指示があるときには , その指示に従います。 変数はバンクの境界を越えて配置できません。このような配置を行った場合 , プログラ ム中で , データへのアクセスが正常にできないため注意してください。 66 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.3 コンパイラで使用する名前の生成規則 S o ft w a r e 4.3 S u p p o r t M a n u a l コンパイラで使用する名前の生成規則 コンパイラで使用する名前の規約について説明します。 ■ コンパイラで使用する名前の生成規則 表 4.3-1 は , コンパイラ生成する名前と C 言語との対応を示しています。 表 4.3-1 ラベル生成規約 C 言語対応 コンパイラ生成ラベル 関数名 _ 関数名 外部変数名 _ 外部変数名 静的変数名 LI_no ローカル変数名 - 仮引数名 - 文字列 , 派生型 LS_no 自動変数の初期値 LS_no 飛び先ラベル L_no 備考 ) no は , コンパイラが内部生成する番号が付けてあります。 July 31, 2015, CM42-00328-9 67 第 4 章 オブジェクトプログラムの構成 4.4 境界整合 So ft war e 4.4 S up po r t M a nu al 境界整合 標準データの型 , および境界整合について説明します。表 4.4-1 に割り付け規則を示 します。 ■ 境界整合 表 4.4-1 変数の割り付け規則 変数の型 割付けサイズ (BYTE) 境界整合 (BYTE) char 1 1 signed char 1 1 unsigned char 1 1 short 2 2 unsigned short 2 2 int 2 2 unsigned int 2 2 long 4 2 unsigned long 4 2 float 4 2 double 8 2 long double 8 2 near ポインタ / アドレス 2 2 far ポインタ / アドレス 4 2 ( 後述 ) ( 後述 ) 構造体 / 共用体 68 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.5 ビットフィールド S o ft w a r e 4.5 S u p p o r t M a n u a l ビットフィールド ビットフィールドデータのサイズ , および境界整合について説明します。ビット フィールドデータは , それを保持するために十分な大きさのもっとも小さいアドレ スの記憶単位に割り付けられます。 ■ ビットフィールド 連続するビットフィールドデータは , 型に関係なく同じ記憶単位の隣接したビットに LSB から MSB へ詰め込まれます。図 4.5-1 に例を示します。 図 4.5-1 ビットフィールドデータのサイズと境界整合例 1 struct tag1{ int A:10; short B:3; char C:2; }; 15(MSB) 13 空き 0(LSB) 10 B C A 割り付けられるフィールドがビットフィールドの型の境界を越える場合 , その型に適 した境界に整列して割り付けられます。long int 型のビットフィールドの型の境界は , 4 とみなして整列されます。図 4.5-2 に例を示します。 図 4.5-2 ビットフィールドデータのサイズと境界整合例 2 struct tag2{ long int short char }; 31(MSB)28 空き A:12; /* 2byte 境界データ */ B:5; /* 2byte 境界データ */ C:5; /* 1byte 境界データ */ 24 C July 31, 2015, CM42-00328-9 21 空き 16 B 12 空き 0(LSB) A 69 第 4 章 オブジェクトプログラムの構成 4.5 ビットフィールド So ft war e S up po r t M a nu al ビット長が0のビットフィールドが宣言されると, 強制的に次の記憶単位に割り付けら れます。図 4.5-3 に例を示します。 図 4.5-3 ビットフィールドデータのサイズと境界整合例 3 struct tag3{ int A:5; int B:5; int :0; int C:6; }; 15(MSB) 10 空き 5 0(LSB) A B 空き 70 6 C CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.6 構造体 / 共用体 S o ft w a r e 4.6 S u p p o r t M a n u a l 構造体 / 共用体 構造体 / 共用体データのサイズ , および境界整合について説明します。構造体 / 共用 体データのサイズは , そのメンバの中で最大の境界整合の値の倍数となります。ま た , その領域自身の境界整合はメンバの最大の境界整合で行い , 各々のメンバは , そ のメンバの型により境界整合が行われます。 ■ 構造体 / 共用体 図 4.6-1 , 図 4.6-2 , 図 4.6-3 に , 構造体 / 共用体データのサイズと境界整合についての例 を示します。 図 4.6-1 構造体 / 共用体データのサイズと境界整合例 1 struct struct struct struct st1 st2 st3 st4 { { { { char short char int A; A; A; A; } } short B; } char B; } -> -> -> -> sizeof(st1) sizeof(st2) sizeof(st3) sizeof(st4) = = = = 1 2 4 4 BYTE BYTES BYTES BYTES メンバの オフセット struct tag3 { char A; short B; }; A +0 空き +1 +2 .B 図 4.6-2 構造体 / 共用体データのサイズと境界整合例 2 struct tag4 { char A; int B; }; メンバの オフセット .B July 31, 2015, CM42-00328-9 A +0 空き +1 +2 71 第 4 章 オブジェクトプログラムの構成 4.6 構造体 / 共用体 So ft war e S up po r t M a nu al 図 4.6-3 構造体 / 共用体データのサイズと境界整合例 3 struct tag5{ char A; struct tag6{ int A; char B; }S6; }; メンバの オフセット A +0 +1 +2 S6.A S6.B +4 +5 72 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.7 関数呼び出しインタフェース ( 引数のスタック渡し ) S o ft w a r e 4.7 S u p p o r t M a n u a l 関数呼び出しインタフェース ( 引数のスタック渡し ) 関数間の制御の受け渡しに関する一般的な形式を , 各アーキテクチャでの標準規約 として定めています。この規約を標準リンケージ規約とよびます。この標準リン ケージ規約に基づくことにより , C 言語で記述したモジュールと , 他の手法 ( 例えば アセンブラ言語 ) により記述したモジュールとの結合が可能になります。 ■ 関数呼び出しインタフェース ( 引数のスタック渡し ) ● スタックフレーム 標準リンケージ規約では , スタックフレームの構成を規定しています。 ● 引数 呼び出し先関数への引数の受け渡しは , スタックを介して行います。 ● 引数の拡張形式 引数をスタックに格納する場合 , 各引数の型に応じて , 引数の型を拡張形式に変換して 格納します。 ● 呼び出し手続き 呼び出し元関数は , 引数を格納した後に呼び出し先関数へ分岐します。 ● レジスタ 標準リンケージ規約におけるレジスタの保証およびレジスタの設定の規約について説 明します。 ● 戻り値 標準リンケージ規約における戻り値インタフェースについて説明します。 July 31, 2015, CM42-00328-9 73 第 4 章 オブジェクトプログラムの構成 4.7 関数呼び出しインタフェース ( 引数のスタック渡し ) So ft war e 4.7.1 S up po r t M a nu al スタックフレーム ( 引数のスタック渡し ) 標準リンケージ規約では , スタックフレームの構成を規定しています。 ■ スタックフレーム ( 引数のスタック渡し ) スタックポインタ (SP) は , 常にスタックフレームの最下位を指し示しており , そのア ドレス値は常にワード境界です。図 4.7-1 に標準的な関数のスタックフレームの状態を 示します。 図 4.7-1 スタックフレーム ( 引数のスタック渡し ) (Low) SP 戻り値アドレス退避域 レジスタ退避域 ローカル変数領域 FP 旧FP 戻り値番地格納領域 仮引数領域 戻り値領域 (High) ● 戻り値アドレス退避域 戻り値アドレス退避域は , 構造体 / 共用体 /double または long double 型を返す関数にお いて , 戻り値を格納する領域の先頭アドレスを格納するための領域です。構造体 / 共用 体を戻り値とするときには , 呼び出し元関数が戻り値を格納する領域の先頭アドレス をアキュムレータ AL に格納して , 呼び出し先関数に渡します。また , 呼び出し先関数 はアキュムレータ AL に格納されたアドレスを戻り値の格納領域の先頭アドレスとし て解釈します。呼び出し先関数は , アキュムレータ AL に格納された戻り値アドレスを メモリに退避する必要がある場合 , この領域に退避します。 ● レジスタ退避域 レジスタ退避域は , 呼び出し元関数に対して , 保証しなければならないレジスタを退避 するための領域です。退避の必要がない場合 , この領域を確保しません。 ● ローカル変数領域 ローカル変数領域は , ローカル変数や , 一時域のための領域です。 ● 旧 FP 呼び出し元関数のフレームポインタ (RW3) の値を格納する領域です。 74 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.7 関数呼び出しインタフェース ( 引数のスタック渡し ) S o ft w a r e S u p p o r t M a n u a l ● 戻り番地格納領域 呼び出し元関数への復帰アドレスを格納するための領域です。この領域は , 関数を呼び 出すときに , 呼び出し元関数で設定されます。 ● 実引数領域 , 仮引数領域 関数呼び出しを行うときに , 引数の受渡しをするための領域です。呼び出し元関数で引 数を設定するときに実引数領域といい , 呼び出し先関数で引数を参照するときに仮引 数領域といいます。詳細は ,「4.7.2 引数 ( 引数のスタック渡し )」を参照してください。 ● 戻り値領域 構造体 , 共用体 , double, long double 型を返す関数を呼び出すときに呼び出し元の関数が 確保します。必ずしも , この位置に領域を確保する必要はありませんが , 呼び出し先関 数は , この領域がスタック上に確保されているものとして処理を行なうため , スタック 以外にこの領域を確保したときの動作は保証されません。コンパイラは , double, long double 型を返す関数の戻り値領域を実引数領域に重複して確保します。これは , 特定の ケースにおいて , オブジェクト効率を向上させるために行っています。このため , double, long double 型を返す関数が戻り値を戻り値領域に格納する場合 , 上位アドレス から下位アドレスへと行ってください。また , 書込みはすべての仮引数の参照が完了し てから行ってください。 July 31, 2015, CM42-00328-9 75 第 4 章 オブジェクトプログラムの構成 4.7 関数呼び出しインタフェース ( 引数のスタック渡し ) So ft war e 4.7.2 S up po r t M a nu al 引数 ( 引数のスタック渡し ) 呼び出し先関数への引数の受け渡しは , スタックを介して行います。2 バイトに満た ない引数や , 2 で割り切れないサイズの引数は 2 バイト単位で切り上げたサイズの領 域がスタック上に確保されます。 実引数領域は , 呼び出し元関数で取得 / 解放します。 ■ 引数 ( 引数のスタック渡し ) 図 4.7-2 に呼び出し先関数への引数の受け渡しの例を示します。 図 4.7-2 標準リンケージ規約における引数形式 ( 引数のスタック渡し ) struct A{ char A; }st; extern void sub(char, struct A, int); sub(1, st, 2); (Low) 1 空き st 空き 2 (High) 76 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.7 関数呼び出しインタフェース ( 引数のスタック渡し ) S o ft w a r e 4.7.3 S u p p o r t M a n u a l 引数の拡張形式 ( 引数のスタック渡し ) 引数をスタックに格納する場合 , 各引数の型に応じて引数の型を拡張形式に変換し て格納します。引数の開放は , 呼び出し先関数からの復帰後 , 呼び出し元関数で行わ れます。 ■ 引数の拡張形式 ( 引数のスタック渡し ) 表 4.7-1 に引数の拡張形式を示します。 表 4.7-1 引数の拡張形式 ( 引数のスタック渡し ) 実引数の型 拡張された型 *1 スタック格納サイズ (BYTE) char int 2 signed char int 2 unsigned char int 2 short 拡張なし 2 unsigned short 拡張なし 2 int 拡張なし 2 unsigned int 拡張なし 2 long 拡張なし 4 unsigned long 拡張なし 4 double 8 double 拡張なし 8 long double 拡張なし 8 near ポインタ / アドレス 拡張なし 2 far ポインタ / アドレス 拡張なし 4 *2 *2 float 構造体 / 共用体 *1:拡張された型は , 引数の型が与えられなかったときに拡張される型を表していま す。プロトタイプ宣言されたときには , その宣言に従います。拡張を行わないとき でも , 2 バイトに満たない引数や , 2 で割り切れないサイズの引数は 2 バイト単位 で切り上げたサイズの領域がスタック上に確保されます。 *2:2 バイトに満たない引数や , 2 で割り切れないサイズの引数は 2 バイト単位で切り 上げたサイズの領域がスタック上に確保されます。 July 31, 2015, CM42-00328-9 77 第 4 章 オブジェクトプログラムの構成 4.7 関数呼び出しインタフェース ( 引数のスタック渡し ) So ft war e 4.7.4 S up po r t M a nu al 呼び出し手続き ( 引数のスタック渡し ) 呼び出し元関数は , 引数を格納した後に呼び出し先関数へ分岐します。 ■ 呼び出し手続き ( 引数のスタック渡し ) 図 4.7-3 に標準リンケージ規約における呼び出し時のスタックフレームを示します。 図 4.7-3 標準リンケージ規約における呼び出し時スタックフレーム ( 引数のスタック渡し ) (Low) (呼び出し元関数) SP 実引数領域 戻り値領域 戻り値アドレス保存領域 レジスタ退避域 ローカル変数領域 (呼び出し元関数) 呼び出し先関数が参照する領域 IP (High) 呼び出し先関数は, 呼び出し元関数のフレームポインタ (RW3) をスタックに退避して, そのときのスタックポインタの値を新たなフレームポインタの値としてスタックに格 納します。その後 , ローカル変数領域および呼び出し元のレジスタの退避域をスタック から獲得して , 呼び出し元レジスタの退避を行います。 図 4.7-4 に標準リンケージ規約における呼び出し先関数が作成するスタックフレーム を示します。 図 4.7-4 標準リンケージ規約における 呼び出し先関数が作成するスタックフレーム ( 引数のスタック渡し ) (Low) (呼び出し先関数)SP 戻り値アドレス退避域 レジスタ退避域 ローカル変数領域 (呼び出し先関数)FP 旧FP 戻り値番地格納領域 (呼び出し元関数)SP 仮引数領域 戻り値領域 戻り値アドレス退避域 レジスタ退避域 ローカル変数領域 (呼び出し元関数)FP (High) 78 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.7 関数呼び出しインタフェース ( 引数のスタック渡し ) S o ft w a r e 4.7.5 S u p p o r t M a n u a l レジスタ ( 引数のスタック渡し ) ここでは , 標準リンケージ規約におけるレジスタの保証 , およびレジスタの設定の規 約について述べます。 ■ レジスタの保証 ( 引数のスタック渡し ) 呼び出し先関数は , 呼び出し元関数の以下のレジスタの内容を保証しています。 汎用レジスタ RW0-RW3, RW6, RW7, USP(SSP) これは , 呼び出し先関数が , スタックより新たな領域を獲得して , その領域にレジスタ の内容を退避することによって行われます。ただし, 関数内で変更されないレジスタは, 退避していません。これらのレジスタを ASM 文などにより変更した場合の動作は , 保 証されません。 ■ レジスタの設定 ( 引数のスタック渡し ) 関数呼び出し時と復帰時のレジスタの規約を表 4.7-2 に示します。 表 4.7-2 関数呼び出し時および復帰時のレジスタ規約 ( 引数のスタック渡し ) レジスタ 呼び出し時 復帰時 A 戻り値領域アドレス 戻り値 * RW0 ~ RW2 規定しない 呼び出し時の値を保証 RW3 フレームポインタ 呼び出し時の値を保証 RW4, RW5 規定しない 規定しない RW6, RW7 規定しない 呼び出し時の値を保証 USP(SSP) スタックポインタ 呼び出し時の値を保証 * :戻り値を持たない関数呼び出しおよび構造体 / 共用体 /double/long double 型を戻り 値とする関数呼び出しのときには , 規定しません。 July 31, 2015, CM42-00328-9 79 第 4 章 オブジェクトプログラムの構成 4.7 関数呼び出しインタフェース ( 引数のスタック渡し ) So ft war e 4.7.6 S up po r t M a nu al 戻り値 ( 引数のスタック渡し ) 標準リンケージ規約における戻り値インタフェースを表 4.7-3 に示します。 ■ 戻り値 表 4.7-3 標準リンケージ規約における戻り値インタフェース ( 引数のスタック渡し ) 戻り値の型 戻り値インタフェース void なし char AL signed char AL unsigned char AL short AL unsigned short AL int AL unsigned int AL long A unsigned long A float A near ポインタ / アドレス far ポインタ / アドレス AL A double AL * long double AL * 構造体 / 共用体 AL * * :呼び出し元関数は戻り値を格納する領域の先頭アドレスを AL に格納して呼び出し 先関数に渡します。また , 呼び出し先関数は AL を戻り値の格納領納域の先頭アド レスとして解釈します。呼び出し先関数は , このアドレスをメモリに退避する必要 がある場合 , 戻り値アドレス退避域を確保し , ここに退避します。 80 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) S o ft w a r e 4.8 S u p p o r t M a n u a l 関数呼び出しインタフェース ( 引数のレジスタ渡し ) 関数間の制御の受け渡しに関する一般的な形式を , 標準規約として定めています。 この規約を標準リンケージ規約とよびます。この標準リンケージ規約に基づくこと により , C 言語で記述したモジュールと , 他の手法 ( 例えばアセンブラ言語 ) により 記述したモジュールとの結合が可能になります。 従来の関数呼び出しインタフェースを変更する場合 , 「付録 D 関数呼び出しインタ フェース変更ガイド」を参照してください。 ■ 関数呼び出しインタフェース ( 引数のレジスタ渡し ) ● スタックフレーム 標準リンケージ規約では , スタックフレームの構成を規定しています。 ● 引数 呼び出し先関数への引数の受け渡しは , レジスタおよびスタックを介して行います。 ● 引数の拡張形式 引数をレジスタおよびスタックに格納する場合 , 各引数の型に応じて , 引数の型を拡張 形式に変換して格納します。 ● 呼び出し手続き 呼び出し元関数は , 引数を格納した後に呼び出し先関数へ分岐します。 ● レジスタ 標準リンケージ規約におけるレジスタの保証およびレジスタの設定の規約について説 明します。 ● 戻り値 標準リンケージ規約における戻り値インタフェースについて説明します。 July 31, 2015, CM42-00328-9 81 第 4 章 オブジェクトプログラムの構成 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) So ft war e 4.8.1 S up po r t M a nu al スタックフレーム ( 引数のレジスタ渡し ) 標準リンケージ規約では , スタックフレームの構成を規定しています。 ■ スタックフレーム ( 引数のレジスタ渡し ) スタックポインタ (SP) は , 常にスタックフレームの最下位を指し示しており , そのア ドレス値は常にワード境界です。図 4.8-1 に標準的な関数のスタックフレームの状態を 示します。 図 4.8-1 スタックフレーム ( 引数のレジスタ渡し ) (Low) SP→ 戻り値アドレス退避域 レジスタ退避域 ローカル変数領域 FP→ 旧FP 引数レジスタ退避域 戻り値番地格納領域 仮引数領域 戻り値領域 (High) ● 戻り値アドレス退避域 戻り値アドレス退避域は , 構造体 / 共用体 /double または long double 型を返す関数にお いて , 戻り値を格納する領域の先頭アドレスを格納するための領域です。構造体 / 共用 体を戻り値とするときには , 呼び出し元関数が戻り値を格納する領域の先頭アドレス をアキュムレータ AL に格納して , 呼び出し先関数に渡します。また , 呼び出し先関数 はアキュムレータ AL に格納されたアドレスを戻り値の格納領域の先頭アドレスとし て解釈します。 呼び出し先関数は , アキュムレータ AL に格納された戻り値アドレスをメモリに退避す る必要がある場合 , この領域に退避します。 ● レジスタ退避域 レジスタ退避域は , 呼び出し元関数に対して , 保証しなければならないレジスタを退避 するための領域です。退避の必要がない場合 , この領域を確保しません。 82 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) S o ft w a r e S u p p o r t M a n u a l ● ローカル変数領域 ローカル変数領域は , ローカル変数や , 一時域のための領域です。 ● 旧 FP 呼び出し元関数のフレームポインタ (RW3) の値を格納する領域です。 ● 引数レジスタ退避域 引数レジスタ (RW0, RW1) で渡された仮引数のアドレスがとられた場合 , 引数レジスタ で渡された仮引数の値をレジスタ上に保持できない場合 , 最適化レベル 0 の場合に , 引 数レジスタの値をこの領域に退避します。 引数レジスタ退避域は , スタックで渡された仮引数領域とは連続しません。 退避の必要がない場合 , この領域を確保しません。 ● 戻り番地格納領域 呼び出し元関数への復帰アドレスを格納するための領域です。この領域は , 関数を呼び 出すときに , 呼び出し元関数で設定されます。 ● 実引数領域 , 仮引数領域 関数呼び出しを行うときに , 仮引数レジスタで渡される引数以外の引数の受渡しをす るための領域です。呼び出し元関数で引数を設定するときに実引数領域といい , 呼び出 し先関数で引数を参照するときに仮引数領域といいます。詳細は , 「4.8.2 引数 ( 引数 のレジスタ渡し ) 」を参照してください。 ● 戻り値領域 戻り値領域は , 構造体 , 共用体 , double, long double 型を返す関数を呼び出すときに , 呼 び出し元の関数が確保します。必ずしも , この位置に領域を確保する必要はありません が , 呼び出し先関数は , この領域がスタック上に確保されているものとして処理を行い ますので , スタック以外にこの領域を確保したときの動作は保証されません。コンパイ ラは , double, long double 型を返す関数の戻り値領域を実引数領域に重複して確保しま す。これは , 特定のケースにおいて , オブジェクト効率を向上させるために行っていま す。このため , double, long double 型を返す関数が戻り値を戻り値領域に格納する場合 , 上位アドレスから下位アドレスへと行ってください。また , 書込みはすべての仮引数の 参照が完了してから行ってください。 July 31, 2015, CM42-00328-9 83 第 4 章 オブジェクトプログラムの構成 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) So ft war e 4.8.2 S up po r t M a nu al 引数 ( 引数のレジスタ渡し ) 呼び出し先関数への引数の受け渡しは , 引数レジスタまたはスタックを介して行い ます。引数レジスタを介して引数を受け渡す場合 , 2 バイトに満たない引数は , 2 バ イトの値で引数レジスタに格納されます。2 で割り切れないサイズの引数は 2 バイ ト単位で切り上げたサイズの領域がスタック上に確保されます。 実引数領域は , 呼び出し元関数で取得 / 解放します。 ■ 引数 ( 引数のレジスタ渡し ) 関数のプロトタイプ宣言がない関数を呼び出す場合の動作は保証されません。 可変個引数は , すべてスタックを介した受け渡しとなります。 表 4.8-1 に引数渡しの方法について示します。 表 4.8-1 引数渡し方法 ( 引数のレジスタ渡し ) 引数の組み合わせ *1 第 1 引数 第 2 引数 func (H, H) RW0 RW1 func (H, W) RW0 スタック func (H, O) RW0 スタック func (W, H) RL0 (RW0, RW1) スタック func (W, W) RL0 (RW0, RW1) スタック func (W, O) RL0 (RW0, RW1) スタック func (O, H) スタック スタック func (O, W) スタック スタック func (O, O) スタック スタック H: 2byte 型以下の型 (char, signed char, unsigned char, short, unsigned short, int, unsigned int, near ポインタ / アドレス ) W: 4byte 型 (long, unsigned long, プロトタイプ宣言あり float *2, far ポインタ / アドレス ) O: その他の型 ( プロトタイプ宣言なし float, double, long double, 構造体 / 共用体 ) *1: 第三引数以降は , どのような型でもスタックを介して引数を受け渡します。 *2: プロトタイプ宣言の有無により float の扱いが異なるのは , C 言語使用の規定の実引 数拡張によるものです。 84 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) S o ft w a r e S u p p o r t M a n u a l 図 4.8-2 に呼び出し先関数への引数の受け渡しの例を示します。( 例は small モデルで す。) 図 4.8-2 標準リンケージ規約における引数形式 ( 引数のレジスタ渡し ) extern int sub(int a, char b, char c); sub(1, 2, 3); RW0 1 RW1 2 2はint型に拡張 (Low) 3 空き (High) July 31, 2015, CM42-00328-9 85 第 4 章 オブジェクトプログラムの構成 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) So ft war e 4.8.3 S up po r t M a nu al 引数の拡張形式 ( 引数のレジスタ渡し ) 引数をレジスタまたはスタックに格納する場合 , 各引数の型に応じて引数の型を拡 張形式に変換して格納します。スタックを介して受け渡しを行う引数の開放は , 呼 び出し先関数からの復帰後 , 呼び出し元関数で行われます。 ■ 引数の拡張形式 ( 引数のレジスタ渡し ) 表 4.8-2 に引数の拡張形式を示します。 表 4.8-2 引数の拡張形式 ( 引数のレジスタ渡し ) 拡張された型 *1 引数レジスタサイズまたは スタック格納サイズ (BYTE) char int 2 signed char int 2 unsigned char int 2 short 拡張なし 2 unsigned short 拡張なし 2 int 拡張なし 2 unsigned int 拡張なし 2 long 拡張なし 4 unsigned long 拡張なし 4 double 8 double 拡張なし 8 long double 拡張なし 8 near ポインタ / アドレス 拡張なし 2 far ポインタ / アドレス 拡張なし 4 *2 *2 実引数の型 float 構造体 / 共用体 *1:拡張された型は , 引数レジスタを介して受け渡しされるときとスタックを介して受 け渡しされる引数の型が与えられなかったときに拡張される型を表しています。 スタックを介して受け渡しされる引数については , プロトタイプ宣言されたとき には , その宣言に従います。その際 , 拡張を行わないときでも , 2 バイトに満たな い引数や , 2 で割り切れないサイズの引数は 2 バイト単位で切り上げたサイズの領 域がスタック上に確保されます。 *2:2 バイトに満たない引数や , 2 で割り切れないサイズの引数は 2 バイト単位で切り 上げたサイズの領域がスタック上に確保されます。 86 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) S o ft w a r e 4.8.4 S u p p o r t M a n u a l 呼び出し手続き ( 引数のレジスタ渡し ) 呼び出し元関数は , 引数を格納した後に呼び出し先関数へ分岐します。 ■ 呼び出し手続き ( 引数のレジスタ渡し ) 図 4.8-3 に標準リンケージ規約における呼び出し時のスタックフレームを示します。 図 4.8-3 標準リンケージ規約における呼び出し時のスタックフレーム ( 引数のレジスタ渡し ) (Low) (呼び出し元関数)SP→ 実引数領域 戻り値領域 呼出先関数が 参照する領域 戻り値アドレス退避域 レジスタ退避域 ローカル変数領域 (呼び出し元関数)FP→ (High) 呼び出し先関数は , 引数レジスタの退避が必要な場合 , 引数レジスタをスタックに退避 します。次に , 呼び出し元関数のフレームポインタ (RW3) をスタックに退避して , そ のときのスタックポインタの値を新たなフレームポインタの値とします。その後 , ロー カル変数領域および呼び出し元のレジスタの退避域をスタックに確保して , 呼び出し 元レジスタの退避を行います。 July 31, 2015, CM42-00328-9 87 第 4 章 オブジェクトプログラムの構成 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) So ft war e S up po r t M a nu al 図 4.8-4 に標準リンケージ規約における呼び出し先関数が作成するスタックフレーム を示します。 図 4.8-4 標準リンケージ規約における呼び出し先関数が作成するスタックフレーム ( 引数のレジスタ渡し ) (Low) (呼び出し先関数)SP→ 戻り値アドレス退避域 レジスタ退避域 ローカル変数領域 (呼び出し先関数)FP→ 旧FP 引数レジスタ退避域 (呼び出し元関数)旧SP→ 仮引数領域 戻り値領域 戻り値アドレス退避域 レジスタ退避域 ローカル変数領域 (呼び出し元関数)旧SP→ (High) 88 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) S o ft w a r e 4.8.5 S u p p o r t M a n u a l レジスタ ( 引数のレジスタ渡し ) ここでは , 標準リンケージ規約におけるレジスタの保証について述べます。 ■ レジスタの保証 ( 引数のレジスタ渡し ) 呼び出し先関数は , 呼び出し元関数の , 以下のレジスタの内容を保証しています。 汎用レジスタ RW2, RW3, RW6, RW7, USP(SSP) これは , 呼び出し先関数が , スタックより新たな領域を獲得して , その領域にレジスタ の内容を退避することによって行われます。ただし, 関数内で変更されないレジスタは, 退避していません。これらのレジスタを ASM 文などにより変更した場合の動作は , 保 証されません。 ■ レジスタの設定 ( 引数のレジスタ渡し ) 標準リンケージ規約におけるレジスタの設定の規約について述べます。 関数呼び出し時と復帰時のレジスタの規約を表 4.8-3 に示します。 表 4.8-3 関数呼び出し時および復帰時のレジスタ規約 ( 引数のレジスタ渡し ) レジスタ 呼び出し時 復帰時 A 戻り値領域アドレス 戻り値 * RW0, RW1 引数レジスタ 規定しない RW2 規定しない 呼び出し時の値を保証 RW3 フレームポインタ 呼び出し時の値を保証 RW4, RW5 規定しない 規定しない RW6, RW7 規定しない 呼び出し時の値を保証 USP (SSP) スタックポインタ 呼び出し時の値を保証 * :戻り値を持たない関数呼び出しおよび構造体 / 共用体 /double/long double 型を戻り 値とする関数呼び出しのときには , 規定しません。 July 31, 2015, CM42-00328-9 89 第 4 章 オブジェクトプログラムの構成 4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) So ft war e 4.8.6 S up po r t M a nu al 戻り値 ( 引数のレジスタ渡し ) 標準リンケージ規約における戻り値インタフェースを表 4.8-4 に示します。 ■ 戻り値 ( 引数のレジスタ渡し ) 表 4.8-4 標準リンケージ規約における戻り値インタフェース ( 引数のレジスタ渡し ) 実引数の型 戻り値インタフェース void なし char AL signed char AL unsigned char AL short AL unsigned short AL int AL unsigned int AL long A unsigned long A float A near ポインタ / アドレス far ポインタ / アドレス AL A double AL* long double AL* 構造体 / 共用体 AL * * :呼び出し元関数は戻り値を格納する領域の先頭アドレスを AL に格納して呼び出し 先関数に渡します。また , 呼び出し先関数は AL を戻り値の格納領納域の先頭アド レスとして解釈します。呼び出し先関数は , このアドレスをメモリに退避する必要 がある場合 , 戻り値アドレス退避域を確保し , ここに退避します。 90 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.9 割込み関数呼び出しインタフェース S o ft w a r e 4.9 S u p p o r t M a n u a l 割込み関数呼び出しインタフェース __interrupt 型修飾子を用いることにより , 割込み関数を記述できます。割込み以外 の方法で割込み関数を呼び出した場合 , 動作は保証されません。割込み関数内での 関数呼び出しインタフェースは , 標準リンケージ規約と同じです。 ■ 割込み関数呼び出しインタフェース ● 割込みスタックフレーム 割込みが発生すると , スタックが割込みスタックに変更されます。 ● 引数 割込み関数には , 引数を指定できません。引数を指定した場合 , 動作は保証されません。 ● 割込み関数呼び出し手続き 割込み関数は , 割込みベクタテーブルを介して , 割込みにより呼び出されます。それ以 外の方法により呼び出された場合 , 動作は保証されません。 ● レジスタ 割込み関数では , すべてのレジスタを保証します。 ● 戻り値 割込み関数は , 通常 , 戻り値を持ちません。 July 31, 2015, CM42-00328-9 91 第 4 章 オブジェクトプログラムの構成 4.9 割込み関数呼び出しインタフェース So ft war e 4.9.1 S up po r t M a nu al 割込みスタックフレーム 割込みが発生すると , スタックが割込みスタックに変更されます。 ■ 割込みスタックフレーム スタックポインタ (USP) は , 割込みが発生すると割込みスタックポインタ (SSP) に置き 換えられます。割込み関数内では , 割込みスタックポインタを通常のスタックポインタ として使用します。図 4.9-1 に割込み発生直後の割込みスタックフレームの状態を示し ます。 図 4.9-1 割込みスタックフレーム (Low) SP→ LSB MSB PS PC DPB PCB DPR ADB AL AH (High) 92 CM42-00328-9, July 31, 2015 第 4 章 オブジェクトプログラムの構成 4.9 割込み関数呼び出しインタフェース S o ft w a r e 4.9.2 S u p p o r t M a n u a l 割込み関数呼び出し手続き 割込み関数は , 割込みベクタテーブルを介して , 割込みにより呼び出されます。それ 以外の方法により呼び出された場合 , 動作は保証されません。 ■ 割込み関数呼び出し手続き 図 4.9-2 に割込みベクタテーブルの例を示します。 図 4.9-2 割込みベクタテーブル (Low) FFFC00 割込み関数アドレス255 ベクタ番号255 割込み関数アドレス1 ベクタ番号1 割込み関数アドレス0 ベクタ番号0 FFFC04 (High) July 31, 2015, CM42-00328-9 93 第 4 章 オブジェクトプログラムの構成 4.9 割込み関数呼び出しインタフェース So ft war e 94 S up po r t M a nu al CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 第5章 拡張言語仕様 コンパイラがサポートしている拡張言語仕様につ いて説明します。また , コンパイラが翻訳処理を行 う際の限界についても説明します。 5.1 アセンブラ記述機能 5.2 割込み制御機能 5.3 I/O 領域アクセス機能 5.4 direct 領域アクセス機能 5.5 16 ビット /24 ビットアドレッシングアクセス機能 5.6 インライン展開指定機能 5.7 セクション名の変更機能 5.8 レジスタバンク番号の設定機能 5.9 割込みレベルの設定機能 5.10 システムスタックの利用指定機能 5.11 スタックバンクの自動判別機能 5.12 レジスタ退避なしの割込み関数機能 5.13 ビルトイン関数 5.14 既定義マクロ 5.15 コンパイラの翻訳限界 July 31, 2015, CM42-00328-9 95 第 5 章 拡張言語仕様 5.1 アセンブラ記述機能 So ft war e 5.1 S up po r t M a nu al アセンブラ記述機能 アセンブラ記述機能には , 以下の 2 つの記述方法があります。 • asm 文 • プラグマ指令 ■ asm 文による記述方法 asm文を記述すると, 文字列リテラルをアセンブラ命令として展開します。この機能は, 関数内および関数外の両方に記述できます。 【記述形式】 _ _ asm( 文字列リテラル ); 【説明】 asm 文を関数内に記述した場合 , 記述した位置にアセンブラを展開します。関数外に記 述した場合 , 独立したセクションとして展開します。このため , 関数外に記述する場合 には , セクション定義疑似命令を必ず記述して , セクションを定義してください。セク ションを定義しない場合 , 動作は保証されません。 関数内の asm 文中で , 汎用レジスタを使用するときには , 利用者の責任でレジスタの退 避復元を行う必要があります。アキュムレータは , 自由に使うことができます。 C ソースプログラム中に asm 文が存在すると , -O の最適化オプションが指定されても 一部の最適化が抑止されます。 【出力例】 96 入力: /* 関数内に記述する場合 */ extern int temp; sample(){ __asm(" MOVN A, #1"); __asm(" MOVW _temp, A"); } /* 関数外に記述する場合 */ __asm(" .SECTION DATA, DATA, ALIGN=2"); __asm(" .ALIGN 2"); __asm(" .GLOBAL _a"); __asm("_a: .RES.B 2"); 出力: .SECTION CODE, CODE, ALIGN=1 ;-------begin_of_function .GLOBAL _sample _sample: LINK #0 MOVN A, #1 MOVW _temp, A UNLINK RET .SECTION DATA, DATA, ALIGN=2 .ALIGN 2 .GLOBAL _a _a: .RES.B 2 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.1 アセンブラ記述機能 S o ft w a r e S u p p o r t M a n u a l ■ プラグマ指令による記述方法 #pragma asm と #pragma endasm の間の記述をアセンブラとしてそのまま展開します。こ の機能は , 関数内および関数外の両方に記述できます。 【記述形式】 #pragma asm アセンブラ記述 #pragma endasm 【説明】 関数内に記述した場合 , 記述した位置にアセンブラを展開します。関数外に記述した場 合 , 独立したセクションとして展開します。このため , 関数外に記述する場合は , セク ション定義疑似命令を必ず記述して , セクションを定義してください。セクションを定 義しない場合 , 動作は保証されません。 関数内の asm 文中で , 汎用レジスタを使用するときには , 利用者の責任でレジスタの退 避復元を行う必要があります。アキュムレータは , 自由に使うことができます。 C ソースプログラム中に #pragma asm/endasm によるアセンブラが存在すると , -O の最 適化オプションが指定されても一部の最適化が抑止されます。 【出力例】 入力: /* 関数内に記述する場合 */ sample(){ #pragma asm #pragma MOVN A, #1 MOVW _temp, A endasm } /* 関数外に記述する場合 */ #pragma asm .SECTION .ALIGN DATA, DATA, ALIGN=2 2 .GLOBAL _a _a: .RES.B #pragma endasm 出力: 2 .SECTION CODE, CODE, ALIGN=1 ;-------begin_of_function .GLOBAL _sample _sample: LINK #0 MOVN A, #1 MOVW _temp, A UNLINK RET .SECTION .ALIGN DATA, DATA, ALIGN=2 2 .GLOBAL _a _a: July 31, 2015, CM42-00328-9 .RES.B 2 97 第 5 章 拡張言語仕様 5.2 割込み制御機能 So ft war e 5.2 S up po r t M a nu al 割込み制御機能 割込み制御機能には , 以下の 5 つがあります。 • 割込みマスク設定機能 • 割込みマスク解除機能 • 割込みレベル設定機能 • 割込み関数記述機能 • 割込みベクタテーブル生成機能 ■ 割込みマスク設定機能 【記述形式】 void _ _ DI(void); 【説明】 割込みをマスクするコードを展開します。 【出力例】 入力: _ _ DI(); 出力: A N D C C R , # 1 9 1 ■ 割込みマスク解除機能 【記述形式】 void _ _ EI(void); 【説明】 割込みマスクを解除するコードを展開します。 【出力例】 入力: _ _ EI(); 出力: O R C C R , # 6 4 98 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.2 割込み制御機能 S o ft w a r e S u p p o r t M a n u a l ■ 割込みレベル設定機能 【記述形式】 void _ _ set_il(int level); 【説明】 割込みレベルを level に変更するコードを展開します。 【出力例】 入力: _ _ set_il(2); 出力: M O V I L M , # 2 ■ 割込み関数記述機能 【記述形式 1】 _ _ interrupt void 割込み関数 (void){ ... } 【記述形式 2】 extern _ _ interrupt void 割込み関数 (void); 【説明】 型修飾子 _ _ interrupt を指定することにより , 割込み関数を記述できます。割込み関数 は , 割込みにより呼び出されるため , 引数を設定したり , 戻り値を得たりすることはで きません。型修飾子 _ _ interrupt で宣言または定義された関数を通常の関数呼び出しで 呼び出した場合 , 動作は保証されません。 【出力例】 入力: __interrupt void sample(void){ ... } 出力: _sample: LINK #0 .... UNLINK RETI ■ 割込みベクタテーブル生成機能 【記述形式】 #pragma intvect 割込み関数名 ベクタ番号 [ モード値 ] #pragma defvect 割込み関数名 【説明】 #pragma intvect は , 割込み関数を設定した割込みベクタテーブルを生成します。#pragma defvect は , #pragma intvect で指定されていない割込みベクタに設定するデフォルトの割 込み関数を指定します。割込みベクタテーブルは , INTVECT という独立したセクショ ンに生成します。#pragma defvect を記述すると , すべてのベクタに対するテーブルが生 成されます。このためすべてのベクタテーブルの定義は , 同じ翻訳単位で行う必要があ ります。#pragma defvect を使用しなければ , 複数の翻訳単位で #pragma intvect の記述を 行うことが可能です。ただし , 同一のセクション名が出力されないようにファイルごと にベクタテーブルのセクション名を変更してください。同一のベクタ番号に対し , 複数 回定義することはできません。ただし , 同一翻訳単位での定義であり , 2 つの定義が全 く同じである場合 , エラーとしません。ベクタ番号に整定数以外は指定できません。ベ クタ番号は , 0 から 255 の範囲を指定してください。モード値に整定数以外は指定でき ません。 July 31, 2015, CM42-00328-9 99 第 5 章 拡張言語仕様 5.3 I/O 領域アクセス機能 So ft war e 5.3 S up po r t M a nu al I/O 領域アクセス機能 型修飾子 __io を指定することにより , I/O 領域を操作する変数を定義できます。 ■ I/O 領域アクセス機能 【記述形式】 _ _ io 変数定義 ; 【説明】 型修飾子 _ _ io を指定することにより , 0x00 番地から 0xff 番地の間に定義された I/O 領 域を操作する変数を定義できます。I/O 領域のアクセスには効率の良い専用命令が用意 されているため , より高速でコンパクトなオブジェクトを生成できます。0xff 番地より 大きなアドレス空間に配置された I/O 領域を操作する変数に対しては , この命令が使用 できません。この領域をアクセスする変数を定義する場合 , 型修飾子 volatile を使用し てください。 型修飾子 __ io を指定された変数に対して , 初期値は指定できません。構造体や共用体 の変数に指定した場合 , すべてのメンバが I/O 領域に配置されていると解釈します。構 造体や共用体のメンバに指定することはできません。型修飾子 _ _ ioを指定した変数は, 型 修 飾 子 volatile が 指 定 さ れ て い る も の と み な し て コ ン パ イ ル を 行 い ま す。-K NOVOLATILE オプションを指定した場合 , 型修飾子 _ _ io を指定した変数に型修飾子 volatile が指定されているとはみなしません。自動変数に指定したときは , I/O 領域の変 数としてではなく , 型修飾子 volatile が指定された自動変数として扱います。 【出力例】 入力: #pragma section IO=IOA, attr=IO, locate=0x10 __io int a; void func(void){ a=1;} 出力: .SECTION .ALIGN IOA, IO, LOCATE=H'0:H'10 2 .GLOBAL _a _a: .RES.B 2 .SECTION CODE, CODE, ALIGN=1 ;-------begin_of_function .GLOBAL _func _func: LINK #0 MOVN A, #1 MOVW I:_a, A UNLINK RET 100 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.4 direct 領域アクセス機能 S o ft w a r e 5.4 S u p p o r t M a n u a l direct 領域アクセス機能 型修飾子 __direct を指定することにより , direct 領域を操作する変数を定義できま す。 ■ direct 領域アクセス機能 【記述形式】 _ _ direct 変数定義 ; 【説明】 型修飾子 _ _ direct を指定することにより , direct 領域を操作する変数を定義できます。 ポインタが示すオブジェクトが direct 領域であることを指定できます。構造体や共用 体の変数に指定した場合 , すべてのメンバが direct 領域に配置されていると解釈しま す。構造体や共用体のメンバに指定することはできません。direct 領域のアクセスには 効率の良い専用命令が用意されているため , より高速でコンパクトなオブジェクトを 生成できます。 fcc907sコマンドでは, _ _ direct型修飾することにより生成されたセクション(DIRDATA/ DIRINIT) をアクセス可能にするため , スタートアップルーチンにおいて , DPR を適切 に設定する必要があります。 <注意事項> __direct 型修飾子を使用すると , コンパイラは DIRDATA および DIRINIT セクションが生 成されます。これらのセクションは連続して配置する必要があり , 結合された領域は 256 バイト境界を越えて配置できません。 リンク時に以下のような指定により配置してください。 -ra RAM_DIR=DIR 領域開始アドレス / 開始アドレス -sc DIRDATA+DIRINIT=RAM_DIR この指定により , 結合されたセクションの合計サイズが 256 バイトを超えた場合 , リンク 時に以下の警告が出力されます。 *** W1377L: Total size of the DIR attribute section exceeded 256bytes アセンブラで記述したソースにおいて複数のダイレクトページを使用する場合 , ページご とに同様の指定をする必要があります。 リアルタイム OS のタスクごとに異なったダイレクトページを使用する場合も同様に , ページごとに同様の指定をする必要があります。 July 31, 2015, CM42-00328-9 101 第 5 章 拡張言語仕様 5.4 direct 領域アクセス機能 So ft war e S up po r t M a nu al 【出力例】 入力: int __direct p; void sample(void){ p=1;} 出力: .SECTION .ALIGN DIRDATA, DIR, ALIGN=2 2 .GLOBAL _p _p: .RES.B 2 .GLOBAL LOADSPB .SECTION CODE, CODE, ALIGN=1 ;-------begin_of_function .GLOBAL _sample _sample: LINK #0 MOVN A, #1 MOVW S:_p, A UNLINK RET 102 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.5 16 ビット /24 ビットアドレッシングアクセス機能 S o ft w a r e 5.5 S u p p o r t M a n u a l 16 ビット /24 ビットアドレッシングアクセス機能 型修飾子 __near/__far を指定することにより , 変数を配置するアドレス空間を指定 できます。適切にアドレス空間を指定することにより , より効率の良いプログラム を生成できます。 ■ 16 ビット /24 ビットアドレッシングアクセス機能 【記述形式】 _ _ near 変数定義 ; _ _ far 変数定義 ; 【説明】 型修飾子 _ _ near/_ _farを指定することにより, 変数を配置するアドレス空間を指定でき ます。型修飾子 _ _ near を指定することにより , 変数を 16 ビットアドレス空間に配置で きます。型修飾子 _ _ far を指定することにより , 変数を 24 ビットアドレス空間に配置 できます。適切にアドレス空間を指定することにより , より効率の良いプログラムを生 成できます。_ _ near/_ _ far 型修飾を省略した場合 , コンパイル時のメモリモデルによる アドレス空間がデフォルトの設定となります。ローカル変数は修飾できません。 far ポインタを near ポインタに型変換すると上位 8 ビットが切り捨てられます。near ポ インタを far ポインタに型変換すると , 上位 8 ビットに DTB の値が使用されます。ロー カル変数のアドレスを far ポインタに格納すると , 上位 8 ビットには USB( または SSB) の値が使用されます。ただし , near ポインタに代入 ( またはキャスト ) した後に far ポ インタに格納すると, DTBの値が使用され, 正常な動作ができなくなる可能性があるの で , 注意してください。 _ _ far 型修飾された関数から , _ _ near 型修飾された関数を呼び出す場合 , 両方の関数が 同じセクションに配置されていなければなりません。これは , _ _ far 型修飾された関数 を呼び出すときに設定された PCB が _ _ near 型修飾された関数の呼び出しに対してそ のまま使用されるためです。 変数はバンクの境界を越えて配置できません。このような配置を行った場合 , プログラ ム中で , データへのアクセスが正常にできないため注意してください。 July 31, 2015, CM42-00328-9 103 第 5 章 拡張言語仕様 5.5 16 ビット /24 ビットアドレッシングアクセス機能 So ft war e S up po r t M a nu al 【出力例】 入力: int __near p; int __far q; void sample(void){ p=1; 出力: .SECTION q=2;} DATA_e, DATA, ALIGN=2 FAR_DATA_S: .ALIGN 2 .GLOBAL _q _q: .RES.B 2 .SECTION DATA, DATA, ALIGN=2 .ALIGN 2 .GLOBAL _p .RES.B 2 .SECTION DATA_e, DATA, ALIGN=2 _p: FAR_DATA_E: .SECTION CODE, CODE, ALIGN=1 ;-------begin_of_function .GLOBAL _sample _sample: LINK #0 MOVN A, #1 MOVW _p, A MOV A, #bnksym _q MOV ADB, A MOVN A, #2 MOVW ADB:_q, A UNLINK RET 104 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.6 インライン展開指定機能 S o ft w a r e 5.6 S u p p o r t M a n u a l インライン展開指定機能 インライン展開するユーザ定義関数を指定します。インライン展開は -x オプション で指定することもできます。 ■ インライン展開指定機能 【記述形式】 #pragma inline 関数名 [, 関数名 ...] 【説明】 再帰的に呼び出される関数についてはインライン展開の対象にはなりません。また , asm 文の使用や構造体 / 共用体型引数の有無 , setjmp 関数の呼び出しなどの条件により , インライン展開の対象とならないときがあります。 同一翻訳単位に複数回の記述があるときや , オプションでも指定している場合 , 指定し たすべての関数名が有効になります。 -O オプションが指定されていないときは無効になります。 July 31, 2015, CM42-00328-9 105 第 5 章 拡張言語仕様 5.7 セクション名の変更機能 So ft war e 5.7 S up po r t M a nu al セクション名の変更機能 セクション名やセクション属性を変更し , セクションの配置アドレスを設定します。 ■ セクション名の変更機能 【記述形式】 #pragma section DEFSECT[=NEWNAME][,attr=SECTATTR][, {align=1|align=2|locate=ADDR}] 【説明】 コンパイラが出力するセクション名 DEFSECT を NEWNAME に変更し , そのセクショ ンのタイプを SECTATTR に変更します (= の前後に空白を記述しないでください )。 ラージモデルやコンパクトモデル , ミディアムモデルおよび __far 型修飾された変数や 関数のセクション名は , 先頭に "FAR_" をつけることにより指定できます。 align=1 を指定することにより , セクションの境界整合値を 1 に指定できます。align=2 を指定することにより , セクションの境界整合値を 2 に指定できます。INTVECT セク ションに対しては , 境界整合値を指定できません。DIRDATA, DIRINIT, DIRCONST, CODE セクションに対して , -align オプションでの境界整合値の指定と本機能での境界 整合値の指定を行った場合 , 本機能の指定が有効になります。 locate=ADDR を指定することにより , セクションの配置アドレスを ADDR に指定でき ます。align と locate は同時に指定することはできません。locate で配置アドレスが指 定されたセクションは , リンク時に配置アドレスを変更できません。 コンパイラが出力するセクション名については「4.1 セクション構成」を , 指定できる セクションタイプについては『F2MC-16 ファミリ SOFTUNE アセンブラマニュアル』 を参照してください。 同じセクションに対して , 複数回のセクション名変更を行った場合 , 最後の変更のみが 有効になります。オプション (-s) によるセクション名の変更指定を行った場合 , オプ ションによる指定が有効になります。 <注意事項> 同じセクション名に対して , 配置アドレスを指定したものと , 指定していないものが混在 した場合の動作は , 保証できません。 【出力例】 入力: #pragma section CODE=program,attr=CODE,locate=0xff void main(void){} 出力: .SECTION program, CODE, LOCATE=H'0:H'FF ;-------begin_of_function .GLOBAL _main _main: LINK 106 #0 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.7 セクション名の変更機能 S o ft w a r e S u p p o r t M a n u a l UNLINK RET 【記述形式】 #pragma segment DEFSECT[=NEWNAME][,attr=SECTATTR][, {align=1|align=2|locate=ADDR}] 【説明】 コンパイラが出力するセクション名 DEFSECT を NEWNAME に変更し , そのセクショ ンのタイプを SECTATTR に変更します (= の前後に空白を記述しないでください )。 記述形式については , #pragma section と同じですが , 記述に関していくつかの違いがあ ります。 #pragma segment は , ファイル内に複数記述でき , その行以降に定義された関数または , 変数に作用します。この指定は , 次に同じ DEFSECT の #pragma segment が記述される まで有効です (DEFSECT が異なる #pragma segment の記述は , 互いに影響しません )。 NEWNAME がない #pragma segment の記述は , その行以降の DEFSECT のセクション名 をデフォルトのセクション名に戻します。 #pragma segment が記述された行以降にそれが作用する関数および , 変数の定義がない 場合 , その #pragma segment を無視します。#pragma segmetn で指定されたセクション は , #pragma section, -s オプションまたは -align オプションのいずれの指定も作用しま せん。 align= 指定および locate= 指定がない場合,#pragma section , -s オプションまたは -align オプションの指定の有無にかかわらず , #pragma segment で指定されたセクションの境 界整合値はそのセクションのデフォルト値になります「4.1 ( セクション構成」を参照 )。 INTVECT, DTRANS お よび , DCLEAR セ クシ ョン につ いて の 指定 はで きま せん。 DEFSECT に INIT, FAR_INIT もしくは DCONST, FAR_DCONST を指定する場合 , 対応 する DCONST, FAR_DCONST および , INIT, FAR_INIT の指定も必要であり , スタート アップルーチンにおける , 初期値の転送も必要です。 【出力例】 入力: #pragma segment CODE=program1 void func1(void){} #pragma segment DATA=ram1 int a1; #pragma segment CODE=program2 void func2(void){} #pragma segment DATA=ram2 int a2; 出力: .SECTION ram2, DATA, ALIGN=2 .ALIGN 2 .GLOBAL _a2 _a2: .RES.B 2 .SECTION ram1, DATA, ALIGN=2 .ALIGN 2 .GLOBAL _a1 _a1: .RES.B 2 .SECTION program1, CODE, ALIGN=1 .GLOBAL _func1 _func1: RET July 31, 2015, CM42-00328-9 107 第 5 章 拡張言語仕様 5.7 セクション名の変更機能 So ft war e S up po r t .SECTION .GLOBAL _func2 M a nu al program2, CODE, ALIGN=1 _func2: RET <注意事項> #pragma segment は , ファイル内で定義されている変数の最初の変数定義 / 変数宣言に作 用します。変数定義以前に変数宣言があれば , その変数宣言に対しセクション名の変更を 指示してください。 #pragma segment は , ファイル内で定義されている関数定義に対して作用します。関数の 定義位置以前の関数宣言は , 出力先セクションに影響しません。 同じセクション名に対して , 配置アドレスを指定したものと , 指定していないものが混在 した場合の動作は , 保証できません。 【出力例】 入力: #pragma segment CONST=const1,attr=CONST,locate=0xff00 extern const int var; // 変数宣言 #pragma segment CONST=const2,attr=CONST,locate=0xff10 const int var=10; // 変数定義 #pragma segment CODE=program1,attr=CODE,locate=0xff20 extern void func(void); // 関数宣言 #pragma segment CODE=program2,attr=CODE,locate=0xff30 void func(void){} // 関数定義 変数 / 関数の出力先セクション: 108 変数名 / 関数名 出力先セクション名 var const1 func program2 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.8 レジスタバンク番号の設定機能 S o ft w a r e 5.8 S u p p o r t M a n u a l レジスタバンク番号の設定機能 関数が使用するレジスタバンクを指定します。 ■ レジスタバンク番号の設定機能 【記述形式】 #pragma register(NUM) #pragma noregister 【説明】 "#pragma register" は , この指定以降で定義されている関数が使用するレジスタバンクを 指定します。"#pragma noregister" は , レジスタバンクの指定を解除します。NUM には レジスタバンク番号として 0 ~ 31 の値を持つ整数定数が指定できます。16 進数 , 8 進 数 , および 10 進数のいずれでも記述できます。指定された関数の先頭でレジスタバン ク番号が変更されますが , 関数の実行が終了しても , 元に戻りませんので注意してくだ さい ( 割込み関数を除く )。 "#pragma register" と "#pragma noregister" は必ず対で指定してください。また , ネストさ せることはできません。 【出力例】 入力: #pragma register(2) void func(void){} #pragma noregister 出力: _func: MOV RP, #2 LINK #0 UNLINK RET July 31, 2015, CM42-00328-9 109 第 5 章 拡張言語仕様 5.9 割込みレベルの設定機能 So ft war e 5.9 S up po r t M a nu al 割込みレベルの設定機能 関数の割込みレベルを指定します。 ■ 割込みレベルの設定機能 【記述形式】 #pragma ilm(NUM) #pragma noilm 【説明】 #pragma ilm は , この指定以降で定義されている関数の割込みレベルを指定します。 "#pragma noilm" は , 割込みレベルの指定を解除します。 NUM には 0 ~ 7 の値を持つ整数定数が指定できます。 16 進数 , 8 進数 , および 10 進数のいずれでも記述できます。指定された関数の先頭で 割込みレベルが変更されますが , 関数の実行が終了しても , 元に戻りませんので注意し てください。 "#pragma ilm" と "#pragma noilm" は必ず対で指定してください。また , ネストさせるこ とはできません。 【出力例】 入力: #pragma ilm(1) void func(void){} #pragma noilm 出力: _func: MOV ILM, LINK #0 #1 UNLINK RET 110 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.10 システムスタックの利用指定機能 S o ft w a r e 5.10 S u p p o r t M a n u a l システムスタックの利用指定機能 関数がシステムスタックを使用していることをコンパイラに通知します。 ■ システムスタックの利用指定機能 【記述形式】 #pragma ssb #pragma nossb 【説明】 #pragma ssb は , この指定以降で定義されている関数がシステムスタックを使用してい ることをコンパイラに通知します。"#pragma nossb"は, この指定を解除します。 "#pragma ssb" と "#pragma nossb" は必ず対で指定してください。また , ネストさせることはでき ません。"#pragma ssb" は , "#pragma except" と "#pragma noexcept" の間に記述できません。 【出力例】 入力: __far int *p; #pragma ssb void func(void){ int a; p=&a; } #pragma nossb 出力: _func: LINK #2 MOV A, SSB MOVEA A, @RW3+-2 MOVL _p, A UNLINK RET July 31, 2015, CM42-00328-9 111 第 5 章 拡張言語仕様 5.11 スタックバンクの自動判別機能 So ft war e 5.11 S up po r t M a nu al スタックバンクの自動判別機能 関数がシステムスタック , およびユーザスタックのいずれでも動作することをコン パイラに通知します。 ■ スタックバンクの自動判別機能 【記述形式】 #pragma except #pragma noexcept 【説明】 #pragma except は , この指定以降で定義されている関数がシステムスタックおよびユー ザスタックのいずれでも動作することをコンパイラに通知します。 "#pragma noexcept" は , この指定を解除します。 "#pragma except" と "#pragma noexcept" は必ず対で指定してください。また , ネストさ せることはできません。"#pragma except" は , "#pragma ssb" と "#pragma nossb" の間に記 述できません。 【出力例】 入力: __far int *p; #pragma except void func(void){ int a; p=&a; } #pragma noexcept 出力: _func: LINK #2 CALLP LOADSPB MOVEA A, @RW3+-2 MOVL _p, A UNLINK RET 112 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.12 レジスタ退避なしの割込み関数機能 S o ft w a r e 5.12 S u p p o r t M a n u a l レジスタ退避なしの割込み関数機能 関数の退避を行わないことを指定します。 ■ レジスタ退避なしの割込み関数機能 【記述形式】 _ _ nosavereg 関数定義 【説明】 型修飾子 _ _ nosavereg を指定することにより , レジスタ退避を行わない関数を定義でき ます。この機能は , レジスタバンクの切換えで , レジスタの退避が不要になるときに , レジスタ退避を抑止するために利用します。 レジスタバンクの切換えは "#pragma register" により行うことができます。通常 , この #pragma register および __interrupt と共に使用します。 【出力例】 入力: extern void sub(void); #pragma register(5) __nosavereg __interrupt void func(void){sub();} #pragma noregister 出力: _func: MOV RP, #5 LINK #0 CALL _sub UNLINK RETI July 31, 2015, CM42-00328-9 113 第 5 章 拡張言語仕様 5.13 ビルトイン関数 So ft war e 5.13 S up po r t M a nu al ビルトイン関数 ビルトイン関数には , 以下の 7 つの関数があります。 • __wait_nop • __mul • __div • __mod • __mulu • __divu • __modu ■ __wait_nop ビルトイン関数 【記述形式】 void _ _ wait_nop(void); 【説明】 従来 , I/O アクセスや割込み発生のタイミングをとるために , asm 文を使って NOP 命令 を挿入していました。しかし , この方法では asm 文により各種の最適化が抑止され , そ のファイルのオブジェクト効率が極端に悪くなることがあります。_ _wait_nop() ビル トイン関数を記述すると , コンパイラは関数呼び出しの記述位置に 1 個の NOP 命令を 出力します。関数呼び出しを必要な NOP 命令の回数分記述することにより最適化への 影響を最小限にとどめてタイミングを制御できます。 【出力例】 入力: void sample(void){__wait_nop();} 出力: _sample: LINK #0 NOP UNLINK RET ■ __mul ビルトイン関数 【記述形式】 signed long _ _ mul(signed int, signed int); 【説明】 符号付き 16 ビットのデータ同士の乗算を行い , 符号付き 32 ビットの結果を返します。 このビルトイン関数を利用することにより , 16 ビット演算によるオーバフローを回避 した , 効率の良い演算を行うことができます。-cpu オプションに F2MC-16LX/16F シ リーズの MB 番号を指定したときのみ展開されます。ただし , -div905 オプションが指 定されていない場合の MB90500 シリーズでは展開されません。 114 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.13 ビルトイン関数 S o ft w a r e S u p p o r t M a n u a l 【出力例】 入力: extern signed int arg1, arg2; extern signed long ans; void sample(void){ ans = __mul(arg1, arg2); } 出力: MOVW A, _arg1 MULW A, _arg2 MOVL _ans, A ■ __div ビルトイン関数 【記述形式】 signed int __div(signed long, signed int); 【説明】 符号付き 32 ビットのデータと符号付き 16 ビットのデータの除算を行い , 符号付き 16 ビットの結果を返します。このビルトイン関数を利用することにより , 効率の良い演算 を行うことができます。-cpu オプションに F2MC-16LX/16F シリーズの MB 番号を指定 したときのみ展開されます。ただし , -div905 オプションが指定されていない場合の MB90500 シリーズでは展開されません。 【出力例】 入力: extern signed int arg2, ans; extern signed long arg1; void sample(void){ ans = __div(arg1, arg2); } 出力: MOVL A, _arg1 MOVW RW0, _arg2 DIVW A, RW0 MOVW _ans, A ■ __mod ビルトイン関数 【記述形式】 signed int _ _ mod(signed long, signed int); 【説明】 符号付き 32 ビットのデータと符号付き 16 ビットのデータの剰余算を行い , 符号付き 16 ビットの結果を返します。このビルトイン関数を利用することにより , 効率の良い 演算を行うことができます。-cpu オプションに F2MC-16LX/16F シリーズの MB 番号を 指定したときのみ展開されます。ただし , -div905 オプションが指定されていない場合 の MB90500 シリーズでは展開されません。 【出力例】 入力: extern signed int arg2, ans; extern signed long arg1; void sample(void){ ans = __mod(arg1, arg2); } 出力: MOVL A, _arg1 MOVW RW0, _arg2 DIVW A, RW0 MOVW A, RW0 MOVW _ans, A July 31, 2015, CM42-00328-9 115 第 5 章 拡張言語仕様 5.13 ビルトイン関数 So ft war e S up po r t M a nu al ■ __mulu ビルトイン関数 【記述形式】 unsigned long _ _ mulu(unsigned int, unsigned int); 【説明】 符号なし 16 ビットのデータ同士の乗算を行い , 符号なし 32 ビットの結果を返します。 このビルトイン関数を利用することにより , 16 ビット演算によるオーバフローを回避 した , 効率の良い演算を行うことができます。 【出力例】 入力: extern unsigned int arg1, arg2; extern unsigned long ans; void sample(void){ ans = __mulu(arg1, arg2); } 出力: MOVW MULUW MOVL A, _arg1 A, _arg2 _ans, A ■ __divu ビルトイン関数 【記述形式】 unsigned int _ _ divu(unsigned long, unsigned int); 【説明】 符号なし 32 ビットのデータと符号なし 16 ビットのデータの除算を行い , 符号なし 16 ビットの結果を返します。このビルトイン関数を利用することにより , 効率の良い演算 を行うことができます。 【出力例】 入力: extern unsigned int arg2, ans; extern unsigned long arg1; void sample(void){ ans = __divu(arg1, arg2); } 出力: MOVL A, _arg1 MOVW RW0, _arg2 DIVUW A, RW0 MOVW _ans, A 116 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.13 ビルトイン関数 S o ft w a r e S u p p o r t M a n u a l ■ __modu ビルトイン関数 【記述形式】 unsigned int _ _ modu(unsigned long, unsigned int); 【説明】 符号なし 32 ビットのデータと符号なし 16 ビットのデータの剰余算を行い , 符号なし 16 ビットの結果を返します。このビルトイン関数を利用することにより , 効率の良い 演算を行うことができます。 【出力例】 入力: extern unsigned int arg2, ans; extern unsigned long arg1; void sample(void){ ans = __modu(arg1, arg2); } 出力: July 31, 2015, CM42-00328-9 MOVL A, _arg1 MOVW RW0, _arg2 DIVUW A, RW0 MOVW A, RW0 MOVW _ans, A 117 第 5 章 拡張言語仕様 5.14 既定義マクロ So ft war e 5.14 S up po r t M a nu al 既定義マクロ コンパイラがあらかじめ定義するマクロ名について説明します。 ■ ANSI 規格で規定されているマクロ ANSI 規格では , 以下に示すマクロを規定しています。 _ _ LINE_ _ 現在のソース行の行番号が定義されます。 _ _ FILE_ _ ソースファイルの名前が定義されます。 _ _ DATE_ _ ソースファイルの翻訳の日付が定義されます。 _ _ TIME_ _ ソースファイルの翻訳の時刻が定義されます。 _ _ STDC_ _ 規格合致処理系であることを示すためのマクロです。-Ja オプション指定時に 0, -Jc オプション指定時に 1 が定義されます。 ■ fcc907s コマンドで定義されているマクロ fcc907s コマンドでは , 以下に示すマクロを定義しています。 _ _ COMPILER_FCC907_ _ 1 が定義されます。 _ _ CPU_MB 番号 _ _ "MB 番号 " の部分に -cpu オプションで指定した MB 番号が入っ たマクロ名に 1 が定義されます。 _ _ CPU_16L_ _ _ _ CPU_16LX_ _ _ _ CPU_16F_ _ -cpu オプションで指定した MB 番号に応じて , いずれかのシ リーズ名のマクロに 1 が定義されます。 _ _ CPU_16FX_ _ 118 CM42-00328-9, July 31, 2015 第 5 章 拡張言語仕様 5.15 コンパイラの翻訳限界 S o ft w a r e 5.15 S u p p o r t M a n u a l コンパイラの翻訳限界 コンパイラを使用するときの翻訳限界を表 5.15-1 に示します。また , ANSI 規格に おける最低基準も合わせて示してあります。 ■ コンパイラの翻訳限界 表 5.15-1 翻訳限界の一覧 項目 No. ANSI 規格 本コンパイラ 1 複文 , 繰返し制御構造および選択制御構造における入れ子のレベル数 15 ∞ 2 条件組込みにおける入れ子のレベル数 8 ∞ 3 宣言中の 1 つの算術型 , 構造体型 , 共用体型 , または不完全型を修飾する ポインタ , 配列および関数宣言子 ( の任意の組み合わせ ) の数 12 ∞ 4 1 つの完全宣言子に対する括弧による入れ子の宣言数 31 ∞ 5 1 つの完全式に対する括弧による入れ子の式数 32 ∞ 6 内部識別子またはマクロ名における有効先頭文字数 31 254 7 外部識別子における有効先頭文字数 6 254 * 8 1 つの翻訳単位中における外部識別子数 511 ∞ 9 1 つのブロック中におけるブロック有効範囲を持つ識別子数 127 ∞ 10 1 つの翻訳単位で同時に定義されうるマクロ名の数 1024 ∞ 11 1 つの関数定義における仮引数の数 31 ∞ 12 1 つの関数呼び出しにおける実引数の数 31 ∞ 13 1 つのマクロ定義における仮引数の数 31 ∞ 14 1 つのマクロ呼び出しにおける実引数の数 31 ∞ 15 1 つの論理ソース行における文字数の最大値 509 ∞ 16 ( 連結後の ) バイト文字列リテラルまたは広角文字列リテラル中の文字数 ( 終端文字も含む ) 509 ∞ 17 1 つの算体のバイト数 32767 65535 18 #include ファイルにおける入れ子のレベル数 8 64 19 1 つの switch 文 ( 入れ子になった switch 文は除く ) 中における case 名札の数 257 ∞ 20 1 つの構造体または共用体のメンバ数 127 ∞ 21 1 つの列挙型における列挙型定数の数 127 ∞ 22 1 つの構造体宣言の並びにおける構造体または共用体定義の入れ子のレ ベル数 15 ∞ 表中の∞は , システムで使用できるメモリサイズによることを示しています。 * :コンパイラ識別する外部識別子の文字数は∞ですが , アセンブラには 255 文字のみ 出力します。先頭 254 文字が一致する識別子があると , アセンブラでエラーになり ます。 July 31, 2015, CM42-00328-9 119 第 5 章 拡張言語仕様 5.15 コンパイラの翻訳限界 So ft war e 120 S up po r t M a nu al CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 第6章 実行環境 ユーザプログラムが実行される環境としては , オペ レーティングシステムが存在するときと , オペレー ティングシステムの支援なしに実行されるときが 考えられます。オペレーティングシステムが存在 している環境においては , その環境に合わせた設定 処理を作成する必要があります。 オペレーティングシステムが存在していない環境 においての実行方法について説明します。 6.1 実行処理の概要 6.2 スタートアップルーチンの作成 6.3 ROM 化プログラムの注意事項 July 31, 2015, CM42-00328-9 121 第 6 章 実行環境 6.1 実行処理の概要 So ft war e 6.1 S up po r t M a nu al 実行処理の概要 オペレーティングシステムが存在していない環境においては , ユーザプログラムの 実行を開始させるスタートアップルーチンの作成が必要になります。 ■ 実行処理の概要 スタートアップルーチンに取り込む主な機能を以下に示します。 ● プログラムが動作する上で必要な環境の初期化 これらの初期設定は , アセンブラで記述され , ユーザプログラムが実行される前に行わ れる必要があります。 ● ユーザプログラムの呼び出し スタートアップルーチンがプログラム開始処理時に呼び出す関数として通常使用され る "void main(void)" を呼び出します。 ● 終了処理 ユーザプログラムから復帰後は , そのシステムで必要な終了処理が行われ , プログラム が終了します。 スタートアップルーチンとユーザ関数の呼び出し関係を図 6.1-1 に示します。 図 6.1-1 スタートアップルーチンとユーザ関数の呼び出し関係 スタートアップルーチン main(void) 環境の初期設定 ユーザプログラム ユーザプログラムの呼び出し 終了処理 ライブラリ スタートアップルーチンを作成する上で , 注意が必要な項目について以下に述べます。 ● スタック スタックは , ユーザプログラムを実行するときに , 戻り番地 , 引数格納領域 , 自動変数 領域 , レジスタ退避などに使用されるため , 十分な領域を確保することが必要になりま す。 122 CM42-00328-9, July 31, 2015 第 6 章 実行環境 6.1 実行処理の概要 S o ft w a r e S u p p o r t M a n u a l ● レジスタ スタートアップルーチンがユーザプログラムを呼び出すときには , スタックポインタ の設定が必要になります。ユーザプログラムでは , スタックポインタはスタックトップ が設定されているものとして動作します。また , スタートアップルーチンがユーザプロ グラムから復帰するときには , 表 6.1-1 のようなレジスタ状態になります。これは , 関 数呼び出し時のレジスタの保証と同じインタフェースをとることによるものです。 レジスタの保証については , 「4.7.5 レジスタ ( 引数のスタック渡し )」および , 「4.8.5 レジスタ ( 引数のレジスタ渡し )」を参照してください。ユーザプログラムで値を保証 されないレジスタに対し , システムがレジスタの保証を必要とする場合 , スタートアッ プルーチンで値を保証して呼び出す必要があります。 表 6.1-1 ユーザプログラムから復帰するときのレジスタ状態 レジスタ 復帰時の値の保証 A なし RW0 ~ RW2 あり * RW3 あり RW4, RW5 なし RW6, RW7 あり USP(SSP) あり *:-rp オプション指定時は , RW0, RW1 は保証なし July 31, 2015, CM42-00328-9 123 第 6 章 実行環境 6.2 スタートアップルーチンの作成 So ft war e 6.2 S up po r t M a nu al スタートアップルーチンの作成 スタートアップルーチンを作成時に , 必要な処理について説明します。 ■ スタートアップルーチンの作成 1. レジスタの初期設定: RP, ILM, DPR, SSB, SSP, DTB, USB, USP の初期設定を行いま す。レジスタバンクは , 最低 1 つは使用します。DTB は , 必ず 0 にしてください。 2. データ領域の初期化: C 言語仕様の上では , 初期値なし外部変数や静的変数は 0 に 初期化することを保証しているため , ここで 0 に初期化します。コンパイラは , _ _ far 型修飾された変数のセクションの初期化のために DCLEAR セクションを生成して います。このセクションには , 0 にクリアすべきセクションの先頭アドレスと , セク ションサイズが順に格納されているため , 0 初期化はこのセクションを利用して 行ってください。DCLEAR セクションを利用したセクションの 0 にクリアする方法 は図 6.2-1 を参照してください。DATA セクションおよび DIRDATA セクションは , この方法では 0 にクリアできないため別途 0 にクリアしてください。 3. 初期化データ領域の複写: 定数データやプログラムを ROM 化するときには , ROM 領域に置いた初期値データを変数領域 (RAM 領域 ) へ複写する必要があります。コ ンパイラは , _ _far 型修飾された初期値付変数のセクションの初期化のために DTRANS セクションを生成しています。このセクションには , 初期値を格納してい るセクションの先頭アドレス , 複写先のセクションの先頭アドレス , およびセク ションサイズが順に格納されているため , 初期値の複写処理はこのセクションを利 用して行ってください。DTRANS セクションを利用したセクションの初期化方法は 図 6.2-2 を参照してください。INIT セクションおよび DIRINIT セクションは , この 方法では初期化できないため別途初期値の転送を行ってください。 4. ライブラリの初期設定: ライブラリを使用するときには , 標準入出力用にファイル をオープンします。詳細は , 「8.2 ライブラリを使用する際に必要な初期化処理 / 終 了処理」を参照してください。 5. ユーザプログラムの呼び出し: ユーザプログラムを呼び出します。 6. プログラムの終了処理: オープンしているファイルのクローズ処理を行います。正 常終了や異常終了時の処理についてはシステムに合わせて作成してください。 図 6.2-1 DCLEAR セクションの例 (STARTUP࡛࠶ࡽࡌࡵᐃ⩏ࡋ࡚࠾ࡃ㸧 DCLEAR_SЍ DATA_ࣔࢪ࣮ࣗࣝྡࡢඛ㢌ࢻࣞࢫ DATA_ࣔࢪ࣮ࣗࣝྡࡢࢧࢬ #SIZEOF(DCLEAR)࡛⟬ฟ DATA_ࣔࢪ࣮ࣗࣝྡࡢඛ㢌ࢻࣞࢫ DATA_ࣔࢪ࣮ࣗࣝྡࡢࢧࢬ 124 CM42-00328-9, July 31, 2015 第 6 章 実行環境 6.2 スタートアップルーチンの作成 S o ft w a r e S u p p o r t M a n u a l 図 6.2-2 DTRANS セクションの例 (STARTUPであらかじめ定義しておく) DTRANS_S→ DCONST_モジュール名1の先頭アドレス INIT_モジュール名1の先頭アドレス INIT_モジュール名1のサイズ #SIZEOF(DTRANS)で算出 DCONST_モジュール名2の先頭アドレス INIT_モジュール名2の先頭アドレス INIT_モジュール名2のサイズ <注意事項> 「2) データ領域の初期化」および , 「3) 初期化データ領域の複写」の処理は , ラベル DCLEAR_S および , DTRANS_S が DCLEAR セクションおよび , DTRANS セクションの 先頭にあることが前提です。 コンパイラが生成した DCLEAR, DTRANS セクションを用いて , __far 型修飾された変数 領域の初期化を行う場合 , スタートアップルーチンのリンク順に注意してください。ス タートアップルーチンは , __far 型修飾された変数を定義しているどのモジュールよりも 前にリンクしてください。 July 31, 2015, CM42-00328-9 125 第 6 章 実行環境 6.3 ROM 化プログラムの注意事項 So ft war e 6.3 S up po r t M a nu al ROM 化プログラムの注意事項 ここでは , ROM 化プログラムの注意事項について記述します。 ■ ROM 化プログラムの注意事項 CONST セクションを ROM に配置する場合は , 必ずミラー領域に配置してください。 コンパイラは ,CONST セクション , DATA セクション , INIT セクションがすべて同じ バンク ( バンク 0) に配置されることを前提にコードを生成しています。しかし , CONST セクションを ROM に配置する場合は , RAM が割り当てられるバンク 0 に配置するこ とはできません。そのため , ミラー機能を用いて CONST セクションがバンク 0 に配置 されているように見せる必要があります。 126 CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 第7章 ライブラリの概要 ライブラリが提供するファイルの構成やライブラ リを組み込むシステムとの関係など , C ライブラリ の概要について説明します。 7.1 ファイルの構成 7.2 組み込むシステムとの関係 July 31, 2015, CM42-00328-9 127 第 7 章 ライブラリの概要 7.1 ファイルの構成 So ft war e 7.1 S up po r t M a nu al ファイルの構成 ここでは , ライブラリが提供しているファイルについて記述します。 ■ ファイルの構成 ライブラリファイル , ヘッダファイルには以下に示す種類があります。 ● ライブラリファイル 汎用標準ライブラリファイルの一覧を表 7.1-1 および表 7.1-2 に , シミュレータデバッ ガ用低水準関数ライブラリファイルの一覧を表 7.1-3 および表 7.1-4 に示します。 表 7.1-1 汎用標準ライブラリファイル一覧 ( 引数のスタック渡し用 ) ファイル名 メモリモデル lib907s.lib, lib905s.lib, lib904s.lib, lib902s.lib スモールモデル用 lib907m.lib, lib905m.lib, lib904m.lib, lib902m.lib ミディアムモデル用 lib907c.lib, lib905c.lib, lib904c.lib, lib902c.lib コンパクトモデル用 lib907l.lib, lib905l.lib, lib904l.lib, lib902l.lib ラージモデル用 lib907sr.lib, lib905sr.lib, lib904sr.lib, lib902sr.lib スモールモデル lib907mr.lib, lib905mr.lib, lib904mr.lib, lib902mr.lib ミディアムモデル ramconst 用 ramconst 用 表 7.1-2 汎用標準ライブラリファイル一覧 ( 引数のレジスタ渡し用 ) ファイル名 128 メモリモデル lib907s_rp.lib lib905s_rp.lib lib904s_rp.lib lib902s_rp.lib スモールモデル用 lib907m_rp.lib lib905m_rp.lib lib904m_rp.lib lib902m_rp.lib ミディアムモデル用 lib907c_rp.lib lib905c_rp.lib lib904c_rp.lib lib902c_rp.lib コンパクトモデル用 lib907l_rp.lib lib905l_rp.lib lib904l_rp.lib lib902l_rp.lib ラージモデル用 lib907sr_rp.lib lib905sr_rp.lib lib904sr_rp.lib lib902sr_rp.lib スモールモデル lib907mr_rp.lib lib905mr_rp.lib lib904mr_rp.lib lib902mr_rp.lib ミディアムモデル ramconst 用 ramconst 用 CM42-00328-9, July 31, 2015 第 7 章 ライブラリの概要 7.1 ファイルの構成 S o ft w a r e S u p p o r t M a n u a l 表 7.1-3 シミュレータデバッガ用低水準関数ライブラリファイル一覧 ( 引数のスタッ ク渡し用 ) ファイル名 メモリモデル lib907sif.lib, lib905sif.lib, lib904sif.lib, lib902sif.lib スモールモデル用 lib907mif.lib, lib905mif.lib, lib904mif.lib, lib902mif.lib ミディアムモデル用 lib907cif.lib, lib905cif.lib, lib904cif.lib, lib902cif.lib コンパクトモデル用 lib907lif.lib, lib905lif.lib, lib904lif.lib, lib902lif.lib ラージモデル用 lib907srif.lib, lib905srif.lib, lib904srif.lib, lib902srif.lib スモールモデル lib907mrif.lib, lib905mrif.lib, lib904mrif.lib, lib902mrif.lib ミディアムモデル ramconst 用 * ramconst 用 * 表 7.1-4 シミュレータデバッガ用低水準関数ライブラリファイル一覧 ( 引数のレジス タ渡し用 ) ファイル名 メモリモデル lib907sif_rp.lib lib905sif_rp.lib lib904sif_rp.lib lib902sif_rp.lib スモールモデル用 lib907mif_rp.lib lib905mif_rp.lib lib904mif_rp.lib lib902m_rp.lib ミディアムモデル用 lib907cif_rp.lib lib905cif_rp.lib lib904cif_rp.lib lib902c_rp.lib コンパクトモデル用 lib907lif_rp.lib lib905lif_rp.lib lib904lif_rp.lib lib902l_rp.lib ラージモデル用 lib907srif_rp.lib lib905srif_rp.lib lib904srif_rp.lib lib902srif_rp.lib スモールモデル lib907mrif_rp.lib lib905mrif_rp.lib lib904mrif_rp.lib lib902mr_rp.lib ミディアムモデル ramconst 用 * ramconst 用 * *:ramconst 用ライブラリは , -ramconst オプションの指定されたプログラム用のライブ ラリです。-ramconst の詳細は「3.5.6 出力オブジェクト関連オプション」を参照し てください。 ● ヘッダファイル ヘッダファイルには , 以下に示すものがあります。 assert.h ctype.h errno.h float.h limits.h math.h setjmp.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h 以下の 3 つのヘッダファイルは標準ライブラリが低水準関数ライブラリを呼び出す場 合に使用するマクロや型を定義しています。 fcntl.h July 31, 2015, CM42-00328-9 unistd.h sys/types.h 129 第 7 章 ライブラリの概要 7.1 ファイルの構成 So ft war e S up po r t M a nu al ■ ライブラリのセクション名 ライブラリのセクション名はメモリモデルごとに異なります。表 7.1-5 にライブラリが 使用しているセクション名を示します。 表 7.1-5 ライブラリのセクション名 セクション種別 130 スモール ミディアム コンパクト ラージ Code section CODE LIBCODE CODE LIBCODE Data section DATA DATA LIBDATA LIBDATA Initial value of INIT DCONST DCONST LIBDCONST LIBDCONST Initialized section INIT INIT LIBINIT LIBINIT Constant section CONST CONST LIBCONST LIBCONST RAM area of CONST CINIT CINIT CM42-00328-9, July 31, 2015 第 7 章 ライブラリの概要 7.2 組み込むシステムとの関係 S o ft w a r e 7.2 S u p p o r t M a n u a l 組み込むシステムとの関係 ここでは , ライブラリとライブラリを組み込むシステムとの関係について記述しま す。 ■ システム依存の処理 ファイル入出力やメモリ管理 , プログラムの終了方法はシステムに固有の処理となり ます。ライブラリは , これらシステム依存の処理が必要な場合 , 低水準関数として呼び 出しをします。低水準関数の詳細については「第 8 章 ライブラリの組込み」を参照し てください。 ライブラリを使用する際には , これらの低水準関数をシステムに合わせて作成してく ださい。 ■ 低水準関数 ( システム依存の処理 ) の種類 低水準関数の種類と簡単な機能を , 以下に記述します。低水準関数の詳細な機能につい ては「8.5 低水準関数の仕様」を参照してください。 • open:システム上のファイルをオープンする関数 • close:システム上のファイルをクローズする関数 • read:ファイルから文字を読みとる関数 • write:ファイルに文字を書き込む関数 • lseek:ファイル位置を変更する関数 • isatty:ファイルが端末ファイルか否かを検査する関数 • sbrk:メモリを動的に確保 / 変更する関数 • _exit:プログラムを正常終了する関数 • _abort:プログラムを異常終了する関数 ■ 時間関数 ( システム依存の処理 ) の種類 時間関数の種類と簡単な機能を , 以下に記述します。時間関数の詳細な機能については 「8.6 時間関数の仕様」を参照してください。 • clock:プログラムで使用したプロセッサ時間を得る関数 • time:現在の暦時間を得る関数 July 31, 2015, CM42-00328-9 131 第 7 章 ライブラリの概要 7.2 組み込むシステムとの関係 So ft war e 132 S up po r t M a nu al CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 第8章 ライブラリの組込み ライブラリを使用する際に準備が必要な処理 , およ び関数について記述します。 8.1 ライブラリの組込みの概略 8.2 ライブラリを使用する際に必要な初期化処理 / 終了処理 8.3 低水準関数の種類 8.4 標準ライブラリと必要な処理 / 低水準関数 8.5 低水準関数の仕様 8.6 時間関数の仕様 July 31, 2015, CM42-00328-9 133 第 8 章 ライブラリの組込み 8.1 ライブラリの組込みの概略 So ft war e 8.1 S up po r t M a nu al ライブラリの組込みの概略 ここでは , ライブラリの組込みの概略について記述します。 ■ ライブラリを使用する際に必要な処理と関数 ファイル入出力やメモリ管理 , プログラムの終了方法はシステムに依存した処理とな ります。このため , ライブラリではこれらの処理を標準ライブラリから切り離し , これ らの処理が必要なときには , 低水準関数として呼び出しを行います。このほか , スト リーム領域の初期化などライブラリを使用する際に必要な処理があります。ライブラ リを使用する際に準備が必要な処理 , 関数には以下のものがあります。 • ストリーム領域の初期化処理 • 標準入出力と標準エラー出力ファイルのオープンおよびクローズ処理 • 低水準関数の作成 • 時間関数の作成 ライブラリを組み込むときには , これらの処理や関数をシステムに合わせて作成して ください。 134 CM42-00328-9, July 31, 2015 第 8 章 ライブラリの組込み 8.2 ライブラリを使用する際に必要な初期化処理 / 終了処理 S o ft w a r e 8.2 S u p p o r t M a n u a l ライブラリを使用する際に必要な初期化処理 / 終了処理 ここでは , ライブラリを使用するために必要な初期化処理 / 終了処理について記述し ます。 ■ 初期化処理 / 終了処理 標準ライブラリ関数の一部には , 以下の処理を必要とする関数があります。 • ストリーム領域の初期化 • 標準入出力と標準エラー出力ファイルのオープンおよびクローズ なお , 必要とする関数については「8.4 標準ライブラリと必要な処理 / 低水準関数」を 参照してください。 ■ ストリーム領域の初期化 _stream_init 関数はストリーム領域を初期化します。スタートアップルーチンにおいて この関数を呼び出し , ストリーム領域を初期化してください。 void _stream_init(void); ■ 標準入出力と標準エラー出力ファイルのオープンおよびクローズ 標準入出力と標準エラー出力はプログラムの中でオープンおよびクローズ処理が行な われないため , main 関数の呼び出し前にオープン処理が , main 関数の終了後にクロー ズ処理が必要になります。スタートアップルーチンで , main 関数を呼び出す以前にオー プン処理を , main 関数終了後にクローズ処理を行ってください。ただし , _stream_init 関数は stdin, stdout, stderr ストリームにそれぞれファイル番号 0, 1, 2 を関連づけるため , システム上の標準入力 , 標準出力 , 標準エラー出力がファイル番号 0, 1, 2 としてオープ ンされている場合には , オープン処理は必要ありません。システム上の標準入出力と標 準エラー出力がオープンされていない場合や , ファイル番号が異なる場合には , 以下の 処理によりシステム上のファイルをオープンしてください。 • freopen(" 標準入力名 ", "r", stdin); • freopen(" 標準出力名 ", "w", stdout); • freopen(" 標準エラー出力名 ", "w", stderr); これら処理にともなうエラーの検出は必要に応じて行ってください。また , 標準入出力 名や標準エラー出力名は open 関数で指定されたファイル名を記述してください。 クローズ処理は , fclose 関数を用いて行ってください。 ■ タイムゾーンの設定 タイムゾーンは , グローバル変数 _TZ に設定してください。 _TZ に設定する値の単位は " 秒 " であるため , JST( 日本時間 ) の場合は 9*3600 を設定 してください。 _TZ を使用する場合には , time.h をインクルードしてください。 mktime 関数 , ctime 関数 , localtime 関数を使用する場合は , _TZ を初期化してください。 _TZ の値は mktime 関数 , ctime 関数 , localtime 関数の実行中に変更しないようにしてく ださい。 変更された場合の結果は保証されません。変更する場合は , これらの関数実行後に行っ てください。 July 31, 2015, CM42-00328-9 135 第 8 章 ライブラリの組込み 8.3 低水準関数の種類 So ft war e 8.3 S up po r t M a nu al 低水準関数の種類 ここでは , 標準ライブラリ関数と必要とする低水準関数の概要について記述します。 標準ライブラリ関数が必要とする低水準関数には , 以下の 6 種類があります。 • ファイルのオープン , クローズ (open, close) • ファイルへの入出力 (read, write) • ファイル位置の変更 (lseek) • ファイルの検査 (isatty) • メモリ領域の動的確保 (sbrk) • プログラムの異常終了 , 正常終了 (_abort, _exit) これらの処理は , 関連する標準ライブラリから呼び出され , システム上の実際のファ イルを操作したり , プログラムの実行を制御したりします。 ■ 低水準関数の種類 ● ファイルのオープンおよびクローズ fopen 関数などのファイルをオープンするすべての関数は open 関数を呼び出すことに よりシステム上の実際のファイルをオープンします。同様に , fclose などのファイルを クローズするすべての関数は close 関数を呼び出すことによりシステム上の実際のファ イルをクローズします。 ● ファイルへの入出力 scanf 関数や printf 関数などの入出力関数は read 関数や write 関数を呼び出すことによ り , システム上の実際のファイルに対して入出力を行います。 ● ファイル位置の変更 fseek 関数などのファイル位置の操作関数は , lseek 関数を呼び出すことによりシステム 上の実際のファイル位置の取得や変更を行います。 ● ファイルの検査 オープンされているファイルが端末ファイルか否かを調べます。 ● メモリ領域の動的確保 malloc 関数などのメモリ領域を動的に確保する関数は , sbrk 関数を呼び出すことにより 割り当てるメモリ領域の確保や解放を行います。 ● プログラムの異常終了と正常終了 abort 関数および exit 関数は終了処理として , それぞれは _abort 関数および _exit 関数を 呼び出します。 136 CM42-00328-9, July 31, 2015 第 8 章 ライブラリの組込み 8.4 標準ライブラリと必要な処理 / 低水準関数 S o ft w a r e 8.4 S u p p o r t M a n u a l 標準ライブラリと必要な処理 / 低水準関数 ここでは , 標準ライブラリ関数と関連する初期化 , 終了処理および低水準関数につい て記述します。 ■ 標準ライブラリ関数と必要な処理 / 低水準関数 低水準関数を使用する標準ライブラリと関連する初期化処理 / 終了処理 , および低水準 関数を表 8.4-1 に示します。 表 8.4-1 標準ライブラリ関数と必要な処理 / 低水準関数 標準ライブラリ関数 低水準関数 初期化処理 / 終了処理 assert() abort() * open() read() lseek() sbrk() close() write() isatty() _abort() ストリーム領域の初期化処理の標準入出力, 標準エラー出力のオープンとクローズ stdio.h のファイル操作 関数 open() read() lseek() sbrk() close() write() isatty() ストリーム領域の初期化処理の標準入出力, 標準エラー出力のオープンとクローズ calloc() malloc() realloc() free() sbrk() exit() * open() read() lseek() sbrk() close() write() isatty() _exit() ストリーム領域の初期化処理の標準入出力, 標準エラー出力のオープンとクローズ *:abort 関数 , exit 関数は , 呼び出されたときにオープンされているファイルのクロー ズ処理を行います。このため , ファイル操作関連の低水準関数 (open, close, read, write, lseek, sbrk) やストリーム領域の初期化などの処理が必要になります。 ファイルを使用していないプログラムにおいては , abort 関数の代わりに _abort 関数 を直接呼び出すことができます。また , atexit 関数による関数の登録をしていないプ ログラムで , ファイルを使用していない場合には , exit 関数の代わりに _exit 関数を 直接呼び出すことができます。これらの場合には , ファイル操作関連の低水準関数 , ストリーム領域の初期化などは必要ありません。 July 31, 2015, CM42-00328-9 137 第 8 章 ライブラリの組込み 8.5 低水準関数の仕様 So ft war e 8.5 S up po r t M a nu al 低水準関数の仕様 低水準関数には , ファイル処理を行うための関数 (open, close, read, write, lseek, isatty), メモリ領域の動的割り付けを行うための関数 (sbrk) および exit 関数 , abort 関数呼び出しによるプログラムの終了を行うための関数 (_exit, _abort) があります。 これらの低水準関数をシステムに合わせて作成してください。 ■ 低水準関数 低水準関数は , この節で記述する仕様に従って作成してください。 138 CM42-00328-9, July 31, 2015 第 8 章 ライブラリの組込み 8.5 低水準関数の仕様 S o ft w a r e S u p p o r t M a n u a l open 関数 8.5.1 open 関数は , 以下の仕様に従って作成してください。 #include <fcntl.h> int open( char *fname, int fmode, int p ); ■ open 関数 【説明】 fname で指定された名前のファイルを fmode で指定されたモードでオープンしてくだ さい。fmode は , 以下に示す各フラグの組み合わせ ( 論理和 ) で指定されます。p は , 指 定されたファイルが新規作成される場合にそのファイルに設定される許可モードで す。標準関数 fopen(), freopen() が open() 関数を呼び出す場合 , 常に 0777 を渡します。 • O_RDONLY: リードオンリファイルのオープン • O_WRONLY: ライトオンリファイルのオープン • O_RDWR: リードライトファイルのオープン 以上 3 つのフラグは , 排他的に指定されます。 • O_CREAT : 指定されたファイルがない場合 , 作成してください。ファイルがすで に存在している場合 , このフラグを無視してください。 • O_TRUNC : ファイル内にデータが残っていた場合 , その内容を捨て , ファイルの 内容を空にしてください。 • O_APPEND : 追加モードでのオープン指定です。 オープン時のファイルの位置は ファイルの最後を示すように設定してください。また , このモードが 指定されたファイルへの書込みは , 現在のファイル位置にかかわらず ファイルの最後尾より書き込んでください。 • O_BINARY : バイナリファイルの指定です。オープンされたファイルをバイナリ ファイルとして扱ってください。また , この指定がされていないファ イルは , テキストファイルとして扱ってください。 第1引数に, システム環境において決められた標準入出力および標準エラー出力の名前 がファイル名として指定された場合 , オープンするファイルに標準入出力と標準エ ラー出力を割り当ててください。 【返却値】 ファイルのオープンに成功した場合はファイル番号を返却してください。ファイルの オープンに失敗した場合は -1 を返却してください。 July 31, 2015, CM42-00328-9 139 第 8 章 ライブラリの組込み 8.5 低水準関数の仕様 So ft war e 8.5.2 S up po r t M a nu al close 関数 close 関数は , 以下の仕様に従って作成してください。 int close(int fileno); ■ close 関数 【説明】 fileno で指定されたファイルのクローズ処理を行ってください。 【返却値】 ファイルのクローズ処理に成功した場合は 0 を返却し , 失敗した場合 -1 を返却してく ださい。 140 CM42-00328-9, July 31, 2015 第 8 章 ライブラリの組込み 8.5 低水準関数の仕様 S o ft w a r e S u p p o r t M a n u a l read 関数 8.5.3 read 関数は , 以下の仕様に従って作成してください。 int read(int fileno, char *buf, int size); ■ read 関数 【説明】 fileno で指定されたファイルより , size バイトのデータを buf で指定された領域に入力 してください。このとき , システム環境下においてテキストファイルの改行文字が "\n" 以外の場合 , read 関数において "\n" に変換して設定してください。 【返却値】 ファイルからの入力に成功した場合は入力した文字数を返却し , 失敗した場合は -1 を 返却してください。入力途中でファイルが終了した場合 , 入力文字数として size より 小さい値を返却しても構いません。 July 31, 2015, CM42-00328-9 141 第 8 章 ライブラリの組込み 8.5 低水準関数の仕様 So ft war e S up po r t M a nu al write 関数 8.5.4 write 関数は , 以下の仕様に従って作成してください。 int write (int fileno, char *buf, int size); ■ write 関数 【説明】 buf で指定された領域の size バイト分のデータを , fileno で指定されたファイルに出力 してください。ファイルが追加モードでオープンされていた場合 , 出力を常にファイル の最後に追加するようにしてください。このとき , システム環境下においてテキスト ファイルの改行文字が "\n" 以外の場合 , write 関数において "\n" をシステム環境下の改 行文字に変換し , 出力してください。 【返却値】 ファイルへの出力が成功した場合は出力した文字数を返却し , 失敗した場合は -1 を返 却してください。 142 CM42-00328-9, July 31, 2015 第 8 章 ライブラリの組込み 8.5 低水準関数の仕様 S o ft w a r e 8.5.5 S u p p o r t M a n u a l lseek 関数 lseek 関数は , 以下の仕様に従って作成してください。 #include <unistd.h> long int lseek( int fileno, off_t offset, int whence); ■ lseek 関数 【説明】 fileno で指定されるファイルのファイル位置を , whence で指定される位置から offset バ イト離れた位置に移動してください。ファイル位置はファイルの先頭からのバイト数 で決められます。whence で指定する位置には , 以下の 3 つがあります。 • SEEK_CUR:現在のファイル位置に offset 値を加えます。 • SEEK_END:ファイルの最後に offset 値を加えます。 • SEEK_SET:ファイルの先頭に offset 値を加えます。 【返却値】 ファイル位置の変更が成功した場合は新しいファイル位置を返却し , 失敗した場合は -1L を返却してください。 July 31, 2015, CM42-00328-9 143 第 8 章 ライブラリの組込み 8.5 低水準関数の仕様 So ft war e 8.5.6 S up po r t M a nu al isatty 関数 isatty 関数は , 以下の仕様に従って作成してください。 int isatty(int fileno); ■ isatty 関数 【説明】 fileno で指定されるファイルが端末ファイルか否かを調べ , 端末ファイルの場合は真を 返し , それ以外の場合は偽を返してください。 【返却値】 端末ファイルの場合は真を返し , それ以外の場合は偽を返してください。 144 CM42-00328-9, July 31, 2015 第 8 章 ライブラリの組込み 8.5 低水準関数の仕様 S o ft w a r e S u p p o r t M a n u a l sbrk 関数 8.5.7 sbrk 関数は , 以下の仕様に従って作成してください。 char *sbrk( int size); ■ sbrk 関数 【説明】 既存の領域を size バイト分拡張してください。size が負の数の場合 , 領域を縮小してく ださい。sbrk 関数の呼び出しが以前にない場合 , size バイトの領域を確保してくださ い。sbrk 関数の呼び出しにより領域は図 8.5-1 のように変化します。 図 8.5-1 sbrk 関数の呼び出しによる領域の変化 Low 変更前 sizeが正の ときの変更後 sizeが負の ときの変更後 保存領域 sizeバイト *1 sizeバイト High 返却値は*1(変更前の領域の最後のアドレス)+1 【返却値】 領域サイズの変更に成功した場合は拡張する前の領域の最後のアドレス+ 1 を返却し , sbrk 関数の呼び出しが以前にない場合は確保された領域の先頭アドレスを返却してく ださい。変更に失敗した場合 , (char)-1 を返却してください。 July 31, 2015, CM42-00328-9 145 第 8 章 ライブラリの組込み 8.5 低水準関数の仕様 So ft war e S up po r t M a nu al _exit 関数 8.5.8 _exit 関数は , 以下の仕様に従って作成してください。 #include <stdlib.h> void _exit( int status); ■ _exit 関数 【説明】 _exit 関数は , プログラムを正常終了させます。status の値が 0, または EXIT_SUCCESS の場合は成功の終了状態をシステム環境に戻し , EXIT_FAILURE の場合は不成功の終 了状態をシステム環境に戻してください。 【返却値】 _exit 関数は , 呼び出し元に返りません。 146 CM42-00328-9, July 31, 2015 第 8 章 ライブラリの組込み 8.5 低水準関数の仕様 S o ft w a r e 8.5.9 S u p p o r t M a n u a l _abort 関数 _abort 関数は , 以下の仕様に従って作成してください。 void _abort( void); ■ _abort 関数 【説明】 _abort 関数は , プログラムを異常終了させてください。 【返却値】 _abort 関数は , 呼び出し元に返りません。 July 31, 2015, CM42-00328-9 147 第 8 章 ライブラリの組込み 8.6 時間関数の仕様 So ft war e 8.6 S up po r t M a nu al 時間関数の仕様 時間関数には , 使用したプロセッサ時間を取得するための clock 関数および , 現在の 暦時刻を取得するための time 関数があります。 これらの時間関数をシステムに合わせて作成してください。 ■ 時間関数 時間関数は , この節で記述する仕様に従って作成してください。 148 CM42-00328-9, July 31, 2015 第 8 章 ライブラリの組込み 8.6 時間関数の仕様 S o ft w a r e 8.6.1 S u p p o r t M a n u a l clock 関数 clock 関数は , 以下の仕様に従って作成してください。 #include <time.h> clock_t clock(void); ■ clock 関数 【説明】 そのプログラムで使用したプロセッサ時間を返却してください。 マクロ CLOCKS_PER_SEC の値で割ると秒になるように返却値を調整してください。 【返却値】 使用したプロセッサ時間が得られないかまたは , その値が表現できない場合 , 値 (clock_t)-1 を返却してください。 July 31, 2015, CM42-00328-9 149 第 8 章 ライブラリの組込み 8.6 時間関数の仕様 So ft war e S up po r t M a nu al time 関数 8.6.2 time 関数は , 以下の仕様に従って作成してください。 #include <time.h> time_t time(time_t *timer); ■ time 関数 【説明】 1970 年 1 月 1 日 00:00:00(UTC) を 0 とした , 現在の暦時間を秒単位で返却してください。 【返却値】 暦時刻が有効でない場合 , 値 (time_t)-1 を返却してください。 timer が空ポインタでない場合 , timer が指すオブジェクトにも返却値を代入してくださ い。 150 CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 第9章 コンパイラにより 異なる仕様 コンパイラにより異なる仕様について説明します。 ANSI 規格を元に規格化された JIS 規格に関連させ た記述となっています。 9.1 コンパイラに依存した言語仕様の相違点 9.2 浮動小数点データの形式と表現できる値の範囲 9.3 実行時ライブラリ関数による浮動小数点データの演算 July 31, 2015, CM42-00328-9 151 第 9 章 コンパイラにより 異なる仕様 9.1 コンパイラに依存した言語仕様の相違点 So ft war e 9.1 S up po r t M a nu al コンパイラに依存した言語仕様の相違点 表 9.1-1 にコンパイラに依存した言語仕様の相違点について示します。 ■ コンパイラに依存した言語仕様の相違点 表 9.1-1 コンパイラに依存した言語仕様の相違点 (1 / 2) 仕様の相違内容 152 JIS 規格の関連箇所 本コンパイラ 日本語処理のサポートとコード系 "5.2.1 文字集合 " "6.1.2 識別子 " サポートしない コメントにのみ EUC および SJIS が記述可能 外部結合を持つ識別子の認識文字数 "6.1.2 識別子 " 先頭 254 文字 外部結合を持つ識別子の英大文字と英 小文字の区別 "6.1.2 識別子 " 別の文字として扱う 文字集合の要素を表すコード系 "6.1.3 定数 " ASCII コード char 型の扱いと表現できる値の範囲 "6.2.1.1 文字型と整数型 " 符号なし *1 0 ~ 255 浮動小数点データの形式と大きさ float 型 double/long double 型 "6.1.2.5 型 " IEEE 形式 *2 4 バイト 8 バイト 以下の型をビットフィールドに指定し た場合 , 先頭ビットを符号ビットとし て扱うか否か char, short int, int, long int 型 "6.5.2.1 構造体指定子および 共用体指定子 " 符号として扱わない *1 ビットフィールドとして指定できる型 "6.5.2.1 構造体指定子および 共用体指定子 " char 型 signed char 型 unsigned char 型 short int 型 unsigned short int 型 int 型 unsigned int 型 long int 型 unsigned long int 型 列挙型 CM42-00328-9, July 31, 2015 第 9 章 コンパイラにより 異なる仕様 9.1 コンパイラに依存した言語仕様の相違点 S o ft w a r e S u p p o r t M a n u a l 表 9.1-1 コンパイラに依存した言語仕様の相違点 (2 / 2) 仕様の相違内容 JIS 規格の関連箇所 構造体型または共用体型のメンバの境 界整列の値 char 型 signed char 型 unsigned char 型 short int 型 unsigned short int 型 int 型 unsigned int 型 long int 型 unsigned long int 型 float 型 double 型 long double 型 ポインタ型 "6.5.2.1 構造体指定子および共 用体指定子 " プリプロセッサでの文字定数を表す コード系 "6.8.1 条件付き取込み " asm 文内で指定できるレジスタ ANSI 規格の標準ライブラリ関数のサ ポート 本コンパイラ 1 バイト 1 バイト 1 バイト 2 バイト 2 バイト 2 バイト 2 バイト 2 バイト 2 バイト 2 バイト 2 バイト 2 バイト 2 バイト ASCII コード A, AL, AH *3 「付録 A 型 , マクロ , 変数 , 関数一 覧」を参照 *1:オプションにより変更できます。 *2:後述の「9.2 浮動小数点データの形式と表現できる値の範囲」を参照してください。 *3:その他のレジスタは利用者が退避および復元を行えば , 使用できます。 July 31, 2015, CM42-00328-9 153 第 9 章 コンパイラにより 異なる仕様 9.2 浮動小数点データの形式と表現できる値の範囲 So ft war e 9.2 S up po r t M a nu al 浮動小数点データの形式と表現できる値の範囲 浮動小数点データの形式と表現できる値の範囲を , 表 9.2-1 に示します。 ■ 浮動小数点データの形式と表現できる値の範囲 表 9.2-1 浮動小数点データの形式と表現できる値の範囲 浮動小数点データの形式 154 表現できる値の範囲 float 型 指数部は 2-126 ~ 2+127 の値 仮数の小数部 ( 整数部は 1 に正規化 ) は 2 進で 24 桁の精度 double 型 指数部は 2-1022 ~ 2+1023 の値 仮数の小数部 ( 整数部は 1 に正規化 ) 2 進で 53 桁の精度 long double 型 指数部は 2-1022 ~ 2+1023 の値 仮数の小数部 ( 整数部は 1 に正規化 ) 2 進で 53 桁の精度 CM42-00328-9, July 31, 2015 第 9 章 コンパイラにより 異なる仕様 9.3 実行時ライブラリ関数による浮動小数点データの演算 S o ft w a r e 9.3 S u p p o r t M a n u a l 実行時ライブラリ関数による浮動小数点データの演算 浮動小数点データの演算は , コンパイラによる最適化の段階で行われるものを除き , すべて実行時ライブラリ関数で行われます。これらの実行時ライブラリ関数は , ANSI/IEEE Std754-1985 規格を参考に設計されていますが , 完全には準拠していま せん。実行時ライブラリ関数の仕様と ANSI/IEEE Std754-1985 規格との相違点につ いて説明します。 ■ 浮動小数点数の四則演算 ( 加算 , 減算 , 乗算 , 除算 ) ● 結果仮数部のまるめ 最近値まるめのみをサポートしています。 ● 非正規化数の取り扱い 非正規化数である被演算数は , 同じ符号を持つ 0.0 として扱います。非正規化数である 演算数も , 同じ符号を持つ 0.0 として扱います。演算結果が 0.0 となる場合 , 0.0 の代わ りに非正規化数が返却される場合があります。 ● アンダフロー例外時の演算結果 正しい演算結果の絶対値が小さいために正規化数として表現できない場合にアンダフ ローが発生したものとみなします。演算結果は , 正しい符号を持つ 0.0 となります。 ● オーバフロー例外時の演算結果 演算結果は , 正しい符号を持つ無限大となります。 ● 無効演算例外時の演算結果 演算結果は非数となります。 SNaN(SignalingNaN) と QNaN(QuietNaN) の区別はありません。 ● 演算例外時の割込み 発生しません。 ● ステータスフラグ サポートしていません。 ■ 浮動小数点数の比較 ● 非正規化数の取り扱い 非正規化数は , 同じ符号を持つ 0.0 とみなします。 ● 無効演算例外時の演算結果 ライブラリ関数の返却値は不定となります。 ● 演算例外発生時の割込み 発生しません。 ● ステータスフラグ サポートしていません。 July 31, 2015, CM42-00328-9 155 第 9 章 コンパイラにより 異なる仕様 9.3 実行時ライブラリ関数による浮動小数点データの演算 So ft war e S up po r t M a nu al ■ 整数型から浮動小数点型への型変換 ● 結果仮数部のまるめ 最近値まるめのみをサポートしています。 ● 演算例外発生時の割込み 発生しません。 ● ステータスフラグ サポートしていません。 ■ 浮動小数点型から整数型への型変換 ● 無効演算例外時の演算結果 演算結果として不定値を返却します。 ● 演算例外発生時の割込み 発生しません。 ● ステータスフラグ サポートしていません。 ■ 浮動小数点数から浮動小数点数への型変換 ● 結果仮数部のまるめ 最近値まるめのみをサポートしています。 ● 非正規化数の取り扱い 変換前の値が非正規化数である場合 , 同じ符号を持つ 0.0 として扱います。変換結果が 0.0 となる場合 , 0.0 の代わりに非正規化数が返却される場合があります。 ● アンダフロー例外時の演算結果 正しい演算結果の絶対値が小さいために正規化数として表現できない場合にアンダフ ローが発生したものとみなします。演算結果は , 正しい符号を持つ 0.0 となります。 ● オーバフロー例外時の演算結果 演算結果は , 正しい符号を持つ無限大となります。 ● 無効演算例外時の演算結果 演算結果は非数となります。 SNaN(SignalingNaN) と QNaN(QuietNaN) の区別はありません。 ● 演算例外発生時の割込み 発生しません。 ● ステータスフラグ サポートしていません。 156 CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 第 10 章 シミュレータデバッガ用 低水準関数ライブラリ シミュレータデバッガ用低水準関数ライブラリは , シミュレータデバッガ上で標準ライブラリを使用 する場合に必要な低水準関数のライブラリです。 シミュレータデバッガ用の低水準関数ライブラリ の利用方法について説明します。 10.1 低水準関数ライブラリの概略 10.2 低水準関数ライブラリの利用 10.3 低水準関数の機能 10.4 低水準関数ライブラリの変更 July 31, 2015, CM42-00328-9 157 第 10 章 シミュレータデバッガ用 低水準関数ライブラリ 10.1 低水準関数ライブラリの概略 So ft war e 10.1 S up po r t M a nu al 低水準関数ライブラリの概略 低水準関数ライブラリの概略について記述します。 ■ 低水準関数ライブラリの概略 低水準関数ライブラリは , シミュレータデバッガ上で標準ライブラリを使用するため に必要な機能を提供します。主な機能は , 以下のとおりです。 • I/O ポートシミュレーションを利用したファイル操作機能 (open, close, read, write, lseek, isatty) • 動的メモリの割り当て機能 (sbrk) シミュレータデバッガ上では , 実行プログラムが自ら実行を終了できないため , _abort, _cxit 関数は作成してください。 ■ ファイルシステムの概略 低水準関数ライブラリでは , シミュレータデバッガの I/O ポートシミュレーション機能 を利用し , 標準入出力やファイルへの入出力を行います。1 つの I/O ポート領域を 1 つ のファイルとし , そのポートに対して入出力を行うことにより実現しています。 open 関数は , 呼び出されると低水準関数ライブラリで定義している I/O ポートシミュ レーションのための領域 (I/O セクション ) から 1 バイト領域を割り当て , その領域の先 頭からのオフセットをファイル番号として返します。 read 関数と write 関数は , open 関数により割り当てられた 1 バイト領域に対して入出力 を行います。 プログラムの実行前にこの領域に対してシミュレータデバッガのコマンド (set inport, set outport) を使用して , 標準入出力やファイルを割り当てておくことにより標準入出 力やファイルに対して入出力が可能になります。 close 関数はすでに割り当てられている領域を解放し , 再利用可能にします。シミュレー タデバッガ上ではファイル位置の変更はできないため , lseek 関数は必ず -1 が返却され ます。 ■ 領域管理 sbrk 関数により返される領域は , あらかじめ確保された外部変数領域を使用します。 sbrk 関数が呼び出されると , 領域のアドレスの低い方から領域を割り当てます。 158 CM42-00328-9, July 31, 2015 第 10 章 シミュレータデバッガ用 低水準関数ライブラリ 10.2 低水準関数ライブラリの利用 S o ft w a r e 10.2 S u p p o r t M a n u a l 低水準関数ライブラリの利用 低水準関数ライブラリを使用する場合のロードモジュールの作成やシミュレータデ バッガの設定方法について記述します。 ■ 初期化処理 _stream_init 関数の呼び出し以外には , 初期化処理は必要ありません。スタートアップ ルーチンをシステムに合わせて作成する場合には , main 関数呼び出し前に _stream_init 関数を呼び出してください。 ■ ロードモジュールの作成 必要なプログラムを作成後 , 必要なすべてのモジュールをコンパイル , リンクしてくだ さい。メモリモデルに合わせて , 表 10.2-1 に示すライブラリをリンクしてください。 なお , 低水準ライブラリは , シミュレータデバッガを起動するホストに応じて選択して ください。 表 10.2-1 ロードモジュールの作成時にリンクが必要なライブラリ メモリ モデル スモール モデル -rp オプション 指定 ramconst 指定 なし なし lib907s.lib lib904s.lib lib905s.lib lib902s.lib lib907sif.lib lib904sif.lib lib905sif.lib lib902sif.lib あり lib907sr.lib lib904sr.lib lib905sr.lib lib902sr.lib lib907srif.lib lib904srif.lib lib905srif.lib lib902srif.lib なし lib907s_rp.lib lib904s_rp.lib lib905s_rp.lib lib902s_rp.lib lib907sif_rp.lib lib904sif_rp.lib lib905sif_rp.lib lib902sif_rp.lib あり lib907sr_rp.lib lib904sr_rp.lib lib905sr_rp.lib lib902sr_rp.lib lib907srif_rp.lib lib904srif_rp.lib lib905srif_rp.lib lib902srif_rp.lib なし lib907m.lib lib904m.lib lib905m.lib lib902m.lib lib907mif.lib lib904mif.lib lib905mif.lib lib902mif.lib あり lib907mr.lib lib904mr.lib lib905mr.lib lib902mr.lib lib907mrif.lib lib904mrif.lib lib905mrif.lib lib902mrif.lib なし lib907m_rp.lib lib904m_rp.lib lib905m_rp.lib lib902m_rp.lib lib907mif_rp.lib lib904mif_rp.lib lib905mif_rp.lib lib902mif_rp.lib あり lib907mr_rp.lib lib904mr_rp.lib lib905mr_rp.lib lib902mr_rp.lib lib907mrif_rp.lib lib904mrif_rp.lib lib905mrif_rp.lib lib902mrif_rp.lib なし なし lib907c.lib lib904c.lib lib905c.lib lib902c.lib lib907cif.lib lib904cif.lib lib905cif.lib lib902cif.lib あり なし lib907c_rp.lib lib904c_rp.lib lib905c_rp.lib lib902c_rp.lib lib907cif_rp.lib lib904cif_rp.lib lib905cif_rp.lib lib902cif_rp.lib なし なし lib907l.lib lib904l.lib lib905l.lib lib902l.lib lib907lif.lib lib904lif.lib lib905lif.lib lib902lif.lib あり なし lib907l_rp.lib lib904l_rp.lib lib905l_rp.lib lib902l_rp.lib lib907lif_rp.lib lib904lif_rp.lib lib905lif_rp.lib lib902lif_rp.lib あり ミディアム モデル なし あり コンパクト モデル ラージ モデル July 31, 2015, CM42-00328-9 標準ライブラリ 低水準ライブラリ 159 第 10 章 シミュレータデバッガ用 低水準関数ライブラリ 10.2 低水準関数ライブラリの利用 So ft war e S up po r t M a nu al ■ シミュレータデバッガの設定 標準入出力を使用する場合の設定は次のとおりです。 【デバッガでの設定例】 set inport/ascii 0, 0xff, $TERMINAL set outport/ascii 1, 0xff, $TERMINAL I/O セクションの先頭から 3 つの領域は標準入力 , 標準出力 , および標準エラー出力に 使用されているため , それ以外のファイルは 4 つ目の領域 (I/O セクション先頭からの オフセットは 3) から割り当てられます。つまり , ファイルがオープンされた順にオフ セット 3, オフセット 4 と割り当てられていきます。したがって , それに合わせて , set inport, set outport コマンド利用して設定してください。最初に "a.doc" を入力ファイル としてオープンしてから , 次に "b.doc" を出力ファイルとしてオープンする場合の設定 は次のとおりです。 set inport/ascii 3, h'ff, "a.doc" set outport/ascii 4, h'ff, "b.doc" ■ 例 文字列"Hello!!"を表示するプログラムをスモールモデルで作成し, シミュレータデバッ ガで実行します。 main() { printf("Hello!!\n"); } 上記のような C ソースファイル (test.c) を作成します。 以下のコマンドによりコンパイルします。LIBTOOL には対応するディレクトリを設定 してください。 fcc907s test.c flnk907s -l -model SMALL -cpu MB90F553A LIBTOOL/start905s.obj test.obj lib905s.lib, lib905sif.lib -o L tcst.abs LIBTOOL -cpu MB90F553A この操作により test.abs が作成されます。できあがったファイルをシミュレータデバッ ガにより実行します。 起動後 , 以下のコマンドを入力します。end は , スタートアップルーチン中で定義され たシンボルです。スタートアップルーチンのオブジェクトを , デバッグ情報付きで作成 してください。 > set inport/ascii h'0, h'ff, $TERMINAL > set outport/ascii h'1, h'ff, $TERMINAL > go , end この例では標準入力がないため , set inport コマンドは省略してもかまいません。 160 CM42-00328-9, July 31, 2015 第 10 章 シミュレータデバッガ用 低水準関数ライブラリ 10.3 低水準関数の機能 S o ft w a r e 10.3 S u p p o r t M a n u a l 低水準関数の機能 シミュレータデバッガ用低水準関数の固有の機能について記述します。 ■ 特殊な I/O ポート 低水準関数では I/O セクションの先頭から 3 バイトは , それぞれ標準入力 , 標準出力 , および標準エラー出力として機能するように作成されています。これらのファイル番 号はそれぞれ , 0, 1, 2 に割り当てられており , オープンされた状態に初期化されます。 表 10.3-1 に既定義の I/O ポートを示します。 表 10.3-1 既定義の I/O ポート アドレス ファイル番号 ファイルの種類 0 0 標準入力 1 1 標準出力 2 2 標準エラー出力 標準入力 ( ファイル番号 0) からの入力は , 標準出力 ( ファイル番号 1) に出力されます。 また , 標準入力 ( ファイル番号 0) の入力は , 改行文字 "\n" が入力されると入力を中断し ます。しかし , それ以外のポートからの入力の場合には要求文字数が読みとれるまで入 力を続けます。 ■ open 関数 open 関数は使われていない I/O ポート領域を見つけ , その領域の I/O セクションの先頭 からのオフセットをファイル番号として返します。このとき , ファイル名やオープン モードの指定は使用しません。同じファイル名でオープンしても別のファイル番号が 割り当てられます。ファイル番号 0, 1, 2 は , オープンされた状態に初期化されているた め , 0, 1, 2 をクローズ処理していない限り , open 関数はファイル番号 3 から割り当てを 開始します。ファイル番号 0 から 4 の最大 5 ファイルを同時にオープンできます。 ■ read 関数 指定されたファイル番号を I/O セクションの先頭アドレスに加えたアドレスにより , 指 定される I/O ポート領域からデータを読みとります。ファイル番号が 0 からの入力は 行入力となり , 改行文字 "\n" が入力されると要求文字数よりも少ない場合でも read 関 数を終了します。また , この入力は標準出力 ( ファイル番号 1) に出力されます。ファイ ル番号 0 以外の入力は , ブロック入力となり , 要求文字数になるまで読み続けます。 ■ write 関数 指定されたファイル番号を I/O セクションの先頭アドレスに加えたアドレスにより , 指 定される I/O ポート領域にデータを書き込みます。入力のように I/O ポート領域のアド レスにより動作は変わりません。 ■ lseek 関数 シミュレータデバッガ上では , ファイル位置は指定できないため常にファイル位置変 更の失敗を示す -1 を返します。 July 31, 2015, CM42-00328-9 161 第 10 章 シミュレータデバッガ用 低水準関数ライブラリ 10.3 低水準関数の機能 So ft war e S up po r t M a nu al ■ isatty 関数 ファイル番号 0, 1, 2 の場合は真を返し , それ以外は偽を返します。 ■ close 関数 指定されたファイル番号のポートを解放します。 ■ sbrk 関数 シミュレータデバッガでは , メモリを動的に確保する方法がありません。そこで sbrk 関数では固定の領域を確保し , その領域を利用しています。この領域または領域のサイ ズを変更する場合には sbrk 関数の代替関数を作成し , ライブラリアンにて置換してく ださい。詳細については , 「10.4 低水準関数ライブラリの変更」を参照してください。 162 CM42-00328-9, July 31, 2015 第 10 章 シミュレータデバッガ用 低水準関数ライブラリ 10.4 低水準関数ライブラリの変更 S o ft w a r e 10.4 S u p p o r t M a n u a l 低水準関数ライブラリの変更 ここでは , 動的確保領域の変更について記述します。 ■ 動的確保領域の変更 「sbrk.c ソースプログラムリスト」の次の行の数値を , 動的確保領域のサイズに変更し てください。指定はバイト単位です。 #define HEAP_SIZE 16*1024 以下のコマンドでコンパイル , ライブラリの更新を行います。コンパイル時に , 表 7.11 で示されたセクション名を指定してください。 【スモールモデルの場合】 > fcc907s -O sbrk.c -model SMALL -cpu MB90F553A > flib907s -r sbrk.obj lib905sif.lib -cpu MB90F553A 【ラージモデルの場合】 > fcc907s -O sbrk.c -model LARGE -s FAR_CODE=LIBCODE -s FAR_DCONST=LIBDCONST -s FAR_INIT=LIBINIT -s FAR_DATA=LIBDATA -s FAR_CONST=LIBCONST -cpu MB90F553A > flib907s -r sbrk.obj lib905lif.lib -cpu MB90F553A ■ sbrk.c ソースプログラムリスト 動的領域の変更に必要なソースプログラムを記述します。ファイル名は sbrk.c として ください。 #define HEAP_SIZE 16*1024 static long brk_siz = 0; static char _heap[HEAP_SIZE]; #define _heap_size HEAP_SIZE extern char *sbrk(int size) { if (brk_siz + size > _heap_size || brk_siz + size < 0) return((char*)-1); brk_siz += size; return(_heap + brk_siz - size); } July 31, 2015, CM42-00328-9 163 第 10 章 シミュレータデバッガ用 低水準関数ライブラリ 10.4 低水準関数ライブラリの変更 So ft war e 164 S up po r t M a nu al CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 付録 ライブラリで提供する型 , マクロ , 変数 , 関数の一 覧とライブラリ固有の動作について記述します (A, B)。F2MC-16LX CPU を使用する際の注意事項に ついて記述します (C)。関数呼び出しインタフェー スを引数のレジスタ渡しに変更するためのガイド を記述します (D)。エラーメッセージの一覧を記述 します (E)。C ライブラリのリエントラント性につ いて記述します (F)。スタンバイ制御マクロ , CPU 間欠動作制御マクロ , ソフトウェアリセットマクロ について記述します (G)。 付録 A 型 , マクロ , 変数 , 関数一覧 付録 B ライブラリ固有の動作 付録 C F2MC-16LX CPU の符号付き除算命令の注意事項に ついて 付録 D 関数呼び出しインタフェース変更ガイド 付録 E エラーメッセージ一覧 付録 F C ライブラリのリエントラント性について 付録 G スタンバイ制御マクロ , CPU 間欠動作制御マクロ , ソフトウェアリセットマクロ 付録 H 16FX ファミリ TBR レジスタ使用方法 付録 I 処理系定義の動作 付録 J 主な変更内容 July 31, 2015, CM42-00328-9 165 付録 付録 A 型 , マクロ , 変数 , 関数一覧 So ft war e 付録 A S up po r t M a nu al 型 , マクロ , 変数 , 関数一覧 ライブラリで提供する型 , マクロ , 変数 , 関数の一覧を記述します。 ■ assert.h ● 関数 assert ■ ctype.h ● マクロ isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper ■ errno.h ● マクロ EDOM ERANGE ● 変数 errno ■ float.h ● マクロ FLT_RADIX FLT_ROUNDS FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG FLT_DIG DBL_DIG LDBL_DIG FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN FLT_MIN_10_EXP DBL_MIN_10_EXP LDBL_MIN_10_EXP FLT_MAX_EXP LDBL_MAX_EXP FLT_MAX_10_EXP DBL_MAX_10_EXP LDBL_MAX_10_EXP FLT_MAX DBL_MAX LDBL_MAX FLT_EPSILON DBL_EPSILON LDBL_EPSILON FLT_MIN DBL_MIN DBL_MAX EXP LDBL_MIN 166 CM42-00328-9, July 31, 2015 付録 付録 A 型 , マクロ , 変数 , 関数一覧 S o ft w a r e S u p p o r t M a n u a l ■ limits.h ● マクロ MB_LEN_MAX CHAR_BIT SCHAR_MIN SCHAR_MAX UCHAR_MAX CHAR_MIN CHAR_MAX INT_MIN INT_MAX UINT_MAX SHRT_MIN SHRT_MAX USHRT_MAX LONG_MIN LONG_MAX ULONG_MAX ■ math.h ● マクロ HUGE_VAL EDOM ERANGE ● 関数 acos asin atan atan2 cos sin tan cosh sinh tanh exp frexp ldexp log log10 modf pow sqrt ceil fabs floor fmod ■ stdarg.h ●型 va_list ● マクロ va_start va_arg ptrdiff_t size_t va_end ■ stddef.h ●型 ● マクロ NULL July 31, 2015, CM42-00328-9 offsetof 167 付録 付録 A 型 , マクロ , 変数 , 関数一覧 So ft war e S up po r t M a nu al ■ stdio.h ●型 ptrdiff_t size_t FILE fpos_t NULL EOF SEEK_SET SEEK_CUR SEEK_END _IONBF _IOLBF _IOFBF BUFSIZ stdin stdout stderr putchar putc getchar getc offsetof putchar putc getchar getc fclose fflush fopen freopen setbuf setvbuf fprintf fscanf printf scanf sprintf sscanf vfprintf vprintf vsprintf fgetc fgets fputc fputs gets puts ungetc fread fwrite fgetpos fseek fsetpos ftell rewind clearerr feof size_t div_t ldiv_t ● マクロ ● 関数 ferror ■ stdlib.h ●型 ptrdiff_t ● マクロ NULL 168 offsetof EXIT_FAILURE EXIT_SUCCESS RAND_MAX CM42-00328-9, July 31, 2015 付録 付録 A 型 , マクロ , 変数 , 関数一覧 S o ft w a r e S u p p o r t M a n u a l ● 関数 atof atoi atol strtod strtol strtoul rand srand calloc free malloc realloc abort atexit exit bsearch qsort abs div labs ldiv ■ string.h ●型 ptrdiff_t size_t ● マクロ NULL offsetof memcpy memmove strcpy strncpy strcat strncat memcmp strcmp strncmp memchr strchr strcspn strpbrk strrchr strspn strstr strtok memset strlen O_RDONLY O_WRONLY O_RDWR O_APPEND O_TRUNC O_BINARY ● 関数 ■ fcntl.h ● マクロ O_CREAT ■ unistd.h ● マクロ SEEK_SET July 31, 2015, CM42-00328-9 SEEK_CUR SEEK_END 169 付録 付録 A 型 , マクロ , 変数 , 関数一覧 So ft war e S up po r t M a nu al ■ setjmp.h ●型 jmp_buf ● マクロ setjmp ● 関数 longjmp ■ sys/types.h ●型 off_t ■ time.h ●型 clock_t time_t struct tm ● マクロ CLOCKS_PER_SEC ● 変数 _TZ ● 関数 170 asctime() ctime() mktime() strftime() difftime() gmtime() localtime() CM42-00328-9, July 31, 2015 付録 付録 B ライブラリ固有の動作 S o ft w a r e 付録 B S u p p o r t M a n u a l ライブラリ固有の動作 ライブラリ固有の動作について記述します。 ■ ライブラリ固有の動作 ● assert 関数により印刷される診断情報と assert 関数の終了動作 【診断情報】 < Program Diagnosis *** information of fail expression > file : _ _ FILE_ _ で展開されるファイル名 line : _ _ LINE_ _ で展開される行番号 expression : 式 【終了動作】 abort 関数の呼び出しと同等です。 ● isalnum, isalpha, iscntrl, islower, isprint, isupper 関数の検査文字の集合 • isalnum:"0" ~ "9", "a" ~ "z", "A" ~ "Z" • isalpha:"a" ~ "z", "A" ~ "Z" • iscntrl:"\000" ~ "\037", "\177" • islower:"a" ~ "z" • isprint:"\040" ~ "\176" • isupper:"A" ~ "Z" ● 定義域エラー時の数学関数の返す値 • qNaN ● アンダフロー発生時に , 数学関数が errno にマクロ ERANGE の値を設定するか否か • ERANGE • 検出可能な場合の結果の値は +0 または -0 とします。 • 検出不可能な場合の結果の値は不定 , 関数に依存します。 ● fmod 関数の第 2 実引数が 0 だった場合定義域エラーとするか , 0 を復帰するか • 定義域エラーとします。 ● ファイルバッファリングの特性 【入力ファイルのバッファリング特性】 • IOLBF, IOFBF: フルバッファリング • IONBF: バッファリングなし 【出力ファイルのバッファリング特性】 • IOFBF: フルバッファリング • IOLBF: 行バッファリング • IONBF: バッファリングなし July 31, 2015, CM42-00328-9 171 付録 付録 B ライブラリ固有の動作 So ft war e S up po r t M a nu al 【フルバッファリング】 設定されたすべてのバッファ領域を用いてバッファリングを行います。ファイルから の入力では , 入力関数が呼ばれたときに , バッファ内にデータが残っている場合 , その データをファイルからの入力として返します。もし, バッファ内にデータがない場合や, データが足りない場合にはバッファが一杯になるまでファイルから入力してから , 必 要量だけ入力として返します。ファイルへの出力では , 出力関数はファイルへの出力の 代わりにバッファに対して書き込みます。書込みによりバッファが一杯になったとき には , バッファからファイルへ一括して出力します。 【行バッファリング】 出力行ごとにバッファリングを行います。 【バッファリングなし】 入出力関数呼び出しによる入出力要求に応じて , ファイルの入出力が行われます。他の バッファリングのようにメモリ上に保存することはありません。 ● %p 書式変換におけるポインタサイズについて スモールモデル , ミディアムモデルは 16 ビット , ラージモデル , コンパクトモデルは 32 ビットで扱います。 ● fprintf 関数の %p 書式変換の出力形式 • スモールモデル , ミディアムモデル: 4 桁の 16 進表記で 4 桁に満たない場合 , 先行 する 0 を付加します。英字は大文字を使用します。 • ラージモデル , コンパクトモデル: 桁数が 8 桁になること以外はスモールモデルと 同じです。 ● fprintf, printf, sprintf, vfprintf, vprintf, vsprintf 関数における変換指定の拡張 • %s, %n 変換指定の拡張 スモールモデル , ミディアムモデル : 'F' を指定することにより , 対応する引数が __far 修飾されたポインタであることを指示できます。 【例】 #include <stdio.h> __far char a[] = "abc"; main() { printf("%-16Fs\n", a); } ラージモデル, コンパクトモデル: 'N' を指定することにより, 対応する引数が __near 修 飾されたポインタであることを指示できます。 【例】 #include <stdio.h> __near char a[] = "abc"; main() { printf("%-16Ns\n", a); } • %p 変換指定の拡張 スモールモデル, ミディアムモデル: 'l' を指定することにより, 対応する引数が __far 修 飾されたポインタであることを指示できます。 【例】 #include <stdio.h> __far char a[] = "abc"; main() { printf("%lp\n", a); } 172 CM42-00328-9, July 31, 2015 付録 付録 B ライブラリ固有の動作 S o ft w a r e S u p p o r t M a n u a l ラージモデル , コンパクトモデル : 'h' を指定することにより , 対応する引数が __near 修 飾されたポインタであることを指示できます。 【例】 #include <stdio.h> __near char a[] = "abc"; main() { printf("%hp\n", a); } ● fscanf 関数における %p 書式変換の入力形式 英大文字または英子文字を用いた 16 進表記の数値形式 , 4 桁 ( スモールモデル , ミディ アムモデル ) または 8 桁 ( ラージモデル , コンパクトモデル ) に満たない場合は先行す る0を付加します。また, 前記の桁数を超えた場合は下位の部分のみが有効となります。 ● fscanf, scanf, sscanf 関数における変換指定の拡張 スモールモデル , ミディアムモデル : %% を除くすべての変換指定に 'F' を指定できま す。この 'F' は , 対応する引数が __far 修飾されたポインタであることを示します。 【例】 #include <stdio.h> __far int a; int b; main() { scanf("%Fd %d\n", &a, &b); } ラージモデル , コンパクトモデル : %% を除くすべての変換指定に 'N' を指定できます。 この 'N' は , 対応する引数が __near 修飾されたポインタであることを示します。 【例】 #include <stdio.h> __near int a; int b; main() { scanf("%Nd %d\n", &a, &b); } ● %[ 書式変換に対する scan-list 内の先頭または最後尾以外の場所で現れる単一の "-" 文字の解 釈 "-" の左側の文字から右側の文字までの文字の連続として扱います。 【例】 %[a-c] は %[abc] と同等です。 ● オープンされているファイルに関する abort 関数の動作 すべてのストリームをフラッシュした後でクローズします。 ● 実引数の値が0, EXIT_SUCCESSおよびEXIT_FAILURE以外であった場合のexit関数によっ て返される状態 EXIT_FAILURE と同じ状態を返します。 July 31, 2015, CM42-00328-9 173 付録 付録 B ライブラリ固有の動作 So ft war e S up po r t M a nu al ● 浮動小数点数の限界値 • FLT_MAX 7F7F FFFF • DBL_MAX 7FEF FFFF • FLT_EPSILON 3400 0000 • DBL_EPSILON 3CB0 0000 • FLT_MIN 0080 0000 • DBL_MIN 0010 0000 FFFF FFFF 0000 0000 0000 0000 ● setjmp 関数 , longjmp 関数での制限 ライブラリでは , 割込み環境はサポートしていないため , 割込みハンドラでの環境退避 および割込みハンドラへの復帰はできません。 ● va_start マクロの制限 va_start マクロの第 2 引数には , 次に示す型として定義した変数を用いないでください。 • char 型 , unsigned char 型 ( ただし , これらの型へのポインタ型は使用できます ) • register 記憶域クラスを持つ型 • 関数型 • 配列型 • 構造体型 • 共用体型 • 既定の実引数拡張を適用結果の型と一致しない型 ● ファイルの種類 ライブラリで扱うことのできるファイルには , テキストファイルとバイナリファイル の 2 種類があります。ライブラリではファイルがオープンされたときに呼び出す open 関数の第2引数が異なることを除いて, テキストファイルとバイナリファイルは同じも のとして扱います。バイナリファイルが指定された場合 , open 関数の第 2 引数に O_BINARY が追加されます。open 関数の引数については , 「8.5.1 open 関数」を参照 してください。 ● div_t 型 , ldiv_t 型 下記の構造体と等価です。 div_t: struct { int quot; int rem; }; ldiv_t: struct { long int quot; long int rem; }; 174 CM42-00328-9, July 31, 2015 付録 付録 B ライブラリ固有の動作 S o ft w a r e S u p p o r t M a n u a l ● abort 関数の動作 abort 関数が呼び出されると , オープンしているすべての出力ストリームをフラッシュ し , その後 , オープンしているすべてのストリームをクローズします。最後に , _abort 関数を呼び出します。 ● atexit 関数により登録できる関数の最大個数 最大 32 個まで登録できます。 ● exit 関数の動作 exit 関数が呼び出されると , 最初に , atexit 関数によって登録されたすべての関数を , 登 録の逆順で呼び出します。次に , オープンしているすべての出力ストリームをフラッ シュし , その後 , オープンしているすべてのストリームをクローズします。最後に , 引 数として渡された status の値を持って , _exit 関数を呼び出します。status の値は , 0 ま たは EXIT_SUCCESS の場合 , 成功の終了状態を示し , EXIT_FAILURE の場合 , 不成功 の状態を示します。 ● fopen 関数により同時にオープンできるファイルの最大数 同時にオープンできるファイルの最大数は , 20 個です。この上限を超えてファイルを オープンすると , fopen 関数は , NULL を返します。 ● clock_t 型 clock_t 型は double 型で定義されています。 clock_t 型の値は , マクロ CLOCKS_PER_SEC の値で割ると秒になるように調整してく ださい。 ● time_t 型 time_t 型は double 型で定義されています。 日付および時間ライブラリで使用可能な日時の範囲は次のとおりです。 基点 1970 年 1 月 1 日 00:00:00(UTC) 最小単位 1秒 上限 約 3170 万年 double 型の値の整数部のみ使用し , 小数部は切り捨てます。 ただし , difftime 関数は , 小数部を切り捨てずに計算した結果を返却します。 double 型を使用しているため , IO に直結することはできません。 1970 年以前を示すために負の値を使用した場合 , ライブラリ関数の結果は保証しませ ん。 ● clock 関数および , time 関数について clock 関数および , time 関数は , システムに依存する処理を行う関数であるため , 標準ラ イブラリとして提供しておりません。「8.6 時間関数の仕様」を参照して作成してくだ さい。 July 31, 2015, CM42-00328-9 175 付録 付録 B ライブラリ固有の動作 So ft war e S up po r t M a nu al ● タイムゾーンについて タイムゾーンは , グローバル変数 _TZ に設定してください。 _TZ に設定する値の単位は " 秒 " であるため , JST( 日本時間 ) の場合は 9*3600 を設定 してください。 _TZ を使用する場合には , time.h をインクルードしてください。 mktime 関数 , ctime 関数 , localtime 関数を使用する場合は , _TZ を初期化してください。 _TZ の値は mktime 関数 , ctime 関数 , localtime 関数の実行中に変更しないようにしてく ださい。 変更された場合の結果は保証されません。変更する場合は , これらの関数実行後に行っ てください。 ● 夏時間について 夏時間が採用されているかどうかの情報を得る手段はありません。したがって , 構造体 struct tm 型のメンバである夏時間フラグ tm_isdst の値は , 使用時に修正する必要があり ます。 夏時間フラグを使用する関数の動作は以下のとおりです。 - localtime 関数は , tm_isdst の値を -1 に設定します。 - ctime 関数は , 夏時間を採用しないと仮定して文字列を返却します。 - mktime 関数は , tm_isdst が正しい値であると仮定して動作します。 - mktime 関数は , tm_isdst の値が -1 の時に夏時間を採用しません。 - mktime 関数は , tm_isdst の値を変更しません。 ● strftime 関数で使用できるロケール "C" ロケールのみです。 176 CM42-00328-9, July 31, 2015 付録 付録 C F2MC-16LX CPU の符号付き除算命令の注意事項につい て S o ft w a r e 付録 C S u p p o r t M a n u a l F2MC-16LX CPU の符号付き除算命令の注意事項に ついて F2MC-16LX CPU を使用する際の注意事項について記述します。 ■ F2MC-16LX CPU の符号付き除算命令の注意事項について 【対象品種】 F2MC-16LX ファミリの MB905XX シリーズ全品種と QCM16LX コア採用品 (MB90520/A, MB90540, MB90550A, MB90560, MB90570/A, MB90580/B, MB90590, MB90595 シリーズの EVA 品 , OTP 品 , FLASH 品 , Mask 品のすべてと , QCM16LX コア 採用品 ) 【使用に当たっての注意事項】 符号付き除算命令「DIV A,Ri」, 「DIVW A,RWi」において , 命令実行結果により得ら れる余りが , 本来の仕様ではバンクレジスタの影響を受けず , 命令オペランドのレジス タに格納されますが , 実際には , 以下の表に従ったメモリバンク領域の命令オペランド のレジスタに相当するアドレスに格納されることが判明致しました。以下に , 詳細を示 します。 July 31, 2015, CM42-00328-9 177 付録 付録 C F2MC-16LX CPU の符号付き除算命令の注意事項につい て So ft war e S up po r t M a nu al ●「DIV A,Ri」, 「DIVW A,RWi」命令の使用上の注意事項 命令の実行結果により得られる余りは , 下記の表に従ったメモリバンク領域 ( 上位 8 ビット ) の命令オペランドのレジスタに相当するアドレス ( 下位 16 ビット ) に格納さ れます。このため , 「DIV A,Ri」, 「DIVW A,RWi」命令は対応するバンクレジスタを '00H' にして使用してください。 命令 左記命令実行時に 影響を受ける バンクレジスタ名 余りが格納されるアドレス DIV A,R0 DTB (DTB: 上位 8 ビット )+(0180H+RP × 10H+8H: 下位 16 ビット ) (DTB: 上位 8 ビット )+(0180H+RP × 10H+9H: 下位 16 ビット ) (DTB: 上位 8 ビット )+(0180H+RP × 10H+CH: 下位 16 ビット ) (DTB: 上位 8 ビット )+(0180H+RP × 10H+DH: 下位 16 ビット ) (DTB: 上位 8 ビット )+(0180H+RP × 10H+0H: 下位 16 ビット ) (DTB: 上位 8 ビット )+(0180H+RP × 10H+2H: 下位 16 ビット ) (DTB: 上位 8 ビット )+(0180H+RP × 10H+8H: 下位 16 ビット ) (DTB: 上位 8 ビット )+(0180H+RP × 10H+AH: 下位 16 ビット ) ADB (ADB: 上位 8 ビット )+(0180H+RP × 10H+AH: 下位 16 ビット ) (ADB: 上位 8 ビット )+(0180H+RP × 10H+EH: 下位 16 ビット ) (ADB: 上位 8 ビット )+(0180H+RP × 10H+4H: 下位 16 ビット ) (ADB: 上位 8 ビット )+(0180H+RP × 10H+CH: 下位 16 ビット ) USB *1 SSB *1 (USB *2: 上位 8 ビット )+(0180H+RP × 10H+BH: 下位 16 ビット ) (USB *2: 上位 8 ビット )+(0180H+RP × 10H+FH: 下位 16 ビット ) (USB *2: 上位 8 ビット )+(0180H+RP × 10H+6H: 下位 16 ビット ) (USB *2: 上位 8 ビット )+(0180H+RP × 10H+EH: 下位 16 ビット ) DIV A,R1 DIV A,R4 DIV A,R5 DIVW A,RW0 DIVW A,RW1 DIVW A,RW4 DIVW A,RW5 DIV A,R2 DIV A,R6 DIVW A,RW2 DIVW A,RW6 DIV A,R3 DIV A,R7 DIVW A,RW3 DIVW A,RW7 *1: CCR レジスタの S ビットによる *2: CCR レジスタの S ビットが 0 の時 バンクレジスタ (DTB, ADB, USB, SSB) の値が '00H' の場合 , 除算の結果の余りは命令オ ペランドのレジスタに格納されます。バンクレジスタの値が '00H' 以外の場合 , 上位 8 ビットアドレスは命令オペランドのレジスタに対応したバンクレジスタにより指定さ れます。下位 16 ビットアドレスは , 命令オペランドのレジスタのアドレスと同じアド レスとなり , そこに余りが格納されます。 例 ) DTB=053H/RP=003H の場合で「DIV A,R0」を実行すると , R0 のアドレスは , 0180H+RP(3H) × 10H+8H(R0 相当アドレス )=0001B8H です。 ここで ,「DIV A,R0」で指定されるバンクレジスタは DTB のため , バンク指定 053H を 付加したアドレスすなわち 05301B8H に余りが格納されます。 (Ri および , RWi のレジスタについては , ご使用する品種の『ハードウェアマニュアル』 の汎用レジスタの説明を参照してください。) 【注意事項の回避について】 上記注意事項を回避してプログラムを開発していただくために , コンパイラでは上記 命令を生成しないように変更し , アセンブラでは上記命令を同等の命令列に置き換え る機能を追加したものを以下のとおり提供します。そのため , MB905XX シリーズをご 使用の際はこのコンパイラとアセンブラを利用してください。 178 CM42-00328-9, July 31, 2015 付録 付録 C F2MC-16LX CPU の符号付き除算命令の注意事項につい て S o ft w a r e S u p p o r t M a n u a l 対策アセンブラ:asm907a の V03L04 以降のバージョンおよび , fasm907s の V30L04(Rev.300004) 以降のバージョン 対策コンパイラ:cc907 の V02L06 以降のバージョンおよび , fcc907s の V30L02 以降の バージョン また , 現行のコンパイラにおいては F2MC-16L モードでご使用いただくことにより本注 意事項を回避することができます。 【補足説明】 ● 注意事項の開発済みプログラムへの影響について 本注意事項の命令実行の影響は , EVA 品でも発生するため , エミュレータを使ったデ バッグにおいて現象を確認できます。 このため , プログラム中に符号付き除算命令があっても , デバッグにおいて正常動作が 確認できていれば , その注意事項に起因する問題は発生しません。 また , アセンブラでのプログラム開発では , 1.「DIV A,Ri」, 「DIVW A,RWi」命令を使用していなければ問題ありません。 2.「DIV A,Ri」, 「DIVW A,RWi」命令を使用しているが , 各バンクレジスタが '00H' で あれば問題ありません。 3. これ以外の DIV 命令は問題ありません。 C コンパイラでのプログラム開発では , 1. スモールモデル , ミディアムモデルにおいて , __far 型修飾されたデータがなく , か つ , 対応するバンクレジスタを '00H'( 初期値 ) で使用している 場合は問題ありません (スモールモデル, ミディアムモデルにおいて, __far型修飾されたデータがない場合, C コンパイラは , スタートアップルーチンで初期化された各バンクレジスタの値を 変更することはありません ) 。 2. 対応するバンクレジスタを'00H'(初期値)で使用していても, 以下のいずれかの場合, 「DIV A,R2」, 「DIV A,R6」, 「DIVW A,RW2」, 「DIVW A,RW6」命令が , ADB の 影響を受ける可能性があります。 - スモール , ミディアムモデルにおいて , __far 型修飾されたデータがある。 - コンパクト , ラージモデルを使用している。 (C コンパイラは 2 の条件の場合は ADB レジスタを変更する可能性があります。) しかし , デバッグにおいて正常動作が確認できていれば , そのプログラムでは問題 はありません。 July 31, 2015, CM42-00328-9 179 付録 付録 D 関数呼び出しインタフェース変更ガイド So ft war e 付録 D S up po r t M a nu al 関数呼び出しインタフェース変更ガイド 関数呼び出しインタフェースを変更した場合 , 一部のレジスタの使用方法や関数の 引数の受け渡し方法が変わります。このため , 従来の関数呼び出しインタフェース ( 以降「引数のスタック渡し」とよぶ ) と新しいインタフェース ( 以降「引数のレジ スタ渡し」とよぶ ) が混在した場合 , 正しく動作しません。 ここでは , プログラムを新しい関数呼び出しインタフェースへ変更する方法と , その 際に注意すべき点について説明します。 ■ 新しい関数呼び出しインタフェース F2MC-16 ファミリ SOFTUNE では , 関数の引数をスタックで受け渡す従来の関数呼び 出しインタフェース (「引数のスタック渡し」) に加え , 関数の引数をレジスタ (RW0, RW1) で受け渡す新しい関数呼び出しインタフェース (「引数のレジスタ渡し」) をサ ポートしました。 関数呼び出しインタフェースを「引数のレジスタ渡し」にすると , 一部の引数はレジス タで受け渡されます。引数がレジスタで受け渡されることにより , コードサイズおよび スタック使用量が削減され , 実行速度を改善できます。 しかし , 「引数のレジスタ渡し」と「引数のスタック渡し」とでは引数の受け渡し方法 とレジスタの使用方法が異なっているため , 関数呼び出しインタフェースの異なるオ ブジェクトを混在して使用するとプログラムが正しく動作しません。このため , Workbench/ アセンブラ / リンカ / ライブラリアンは関数呼び出しインタフェースに関す る矛盾を検出したときに , 警告またはエラーメッセージを出力します。 新しい関数呼び出しインタフェースの詳細または , 使用方法については , 以下のマニュ アルを参照してください。 ● F2MC-16 ファミリ SOFTUNE C コンパイラマニュアル 「関数呼び出しインタフェース ( 引数のレジスタ渡し ) 」 「スタックフレーム ( 引数のレジスタ渡し ) 」 「引数 ( 引数のレジスタ渡し ) 」 「引数の拡張形式 ( 引数のレジスタ渡し ) 」 「呼び出し手続き ( 引数のレジスタ渡し ) 」 「レジスタ ( 引数のレジスタ渡し ) 」 「戻り値 ( 引数のレジスタ渡し ) 」 ● F2MC-16 ファミリ SOFTUNE アセンブラマニュアル 「-rp, -Xrp」 「.REG_PASS 命令」 180 CM42-00328-9, July 31, 2015 付録 付録 D 関数呼び出しインタフェース変更ガイド S o ft w a r e S u p p o r t M a n u a l ● F2MC-16 ファミリ SOFTUNE リンケージキットマニュアル 「リンカでの関数呼び出しインタフェースの異なるオブジェクトの混在について」 「引数のレジスタ渡し用ロードモジュール指定オプション (-rp)」 「引数のスタック渡し用ロードモジュール指定オプション (-Xrp)」 「ライブラリアンでの関数呼び出しインタフェースの異なるオブジェクトの混在について」 「引数のレジスタ渡し用ライブラリ出力指定オプション (-rp)」 「引数のスタック渡し用ライブラリ出力指定オプション (-Xrp)」 ● F2MC-16 ファミリ SOFTUNE Workbench 操作マニュアル 「プロジェクトの登録」 「プロジェクトの設定」-「一般」 ■ 関数呼び出しインタフェースの変更の流れ 関数呼び出しインタフェースを「引数のスタック渡し」から「引数のレジスタ渡し」へ 変更する場合 , 以下の手順で行ってください。 図 D-1 関数呼び出しインタフェースの変更の流れ アセンブラソースを修正してください。 例)startup.asm (「アセンブラソースの修正」を参照してください) Workbenchを使用してビルドしていますか? Yes プロジェクトの関数呼び出しインタ フェースを「引数レジスタ渡し」に 変更して再ビルドしてください。 (「Workbenchでの変更」を参照して ください) No コンパイラ/アセンブラ/リンカ/ライ ブラリアンすべてに-rpオプションを 指定して再ビルドしてください。 (「Workbenchを使用しない場合の変 更」を参照してください) ■ 関数呼び出しインタフェースの変更の詳細 ● アセンブラソースの修正 関数呼び出しインタフェースを「引数のスタック渡し」から「引数のレジスタ渡し」へ 変更する場合 , 以下の手順でアセンブラソースの修正を行ってください。 1. .REG_PASS 擬似命令の記述 アセンブラは , -rp オプションが指定された場合 , 引数のレジスタ渡し用オブジェク トを出力します。しかし , -rp オプションの指定のみでは , 入力アセンブラソースが , 引数のレジスタ渡し用か引数のスタック渡し用かのどちらかを判別できません。 .REG_PASS 擬似命令は , アセンブラソースが引数のレジスタ渡し用アセンブラ ソースであることを示す擬似命令です。 アセンブラは , -rp オプション指定時に .REG_PASS 擬似命令の記述がないアセンブ ラソースをアセンブルするとエラーを出力します。 引数スタック渡し用アセンブラソースを引数のレジスタ渡し用アセンブラソース に変更する場合 , .REG_PASS 擬似命令を記述してください。 記述位置は , .END 擬似命令以前であればどの位置でも記述可能です。 July 31, 2015, CM42-00328-9 181 付録 付録 D 関数呼び出しインタフェース変更ガイド So ft war e S up po r t M a nu al 【.REG_PASS 擬似命令の記述例】 .PROGRAM _func .TITLE _func ; register argument passing .REG_PASS : 2. 引数の受け渡し方法の変更 アセンブラソースに , 引数を持つ関数の定義および , 引数を持つ関数の呼び出しが ある場合 , 引数の受け渡し方法を「引数のレジスタ渡し」に変更する必要がありま す。 C コンパイラのアセンブラ記述機能 (asm 文 ) で , 引数を持つ関数の定義および , 引 数を持つ関数の呼び出しを行う場合にも , 同様な修正が必要です。 引数の受け渡し方法を「引数のレジスタ渡し」に変更する場合 , 「4.8 関数呼び出 しインタフェース ( 引数のレジスタ渡し )」の表にしたがって変更してください。 【引数を持つ関数の定義の修正例】 ( 引数のスタック渡し ) ( 引数のレジスタ渡し ) _func: _func: LINK #0 LINK #0 MOVW A, @RW3+4 MOVW RW4, @RW3+4 ADDW A, @RW3+6 MOVW A, RW0 ADDW A, @RW3+8 ADDW A, RW1 MOVW _var, A ADDW A, RW4 MOVW _var, A : : 【引数を持つ関数の呼び出しの修正例】 ( 引数のスタック渡し ) ( 引数のレジスタ渡し ) : MOVW A, #3 MOVW A, #3 PUSHW A PUSHW A MOVW A, #2 MOVW A, #2 PUSHW A MOVW RW1, A MOVW A, #1 MOVW A, #1 PUSHW A MOVW RW0, A CALL _func CALL _func ADDSP #6 POPW AH : 182 : : CM42-00328-9, July 31, 2015 付録 付録 D 関数呼び出しインタフェース変更ガイド S o ft w a r e S u p p o r t M a n u a l 補足 )「引数のスタック渡し」と「引数のレジスタ渡し」のアセンブラソースの兼用方法 既定義マクロ "__REG_PASS__" を使用することで , 「引数のスタック渡し」と「引 数のレジスタ渡し」で兼用のアセンブラソースを作成できます。 既定義マクロ "__REG_PASS__" は , -rp オプションを指定してアセンブルされた場 合に 1 を設定し , -rp オプションが指定されずにアセンブルされた場合に 0 を設定し ます。 【既定義マクロ "__REG_PASS__" の記述例】 .PROGRAM _func .TITLE _func #if __REG_PASS__ ; register argument passing .REG_PASS #endif : <注意事項> 関数呼び出しインタフェースが「引数のレジスタ渡し」の場合 , レジスタ RW0, RW1 の 関数からの復帰時の値は保証されません。関数呼び出しを越えてこれらのレジスタを使用 しないようにしてください。 ● Workbench での変更 プロジェクトの関数呼び出しインタフェースを「引数のスタック渡し」に変更してく ださい。 関数呼び出しインタフェースで , 「引数のレジスタ渡し」が選択された場合 , コンパイ ラ / アセンブラ / リンカおよびライブラリアン起動時に -rp オプションが自動的に適用 されます。 1. 現在のプロジェクトの設定を変更する場合 [ プロジェクトの設定 ] ダイアログにおいてプロジェクトの関数呼び出しインタ フェースを「引数のレジスタ渡し」に変更してください。 July 31, 2015, CM42-00328-9 183 付録 付録 D 関数呼び出しインタフェース変更ガイド So ft war e S up po r t M a nu al 図 D-2 プロジェクトの設定ダイアログ 2. 新規に作成するプロジェクトの設定を変更する場合 プロジェクトの [ 新規作成 ] ダイアログでは , デフォルトとして「引数のスタック渡 し」が選択されます。関数呼び出しインタフェースを「引数のレジスタ渡し」に変 更してください。 図 D-3 プロジェクトの新規作成ダイアログ 184 CM42-00328-9, July 31, 2015 付録 付録 D 関数呼び出しインタフェース変更ガイド S o ft w a r e S u p p o r t M a n u a l <注意事項> 関数呼び出しインタフェースとして「引数のレジスタ渡し」を選択した場合 , デバッガの 操作にいくつかの制限があります。これらの制限は , 引数を持つ関数から呼び出され , コ ンパイラの最適化により LINK/UNLINK 命令が出力されない関数をデバッグする時の制限 になります。 • ステップアウト (GO/RETURN コマンド ) の操作 親関数の取得ができなくなるため , 正常にプログラムの実行が停止しません。 • コールスタック (SHOW CALLS コマンド ) の操作 親関数の取得ができなくなるため , その関数以降の親関数が正しく表示されません。 • UP コマンドの操作 親関数の取得ができなくなるため , その関数以降の親関数へ正しくスコープを移すこ とができません。 ● Workbench を使用しない場合の変更 1. Workbench を使用しない場合の変更 Workbench を使用しない場合 , コンパイラ / アセンブラ / リンカ / ライブラリアンす べてに -rp オプションを指定してください。 2. コンパイル / アセンブル時の変更 関数のプロトタイプ宣言がない関数を呼び出す場合の動作は保証されないため , す べての関数について関数のプロトタイプ宣言を行ってください。 引数レジスタ退避域は , スタックで渡された仮引数領域とは連続しません。連続す ることを期待するようなプログラムは正しく動作しないため , そのようなプログラ ムがある場合は修正をしてください。 可変個引数は , 従来の関数呼び出しインタフェースと同様にすべての引数がスタッ ク渡しとなるため修正の必要はありません。 3. リンクおよびライブラリ作成時の変更 「引数のレジスタ渡し」用に以下の C ライブラリを追加しました。 「引数のレジスタ渡し」を使用する場合には , 以下の "_rp" 付きのライブラリをリン クし , 使用してください。 - lib/907/lib9*_rp.lib July 31, 2015, CM42-00328-9 : 48 ファイル 185 付録 付録 D 関数呼び出しインタフェース変更ガイド So ft war e S up po r t M a nu al ■ 警告とエラーメッセージ Workbench/ アセンブラ / リンカ / ライブラリアンで , 関数呼び出しインタフェースに関 する矛盾を検出した場合 , 以下の警告または , エラーメッセージを出力します。 ● Workbench の警告メッセージ • プロジェクト追加時 I0227W ワークスペース内に関数呼び出しインタフェースが異なるプロジェク トが存在します。関数呼び出しインタフェースが異なるプロジェクト で作成したオブジェクト同士は混在できません。処理を続行しますか ? YES :プロジェクトを追加する。 NO :プロジェクトを追加しない。 • プロジェクト間の依存関係 ( サブプロジェクト ) 設定時 I0228W プロジェクト間の関数呼び出しインタフェースが異なります。関数呼 び出しインタフェースが異なるプロジェクトで作成したオブジェクト 同士は混在できません。処理を続行しますか ? YES :プロジェクト間の依存関係を設定する。 NO :プロジェクト間の依存関係を設定しない。 • 関数呼び出しインタフェース変更時 I0229W 関数呼び出しインタフェースを変更する場合 , 使用するアセンブラ ソース , オブジェクト , ライブラリの関数呼び出しインタフェースが 統一されている必要があります。関数呼び出しインタフェースが統一 されていないプログラムの動作は保証されません。この変更はプロ ジェクト内のすべてのプロジェクト構成に反映されます。変更します か? YES :関数呼び出しインタフェースを変更する。 NO 186 :関数呼び出しインタフェースを変更しない。 CM42-00328-9, July 31, 2015 付録 付録 D 関数呼び出しインタフェース変更ガイド S o ft w a r e S u p p o r t M a n u a l ● アセンブラのエラーメッセージ E4718A 関数呼び出しインタフェースが違います 本エラーメッセージは , 表 D-1 に示す条件で出力されます。 表 D-1 .REG_PASS 擬似命令の記述と -rp オプションの関係 .REG_PASS 擬似命令の記述 あり なし あり 「引数のレジスタ渡し」の 正常な組み合わせです。 エラーは出力しません。 エラー (E4718A) を出力し ます。 なし エラー (E4718A) を出力し ます。 「引数のスタック渡し」の 正常な組み合わせです。 エラーは出力しません。 -rp オプション 指定 本エラーが発生した場合, 表 D-1 を参照して-rpオプション指定または, アセンブラソー スの .REG_PASS 擬似命令の記述を修正してください。 ● リンカのエラーメッセージ E4313L 関数呼び出しインタフェースの異なるモジュールがあります ( ファイ ル名 ) 本エラーメッセージは , 表 D-2 に示す条件で出力されます。 表 D-2 入力オブジェクトと -rp オプションの関係 入力オブジェクトの関数呼び出しインタフェース 「引数のレジスタ渡し」 「引数のスタック渡し」 あり 「引数のレジスタ渡し」の 正常な組み合わせです。 エラーは出力しません。 エラー (E4313L) を出力し ます。 なし エラー (E4313L) を出力し ます。 「引数のスタック渡し」の 正常な組み合わせです。 エラーは出力しません。 -rp オプション 指定 本エラーが発生した場合 , 表 D-2 を参照して -rp オプション指定または , 入力オブジェ クトの関数呼び出しインタフェースを修正してください。 July 31, 2015, CM42-00328-9 187 付録 付録 D 関数呼び出しインタフェース変更ガイド So ft war e S up po r t M a nu al ● ライブラリアンエラーメッセージ E4410U 関数呼び出しインタフェースの異なるモジュールがあります ( ファイ ル名 ) 本エラーメッセージは , 表 D-3 に示す条件で出力されます。 表 D-3 入力オブジェクト , 編集対象ライブラリと -rp オプションの関係 入力オブジェクトと編集対象ライブラリの関数呼び出 しインタフェース 「引数のレジスタ渡し」 「引数のスタック渡し」 あり 「引数のレジスタ渡し」の 正常な組み合わせです。 エラーは出力しません。 エラー (E4410U) を出力し ます。 なし エラー (E4410U) を出力し ます。 「引数のスタック渡し」の 正常な組み合わせです。 エラーは出力しません。 -rp オプション 指定 本エラーが発生した場合 , 表 D-3 を参照して -rp オプション指定または , 入力オブジェ クト , 編集対象ライブラリの関数呼び出しインタフェースを修正してください。 <注意事項> 関数呼び出しインタフェースの異なるオブジェクトはリンクできません。以下の弊社提供 オブジェクトの関数呼び出しインタフェースは , 「引数のスタック渡し」のみとなってい ますので注意してください。 • モニタデバッガ 188 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e 付録 E S u p p o r t M a n u a l エラーメッセージ一覧 本コンパイラで出力するエラーメッセージの一覧です。 ■ エラーメッセージの見方 W1003D Using the character not permitted as a module name. モジュール名として許されない文字が使用されています ↓ ↓ エラー識別番号 エラーメッセージ 上段に英語 , 下段に日本語のメッセージを示します。 W1003D ↑↑ ↑ || ツール識別 D : ドライバ || P : プリプロセッサ || C : コンパイラ |エラー番号 (4 桁 ) | エラーレベル I : 注意メッセージ W : 警告メッセージ E : エラーメッセージ F : 致命的エラーメッセージ July 31, 2015, CM42-00328-9 189 付録 付録 E エラーメッセージ一覧 So ft war e W1003D S up po r t M a nu al Using the character not permitted as a module name. モジュール名として許されない文字が使用されています [ 説明 ] モジュール名として英字 (A-Z, a-z), 数字 (0-9), 下線 (_) 以外の文字が使用されていま す。 190 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4002D S u p p o r t M a n u a l Illegal option-name オプション名に誤りがあります [ 説明 ] オプション名に誤りがあります。 E4003D Illegal value 指定値が不正です [ 説明 ] サブオプションの数値が正しくありません。 E4004D Illegal sub-option サブオプションに誤りがあります [ 説明 ] サブオプションに誤りがあります。 E4005D Illegal parameter description 指定形式に誤りがあります [ 説明 ] オプションの指定に誤りがあります。 E4006D Can not open option-file オプションファイルがオープンできません [ 説明 ] オプションファイルがオープンできません。 E4007D Nested option-file exceeds 8 オプションファイルのネストレベルが 8 を越えました [ 説明 ] オプションファイルのネストレベルが 8 を超えました。 E4008D Insufficient memory メモリ不足です [ 説明 ] メモリ不足です。 E4009D Illegal file name ファイル名が間違っています [ 説明 ] ファイル名が間違っています。 July 31, 2015, CM42-00328-9 191 付録 付録 E エラーメッセージ一覧 So ft war e E4010D S up po r t M a nu al internal error : Illegal reserve number 内部エラー : サブオプション予約番号異常 [ 説明 ] 内部エラー : サブオプション予約番号異常 E4011D Illegal section information セクション情報に誤りがあります [ 説明 ] セクション情報に誤りがあります。 E4012D Illegal tool-item ツールアイテムに誤りがあります [ 説明 ] ツールアイテムに誤りがあります。 E4013D Illegal sub-option 言語仕様の指定に誤りがあります [ 説明 ] 言語仕様の指定に誤りがあります。 E4014D Illegal optimize level 最適化レベルの指定に誤りがあります [ 説明 ] 最適化レベルの指定に誤りがあります。 E4015D internal error : Illegal prefix 内部エラー : 作業ファイルプリフィックス異常 [ 説明 ] 内部エラー : 作業ファイルプリフィックス異常 E4016D sub process call is failed サブプロセスの起動に失敗しました [ 説明 ] サブプロセスの起動に失敗しました。 E4017D tool execute is failed ツールの呼び出しに失敗しました [ 説明 ] ツールの呼び出しに失敗しました。 192 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4018D S u p p o r t M a n u a l help-file is not found ヘルプファイルが見つかりません [ 説明 ] ヘルプファイルが見つかりません。 E4019D can't unlink the file ファイルを削除できません [ 説明 ] ファイルを削除できません。 E4020D cannot process the C++ source file C++ ソースファイルは処理できません [ 説明 ] C++ ソースファイルは処理できません。 E4021D option -cpu is not defined. オプション -cpu が指定されていません [ 説明 ] オプション -cpu が指定されていません。 E4022D CPU information file not found CPU 情報ファイルが見つかりません [ 説明 ] CPU 情報ファイルが見つかりません。 E4023D CPU information not found CPU 情報が見つかりません [ 説明 ] CPU 情報が見つかりません。 E4024D too long file name. ファイル名が長過ぎます [ 説明 ] ファイル名が長過ぎます。 E4025D Can not open file ファイルがオープンできません [ 説明 ] ファイルがオープンできません。 July 31, 2015, CM42-00328-9 193 付録 付録 E エラーメッセージ一覧 So ft war e F9001D S up po r t M a nu al internal error : can not find file 内部エラー : ファイルが見つかりません [ 説明 ] 内部エラー : ファイルが見つかりません。 F9002D internal error : Illegal error-no 内部エラー : エラーメッセージ番号異常 [ 説明 ] 内部エラー : エラーメッセージ番号異常 F9003D Cannot create Ctrl-C Thread Ctrl-C スレッドの作成ができませんでした [ 説明 ] Ctrl-C スレッドの作成ができませんでした。 F9004D Internal error プログラム内部エラーが発生しました [ 説明 ] プログラム内部エラーが発生しました。 F9005D Insufficient memory メモリが足りません [ 説明 ] メモリが足りません。 F9006D Illegal CPU information file format CPU 情報ファイルの形式が正しくありません [ 説明 ] CPU 情報ファイルの形式が正しくありません。 194 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1001P S u p p o r t M a n u a l #%R: empty expression: identifier required #%R: 識別子が必要です。 [ 説明 ] #ifdef 指令または #ifndef 指令においてマクロ名としての識別子が記述されていませ ん。 定義されていないマクロ名が記述されたものとして処理を続行します。 W1002P #%R: invalid token specified after identifier: newline expected #%R: 識別子の後に誤ったトークンが指定されています。 [ 説明 ] #ifdef 指令または #ifndef 指令においてマクロ名の後ろに字句が記述されています。 マクロ名の後ろの字句を無視して処理を続行します。 W1003P #%R: expression expected #%R: 式が必要です。 [ 説明 ] #if 指令あるいは #elif 指令において評価を行うための定数式が記述されていません。 式 0 が記述されていたものとして処理を続行します。 W1004P #%R: digit-sequence expected #%R: 数字が必要です。 [ 説明 ] #line 指令において行番号を表す数字の後ろに空白類以外の文字が記述されていま す。 数字を行番号として認識して処理を続行します。 too many arguments %d for macro `%s': %d expected W1005P %d 個の実引数がマクロ `%s' に対して指定されました。%d 個が要 求されます。 [ 説明 ] マクロ展開時の実引数の個数がマクロ定義時の仮引数の個数より多いです。 多い分の実引数が無視されます。 too few arguments %d for macro `%s': %d expected W1006P %d 個の実引数がマクロ `%s' に対して指定されました。%d 個が要 求されます。 [ 説明 ] マクロ展開時の実引数の個数がマクロ定義時の仮引数の個数より少ないです。 不足部分に空文字列が指定されたものとして処理を続行します。 July 31, 2015, CM42-00328-9 195 付録 付録 E エラーメッセージ一覧 So ft war e W1007P S up po r t M a nu al invalid `,': expression expected 誤った `,' です。式が必要です。 [ 説明 ] マクロ実引数を区切るコンマの後ろに実引数が記述されていません。 コンマがなかったものとして処理を続行します。 W1008P unterminated character constant: `'' expected 文字定数が終了していません。`'' が必要です。 [ 説明 ] 文字定数を終了する単一引用符が記述されていません。 ファイルの終わりまたは行の終わりに単一引用符が記述されているものとして処 理を続行します。 W1009P unterminated string literal: `\"' expected 文字列リテラルが終了していません。`\"' が必要です。 [ 説明 ] 文字列リテラルを終了する二重引用符が記述されていません。 ファイルの終わりまたは行の終わりに二重引用符が記述されているものとして処 理を続行します。 W1010P -D option: `=' expected -D オプション : `=' が必要です。 [ 説明 ] -D オプションの指定がマクロ名のみで終わらず , マクロ名の直後の文字が `=' では ありません。 マクロ名のみが指定されたものとして処理を続行します。 W1011P division by 0 ゼロ除算です。 [ 説明 ] 条件式の定数演算においてゼロ除算が行われています。 演算結果がゼロであるものとして処理を続行します。 trigraph sequence `\?\?%c' replaced with `%c' W1012P 3 文字表記 ( トライグラフシーケンス ) `\?\?%c' が , `%c' に置き換え られました。 [ 説明 ] 3 文字表記の置き換えが行われました。 置き換えられた文字を有効にします。 196 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1013P S u p p o r t M a n u a l `$' in identifier `$' が識別子内にあります。 [ 説明 ] 文字 `$' が識別子中に記述されています。 `$' を識別子の一部として処理を続行します。 [ 備考 ] このメッセージは使用されていません。 parameter `%s' of macro `%s' in string literal may be replaced W1014P 文字列リテラル内の `%s' が , マクロ仮引数として解釈され , 置き換 わります。 [ 説明 ] 文字列リテラル内の識別子がマクロ仮引数として解釈され , マクロ置換が行われま す。 マクロ置換が行われるものとして処理を続行します。 parameter `%s' of macro `%s' in character constant may be replaced W1015P 文字定数リテラル内の `%s' が , マクロ仮引数として解釈され , 置き 換わります。 [ 説明 ] 文字定数内の識別子がマクロ仮引数として解釈され , マクロ置換が行われます。 マクロ置換が行われるものとして処理を続行します。 W1016P previous defined at \"%s\", line %d \"%s\", line %d で , 既に定義されています。 [ 説明 ] W1026P の補助メッセージです。 W1017P previous defined at command line コマンドラインで既に定義されています。 [ 説明 ] W1026P の補助メッセージです。 W1018P this macro is predefined macro このマクロは既定義マクロです。 [ 説明 ] W1026P の補助メッセージです。 July 31, 2015, CM42-00328-9 197 付録 付録 E エラーメッセージ一覧 So ft war e W1019P S up po r t M a nu al the only white space allowed within pp directive is space and horizontal tab 前処理指定行に指定できる空白類は , 空白とタブのみです。 [ 説明 ] 前処理指定行に垂直タブ文字または改頁文字が指定されています。 空白類として処理を続行します。 W1020P ANSI C extension: #%R specified #%R は , ANSI C からの拡張です。 [ 説明 ] ANSI C 標準仕様で規定されていない前処理指令です。 拡張された前処理指令として処理を行います。 %d trigraph sequence replaced in this file W1021P %d 個の 3 文字表記 ( トライグラフシーケンス ) が置き換えられまし た。 [ 説明 ] 3 文字表記置き換えの情報です。 [ 備考 ] このメッセージは使用されていません。 W1022P EOF in comment コメントの中でファイルが終了しています。 [ 説明 ] コメントを終了する */ が記述されていません。 ファイルの終わりに */ があるものとして処理を続行します。 W1023P invalid character \\0%o 誤った文字です。 [ 説明 ] 指摘された文字は前処理で内部的に使用する文字と一致します。 空白文字が指定されたものとして処理を続行します。 W1024P comment replaced with `##' operator コメントが , `##' 演算子によって置き換えられました。 [ 説明 ] a/**/b を a##b と解釈する古い仕様が適用されました。 解釈を有効にして処理を続行します。 198 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1025P S u p p o r t M a n u a l #%R: cannot define macro `%s' #%R: マクロ `%s' は定義できません。 [ 説明 ] 指定された識別子は前処理内で予約されているためマクロ名として定義できませ ん。 マクロ定義が行われなかったものとして処理を続行します。 W1026P #%R: macro `%s' redefined #%R: マクロ `%s' は再定義です。 [ 説明 ] 指定された識別子は既に異なる置換を持つマクロとして定義されています。 再定義されたものを有効にして処理を続行します。 W1027P #%R: invalid token specified after identifier: newline expected #%R: 識別子の後に誤ったトークンがあります。 [ 説明 ] #undef 指令の識別子の後ろに字句が記述されています。 字句がなかったものとして処理を続行します。 W1028P #%R: cannot undefine macro `%s' #%R: マクロ `%s' のマクロ定義の取消はできません。 [ 説明 ] #undef指令の識別子に指定されたマクロ名のマクロ定義を取り消すことができませ ん。 #undef 指令が記述されなかったものとして処理を続行します。 W1029P invalid token after #else #else の後に誤ったトークンがあります。 [ 説明 ] #else 指令に字句が記述されています。 字句がなかったものとして処理を続行します。 W1030P invalid token after #endif #endif の後に誤ったトークンがあります。 [ 説明 ] #endif 指令に字句が記述されています。 字句がなかったものとして処理を続行します。 July 31, 2015, CM42-00328-9 199 付録 付録 E エラーメッセージ一覧 So ft war e W1031P S up po r t M a nu al invalid token follows at the end of #include directive line #include 前処理指定行の後に誤ったトークンが指定されています。 [ 説明 ] #include 指令のファイル名の後ろに字句が記述されています。 字句がなかったものとして処理を続行します。 W1032P #include: cannot find file \"%s\" #include: ファイル \"%s\" が見つかりません。 [ 説明 ] 私用インクルードファイルが見つかりませんでした。 [ 備考 ] このメッセージは使用されていません。 W1033P #include: cannot find file <%s> #include: ファイル <%s> が見つかりません。 [ 説明 ] 標準インクルードファイルが見つかりませんでした。 [ 備考 ] このメッセージは使用されていません。 W1034P #%R: syntax error: identifier expected #%R: 識別子が必要です。 [ 説明 ] #assert 指令または #unassert 指令に識別子が記述されていません。 #assert 指令または #unassert 指令がなかったものとして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1035P #%R: `(' required #%R: `(' が必要です。 [ 説明 ] #assert 指令または #unassert 指令では識別子の後ろに `(' が必要です。 #assert 指令または #unassert 指令がなかったものとして処理を続行します。 200 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1036P S u p p o r t M a n u a l #%R: syntax error: `,' or `)' expected #%R: `,' または `)' が必要です。 [ 説明 ] #assert 指令または #unassert 指令ではアサーション指定子を区切る `.' あるいは `)' が 必要です。 #assert 指令または #unassert 指令がなかったものとして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1037P #%R: newline expected: invalid token follows after `)' #%R: 改行が必要です。 [ 説明 ] #assert 指令または #unassert 指令のアサーション指定子を閉じる `)' の後ろに字句が 記述されています。 字句がなかったものとして処理を続行します。 W1038P #%R: filename expected #%R: ファイル名が必要です。 [ 説明 ] #line 指令の行番号の後ろにファイル名を表す文字列以外の字句が記述されていま す。 ファイル名の指定がなかったものとして処理を続行します。 W1039P #%R: line number 0 specified #%R: 行番号に 0 は指定できません。 [ 説明 ] #line 指令に指定された行番号が 0 です。 #line 指令がなかったものとして処理を続行します。 W1040P #%R: specified line number is greater than 32767 #%R: 指定された行番号は , 32767 よりも大きい値です。 [ 説明 ] #line 指令の行番号は ANSI 規格では 32767 以下でなければなりません。 指定された行番号を有効にして処理を続行します。 W1041P macro `%s' recursion マクロ `%s' の再帰的な評価です。 [ 説明 ] マクロ置換が再帰的に評価されます。 評価を有効にして処理を続行します。 July 31, 2015, CM42-00328-9 201 付録 付録 E エラーメッセージ一覧 So ft war e W1042P S up po r t M a nu al #%R: invalid directive in macro parentheses #%R: 指定された前処理行指定は無効です。 [ 説明 ] 関数形式マクロの実引数展開中に記述された前処理指令は無効です。 前処理指令がなかったものとして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1043P #%R: directive used in macro parentheses #%R: 関数形式マクロの引数の中に # 指令が用いられました。 [ 説明 ] 関数形式マクロの実引数展開中に前処理指令が記述されました。 前処理指令を有効にして処理を続行します。 W1044P invalid directive 誤った指令です。 [ 説明 ] # の後ろに前処理指令名以外の字句が記述されています。 前処理指令がなかったものとして処理を続行します。 W1045P unknown option -X%c -X%c オプションは無効です。 [ 説明 ] 言語レベルを指定するオプションに誤りがあります。 オプションが指定されなかったものとして処理を続行します。 W1046P unknown option -X -X オプションは無効です。 [ 説明 ] 言語レベルを指定するオプションに誤りがあります。 オプションが指定されなかったものとして処理を続行します。 W1047P too many parameters on command line コマンドラインの引数指定が多過ぎます。 [ 説明 ] コマンドラインの出力ファイル名の後ろにオプションまたはファイル名が指定さ れています。 余分な引数を無視して処理を続行します。 202 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1048P S u p p o r t M a n u a l unknown option %s 認識できないオプション : %s [ 説明 ] 未知のオプションです。 [ 備考 ] このメッセージは使用されていません。 W1049P invalid option %s 無効なオプション %s が指定されました。 [ 説明 ] 未知のオプションです。 [ 備考 ] このメッセージは使用されていません。 W1050P invalid digit postfix expression 定数に対する不当な接尾語です。 [ 説明 ] 条件式の整数定数の接尾語に `L' あるいは `l' が複数指定されています。 接尾語の指定を無効にして処理を続行します。 W1051P integer constant out of range 整数定数が整数の値域を超えています。 [ 説明 ] 整数定数が内部で表現できない値です。 [ 備考 ] このメッセージは使用されていません。 W1052P character constant too long 文字定数が長過ぎます。 [ 説明 ] 条件式に記述されたワイド文字定数が長すぎます。 先頭 1 文字分を有効にして処理を続行します。 W1053P newline in string literal 文字列リテラル中に改行文字があります。 [ 説明 ] 文字列リテラルを終了する二重引用符が記述されていません。 [ 備考 ] このメッセージは使用されていません。 July 31, 2015, CM42-00328-9 203 付録 付録 E エラーメッセージ一覧 So ft war e W1054P S up po r t M a nu al numeric octal constant contains `8' or `9' 8 進定数に `8' または `9' が含まれています。 [ 説明 ] 条件式の 8 進数整数定数内に `8' または `9' が含まれています。 8 は 010, 9 は 011 として処理を続行します。 W1055P invalid character `\\%o' (octal) 不当な文字 `\\%o' があります。 [ 説明 ] ソースプログラム中に不当な文字が記述されています。 不当な文字がなかったものとして処理を続行します。 W1056P alert escape sequence is specified 警報記号が記述されています。 [ 説明 ] 古い仕様では '\a' は警報記号ではありません。 警報記号に変換して処理を続行します。 W1057P escape sequence `\\x' is specified 拡張表記 ( エスケープシーケンス ) `\\x' が指定されました。 [ 説明 ] 古い仕様では `\x' による 16 進文字表記はありません。 単なる `x' に変換して処理を続行します。16 進数字も単なる文字になります。 W1058P `$' character in identifier 識別子中に `$' があります。 [ 説明 ] 文字 `$' が識別子中に記述されています。 `$' を識別子の一部として処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1059P `long long' integer constant is used `long long' 型の整数定数が使用されています。 [ 説明 ] 条件式の整数定数の接尾語に `L' あるいは `l' が 2 つ指定されています。 接尾語の指定を無効にして処理を続行します。 204 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1060P S u p p o r t M a n u a l unterminated filename ファイル名が適正に終了していません。 [ 説明 ] # 行番号 指令のファイル名の閉じる二重引用符が記述されていません。 [ 備考 ] このメッセージは使用されていません。 W1061P too long hexadecimal escape sequence 16 進拡張表記の最大長を超えています。 [ 説明 ] 拡張表記の `\x' による 16 進文字表記が文字の大きさで表現できない値です。 結果の下位 1 バイトまたはワイド文字の大きさ分を有効にして処理を続行します。 W1062P `*/' exists outside of comment コメントの外に `*/' が現れました。 [ 説明 ] 条件式内に */ が記述されました。 単なる `*' と `/' として処理します。 W1063P hexadecimal escape sequence has no digit value 16 進拡張表記が数値をもっていません。 [ 説明 ] 拡張表記の `\x' の直後に 16 進文字表記がありません。 `\x0' が指定されたものとして処理を続行します。 W1064P unknown escape sequence `\\%c' 認識できない拡張表記 ( エスケープシーケンス ) `\\%c' です。 [ 説明 ] `\' の直後に拡張表記の仕様に規定されていない文字が記述されています。 `\' がなかったものとして処理を続行します。 W1065P too large integer constant for radix %d %d 進数に対して大き過ぎる整数定数です。 [ 説明 ] 数字列の桁数が多すぎるため , 内部表現に変換する前にオーバフローすることが確 定します。 値 0 が指定されたものとして処理を続行します。 July 31, 2015, CM42-00328-9 205 付録 付録 E エラーメッセージ一覧 So ft war e W1066P S up po r t M a nu al escape sequence does not fit in range of character 拡張表記が文字の適用範囲を超えています。 [ 説明 ] 拡張表記の結果の値が 1 バイトで表現できません。(\400 など ) 結果の下位 1 バイトを有効にして処理を続行します。 W1067P escape sequence does not fit in range of wide character 拡張表記がワイド文字の適用範囲を超えています。 [ 説明 ] 拡張表記の結果の値が 4 バイトで表現できません。 結果のワイド文字の大きさ分を有効にして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1068P too large integer constant `%s' for radix %d 整数定数 `%s' は , %d 進数に対して大き過ぎます。 [ 説明 ] 数字列の桁数が多すぎるため , 内部表現に変換する前にオーバフローすることが確 定します。 値 0 が指定されたものとして処理を続行します。 W1069P exceed the maximum length of octal escape sequence 8 進拡張表記の最大長を超えました。 [ 説明 ] 8 進拡張表記が 4 桁以上記述されています。 [ 備考 ] このメッセージは使用されていません。 W1070P unknown escape sequence `\\%o' 拡張表記 `\\%o' は認識されません。 [ 説明 ] `\' の直後に拡張表記の仕様に規定されていない文字が記述されています。 `\' がなかったものとして処理を続行します。 W1071P too long multi-character character constant 多バイト文字定数のキャラクタの指定が多過ぎます。 [ 説明 ] 文字定数内に 5 文字以上の文字定数が記述されています。 先頭から 4 文字までを有効にして処理を続行します。 206 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1072P S u p p o r t M a n u a l multi-character character constant specified 多バイト文字定数です。 [ 説明 ] 文字定数内に 2 文字以上の文字定数が記述されています。 指定された文字定数を有効にして処理を続行します。 cannot open compiler message file \"%s\" W1073P オプションで指定されたメッセージファイルがオープンできませ ん。 [ 説明 ] メッセージはプリプロセッサに組み込まれている英文メッセージが出力されます。 W1074P assertion is ANSI C extension アサーションは , ANSI C 拡張仕様です。 [ 説明 ] アサーションは ANSI C 標準仕様で規定されていません。 アサーションとしての評価が行われ , 処理が続行されます。 W1075P #%R: invalid token: identifier required #%R: 識別子が必要です。 [ 説明 ] #ifdef 指令または #ifndef 指令においてマクロ名として識別子以外の字句が記述され ています。 定義されていないマクロ名が記述されたものとして処理を続行します。 W1076P #%R: too large decimal constant #%R: 10 進数が大き過ぎます。 [ 説明 ] 行番号として記述された数値が long の最大値 (2147483647) より大きいです。 unsigned long の値として処理を続行します。 #operator used in macro replacement of non function-like macro W1077P # 演算子が関数形式マクロでないマクロの置換文字列内で指定され ました。 [ 説明 ] # 演算子は関数形式マクロの引数で渡された要素を文字列に変換するための演算子 です。 通常の '#' 文字として置換します。 July 31, 2015, CM42-00328-9 207 付録 付録 E エラーメッセージ一覧 So ft war e W1078P S up po r t M a nu al unterminated string literal: EOF in string literal 文字列リテラル内でファイルが終了しています。 [ 説明 ] 文字列リテラルを終了する二重引用符が記述されていません。 [ 備考 ] このメッセージは使用されていません。 W1079P unterminated character constant: EOF in character constant 文字定数内でファイルが終了しています。 [ 説明 ] 文字定数を終了する単一引用符が記述されていません。 [ 備考 ] このメッセージは使用されていません。 W1080P unterminated string literal: newline in string literal 文字列リテラル内で行が終了しています。 [ 説明 ] 文字列リテラルを終了する二重引用符が記述されていません。 [ 備考 ] このメッセージは使用されていません。 W1081P unterminated character constant: newline in character constant 文字定数内で行が終了しています。 [ 説明 ] 文字定数を終了する単一引用符が記述されていません。 [ 備考 ] このメッセージは使用されていません。 W1082P too long identifier, truncated to `%s' プログラムの内部的な制限 : 長過ぎる識別子です。 [ 説明 ] 識別子が長すぎます。 [ 備考 ] このメッセージは使用されていません。 208 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1083P S u p p o r t M a n u a l cannot concatenate character string literal and wide character string literal: assumed as character string literal 単純文字列リテラルとワイド文字リテラルは結合できません。 [ 説明 ] 単純文字列リテラルの直後にワイド文字列リテラルが記述されました。 [ 備考 ] このメッセージは使用されていません。 W1084P cannot concatenate wide character string literal and character string literal: assumed as wide character string literal ワイド文字列リテラルと単純文字リテラルは結合できません。 [ 説明 ] ワイド文字列リテラルの直後に単純文字列リテラルが記述されました。 [ 備考 ] このメッセージは使用されていません。 W1085P decimal integer constant is too large 大きすぎる整数定数です。 [ 説明 ] 整数定数が大きすぎます。 [ 備考 ] このメッセージは使用されていません。 W1086P #pragma asm: syntax error: `#pragma endasm' is not specified #pragma asm: `#pragma endasm' が指定されていません。 [ 説明 ] #pragma asm に対応する #pragma endasm が記述されていません。 ファイルの終わりに #pragma endasm が記述されているものとして処理を続行しま す。 W1087P #include: filename too long: file `%s' #include: ファイル名が長すぎます。: ファイル名 `%s' [ 説明 ] #include 指令で指定されたフルパスのファイル名の長さが長すぎます。 先頭から 255 バイト分までを有効にして処理を続行します。 July 31, 2015, CM42-00328-9 209 付録 付録 E エラーメッセージ一覧 So ft war e S up po r t M a nu al #include: filename too long: include path `%s', file `%s' W1088P #include: ファイル名が長すぎます。: インクルードパス `%s', ファイ ル名 `%s' [ 説明 ] #include 指令で指定されたファイル名と -I オプションで指定されたディレクトリ名 を組み合わせたパス名が長すぎます。 結果のパス名の先頭から 255 バイト分までを有効にして処理を続行します。 W1089P #%R: invalid token after `%s': newline expected #%R: `%s' の直後に誤った字句があります。改行が必要です。 [ 説明 ] #pragma asm および #pragma endasm の後ろには改行のみが許されます。指定された 字句は無視されます。 W1090P << 注意 :#warning はソース中に指定した文字列をそのまま出力しま す >> [ 説明 ] #warning が認識されました。 E4001P mismatch #if-#endif #if と #endif の組合せが一致しません。 [ 説明 ] ファイル内の #if の個数と #endif の個数が一致していません。ほとんどの場合 , #endif が不足しています。 E4002P cannot get current tvime (time()) 現在時刻を得ることができません [ 説明 ] 現在時刻を取得するためのシステムコールに失敗したため , __DATE__ マクロおよ び __TIME__ マクロの結果は保証されません。 E4003P unacceptable token in constant expression 定数式中に不正なトークンが含まれています。 [ 説明 ] #if 等の条件式内に定数式として認識できないトークンが記述されています。 210 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4004P S u p p o r t M a n u a l pp-token required before ## operator ## 演算子の前にはトークンが必要です。 [ 説明 ] ## 演算子は直前に記述されたトークンと直後に記述されたトークンを連結させま すが , 直前のトークンが記述されていません。 E4005P pp-token required after ## operator ## 演算子の後にはトークンが必要です。 [ 説明 ] ## 演算子は直前に記述されたトークンと直後に記述されたトークンを連結させま すが , 直後のトークンが記述されていません。 E4006P identifier required after # operator # 演算子の後には識別子が必要です。 [ 説明 ] # 演算子は関数型マクロに指定された引数を文字列化しますが , # 演算子の直後にマ クロ仮引数である識別子が記述されていません。 E4007P macro parameter required after # operator # 演算子の後にはマクロ仮引数が必要です。 [ 説明 ] # 演算子は関数型マクロに指定された引数を文字列化しますが , # 演算子の直後の識 別子がマクロ仮引数でありません。 E4008P assertion: `)' expected アサーション : `)' が必要です。 [ 説明 ] アサーション参照時にアサーション指定子が正しく記述されていません。 E4009P assertion: identifier required after `#' アサーション : # の後には , 識別子が必要です。 [ 説明 ] アサーション参照時にプレディケート名が記述されていません。 E4010P assertion: `(' required after `#identifier' アサーション : `# 識別子 ' の後には `(' が必要です。 [ 説明 ] アサーション参照時にアサーション指定子を括るための `(' が記述されていません。 July 31, 2015, CM42-00328-9 211 付録 付録 E エラーメッセージ一覧 So ft war e E4011P S up po r t M a nu al assertion: empty within parentheses アサーション : 括弧内にはトークンが必要です。 [ 説明 ] アサーション参照時にアサーション指定子となる識別子が記述されていません。 E4012P identifier required after `defined' operator defined 演算子の後には識別子が必要です。 [ 説明 ] defined 演算子の後ろに識別子が記述されていません。 [ 備考 ] このメッセージは使用されていません。 E4013P assertion: `)' required after `#identifier(...' アサーション : `# 識別子 ' の後の括弧が閉じられていません。 [ 説明 ] アサーション参照時にアサーション指定子を終わる `)' が記述されていません。 E4014P write error (fwrite()) 書きだし時にエラーです。(fwrite()) [ 説明 ] 前処理の結果出力時に , ファイル書き出しが正しく行われませんでした。 E4015P #%R: duplicate formal parameter #%R: 同じ関数形式マクロ仮引数が複数指定されました。 [ 説明 ] #define 指令の関数形式マクロ定義において同じ綴りを持つ仮引数が複数指定され ました。 E4016P #%R: parameter syntax error: `,' or `)' expected #%R: `,' または `)' が必要です。 [ 説明 ] #define 指令の関数形式マクロ定義において仮引数を区切る `,' あるいは仮引数指定 を終了する `)' が記述されていません。 E4017P #%R: invalid parameter: identifier required #%R: 誤った仮引数指定です。 [ 説明 ] #define 指令の関数形式マクロ定義において仮引数指定位置に識別子以外が記述さ れています。 212 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4018P S u p p o r t M a n u a l #%R: invalid token: identifier required #%R: 識別子が必要です。 [ 説明 ] #define 指令および #undef 指令のマクロ名 , および #assert 指令のプレディケート名 となる識別子が記述されていません。 E4019P #%R: empty macro name: identifier required #%R: 識別子が必要です。 [ 説明 ] #define 指令および #undef 指令のマクロ名となる識別子が記述されていません。 E4020P unexpected #elif #if がない #elif です。 [ 説明 ] #elif 指令に対応する #if 指令が記述されていません。 E4021P #elif follows after #else #else の後に #elif が続いています。 [ 説明 ] #else 指令の後ろに #elif 指令が現れています。#else 指令は #elif 指令の後に記述する 必要があります。 E4022P unexpected #else if がない #else です。 [ 説明 ] #else 指令に対応する #if 指令が記述されていません。 E4023P #else follows #else #else の後に #else が続いています。 [ 説明 ] #else 指令の後ろに #else 指令が現れています。1 つの if 節内には #else は 1 つしか記 述できません。 E4024P unexpected #endif #if がない #endif です。 [ 説明 ] #endif 指令に対する #if 指令が記述されていません。 July 31, 2015, CM42-00328-9 213 付録 付録 E エラーメッセージ一覧 So ft war e E4025P S up po r t M a nu al #include: empty directive line #include: ファイル名の指定がありません。 [ 説明 ] #include 指令にファイル名が記述されていません。 E4026P #include: invalid character: `<' or `\"' expected #include: '<' または '\"' が必要です。 [ 説明 ] #include 指令のファイル名が `<' または `"' で開始していません。 E4027P #include: unterminated filename: `%c' expected #include: ファイル名が終っていません。 [ 説明 ] #include 指令のファイル名が `>' または `"' で終了していません。 E4028P #include: empty filename #include: ファイル名が指定されていません。 [ 説明 ] #include 指令の <> または "" の間にファイル名が記述されていません。 E4029P #%R: digit-sequence expected #%R: 数字が必要です。 [ 説明 ] #line 指令に行番号となる数字が記述されていません。 E4030P #%R: too large decimal constant #%R: 10 進数が大き過ぎます。 [ 説明 ] #line 指令に記述されている行番号となる 10 進数字列が長すぎます。 E4031P #%R: `\"' missing #%R: `\"' が必要です。 [ 説明 ] #line 指令に記述されているファイル名を表す文字列を閉じる `"' が記述されていま せん。 214 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4032P S u p p o r t M a n u a l defined operator: invalid token: identifier expected defined 演算子には , 識別子が必要です。 [ 説明 ] defined 演算子の括弧内のオペランドが識別子以外です。 E4033P defined operator: `)' expected defined 演算子には , `)' が必要です。 [ 説明 ] defined 演算子のオペランドを括るための `(' が記述されていますが , 閉じる `)' が記 述されていません。 E4034P defined operator: identifier or `(' expected defined 演算子 : `(' あるいは識別子が必要です。 [ 説明 ] defined 演算子の直後に `(' または識別子以外の字句が記述されています。 E4035P unterminated macro `%s': `)' expected マクロ `%s' が終了していません。`)' が必要です。 [ 説明 ] 関数形式マクロの参照時に実引数を閉じる `)' が記述されていません。 E4036P unterminated character constant: `'' expected 文字定数が終了していません。`'' が必要です。 [ 説明 ] 文字定数を終了する単一引用符が記述されていません。 [ 備考 ] このメッセージは使用されていません。 E4037P unterminated string literal: `\"' expected 文字列リテラルが終了していません。`\"' が必要です。 [ 説明 ] 文字列リテラルを終了する二重引用符が記述されていません。 [ 備考 ] このメッセージは使用されていません。 E4038P #include: cannot find file \"%s\" #include: ファイル \"%s\" が見つかりません。 [ 説明 ] 私用インクルードファイルが見つかりませんでした。 July 31, 2015, CM42-00328-9 215 付録 付録 E エラーメッセージ一覧 So ft war e E4039P S up po r t M a nu al #include: cannot find file <%s> #include: ファイル <%s> が見つかりません。 [ 説明 ] 標準インクルードファイルが見つかりませんでした。 E4040P #%R: syntax error: identifier expected #%R: 識別子が必要です。 [ 説明 ] #define 指令の関数型マクロ定義において `,' と `)' の間に仮引数となる識別子が記述 されていません。 E4041P #%R: empty in parentheses #%R: 括弧内に指定がありません。 [ 説明 ] #assert指令および #unassert 指令においてアサーション指定子を括る括弧内に識別子 が記述されていません。 E4042P unknown directive 指定された前処理行指定は無効です。 [ 説明 ] 未知の前処理制御行です。 E4043P #%R: syntax error: `)' expected #%R: `)' が必要です。 [ 説明 ] #assert 指令および #unassert 指令においてアサーション指定子を閉じる `)' が記述さ れていません。 E4044P #%R: token sequence expected #%R: トークンの並びが必要です。 [ 説明 ] #assert 指令および #unassert 指令においてアサーション指定子を開始する `(' の後ろ に何も記述されていません。 E4045P too nested include file 入力ファイルの入れ子が深過ぎます。 [ 説明 ] include の入れ子が当処理系の制限である 64 以上になりました。 216 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4046P S u p p o r t M a n u a l unterminated string literal: `\"' expected 文字列が終了していません。`\"' が必要です。 [ 説明 ] 文字列を終了する `"' が記述されていません。 [ 備考 ] このメッセージは使用されていません。 E4047P EOF in comment コメント中でファイルが終りました。 [ 説明 ] 条件式中にあるコメントを終了する */ が記述されていません。 E4048P EOF in string literal 文字列中でファイルが終りました。 [ 説明 ] 条件式中にある文字列を終了する `"' が記述されていません。 E4049P sorry, internal limitation: quoted character too long コンパイラ内部制限 : クォートされたキャラクタが長過ぎます。 [ 説明 ] 条件式中に記述された文字定数または文字列リテラル中にある \x による 16 進数字 列の長さが当処理系の制限である 4028 を超えました。 E4050P character constant has no character expression 文字定数中に文字がありません。 [ 説明 ] 条件式中に指定された文字定数中に文字が記述されていません。 E4051P unterminated character constant: newline in character constant 未終了文字定数 : 文字定数中に改行文字があります。 [ 説明 ] 文字定数中に改行文字が記述されました。 [ 備考 ] このメッセージは使用されていません。 July 31, 2015, CM42-00328-9 217 付録 付録 E エラーメッセージ一覧 So ft war e E4052P S up po r t M a nu al unterminated character constant: EOF in character constant 未終了文字定数 : 文字定数中でファイルが終りました。 [ 説明 ] 文字定数を終了する単一引用符が記述されていません。 [ 備考 ] このメッセージは使用されていません。 E4053P too many postfix characters `%c' for constant 定数に対して接尾語 `%c' は付加できません。 [ 説明 ] 条件式中の数値定数の接尾語の指定に誤りがあります。 E4054P numeric octal constant contains invalid character 8 進定数中に無効な文字があります。 [ 説明 ] 8 進定数中に 8 進数として許されない文字が記述されています。 [ 備考 ] このメッセージは使用されていません。 E4055P binary constant cannot be floating point constant 2 進定数は浮動小数点定数にできません。 [ 説明 ] 0b または 0B で始まる 2 進定数は浮動小数点定数にはできません。 [ 備考 ] このメッセージは使用されていません。 E4056P invalid postfix character `%c' after integer constant 整数の後ろに不当な接尾語 `%c' があります。 [ 説明 ] 条件式中の整数定数の直後に接尾語として認識されないアルファベットが記述さ れています。 E4057P invalid postfix character `%c' for radix %d 不当な接尾語 `%c' が , %d 進数に対して指定されています。 [ 説明 ] 条件式中の整数定数の直後に接尾語として認識されないアルファベット以外の文 字が記述されています。 218 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4058P S u p p o r t M a n u a l no digits of floating exponent part 浮動小数点数の指数部に数字がありません。 [ 説明 ] 条件式中の浮動小数点数字列の指数部を表す数字が記述されていません。 E4059P hexadecimal constant cannot be floating point constant 16 進定数は浮動小数点定数にできません。 [ 説明 ] 条件式中の 16 進定数中に `.' が記述されています。 E4060P invalid postfix character `%c' after floating point constant 浮動小数点定数の後ろに不当な接尾語 `%c' があります。 [ 説明 ] 条件式中の浮動小数点数字列の直後に浮動小数点接尾語として認識されない文字 が記述されています。 E4061P invalid token: `..' 不当な字句 `..' があります。 [ 説明 ] 条件式中に不当な字句 `..' が記述されています。 E4062P integer constant out of range 整数定数が整数の値域を超えています。 [ 説明 ] 整数定数が内部で表現できない値です。 [ 備考 ] このメッセージは使用されていません。 E4063P invalid character `%c' 不当な文字 `%c' があります。 [ 説明 ] 条件式中に不当な文字が記述されました。 E4064P invalid binary constant 不当な 2 進定数があります。 [ 説明 ] 0b または 0B で始まる 2 進定数の先頭の数字が 0 または 1 以外です。 [ 備考 ] このメッセージは使用されていません。 July 31, 2015, CM42-00328-9 219 付録 付録 E エラーメッセージ一覧 So ft war e E4065P S up po r t M a nu al invalid hexadecimal constant 不当な 16 進定数があります。 [ 説明 ] 0x または 0X で始まる 16 進定数の先頭の数字が 16 進数として許されない文字です。 E4066P invalid multibyte character constant 不当な多バイト文字定数です。 [ 説明 ] 条件式中に記述されているワイド文字定数内に文字コードとして認識できない不 当な多バイト文字が記述されています。 E4067P invalid multibyte string literal 不当な多バイト文字列リテラルです。 [ 説明 ] ワイド文字列リテラル内に文字コードとして認識できない不当な多バイト文字が 記述されています。 [ 備考 ] このメッセージは使用されていません。 E4068P invalid character `\\%o' (octal) 不当な文字 `\\%o' があります。 [ 説明 ] 条件式中に不当な文字が記述されました。 E4069P %s near wide character string constant %s: ワイド文字列リテラルの近辺です。 [ 説明 ] 条件式中の構文エラーの補助メッセージです。ワイド文字列リテラルの付近で構文 エラーが発生しました。 E4070P %s near wide character constant %s: ワイド文字定数の近辺です。 [ 説明 ] 条件式中の構文エラーの補助メッセージです。ワイド文字定数の付近で構文エラー が発生しました。 220 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4071P S u p p o r t M a n u a l %s near `%s' %s: `%s' の近辺です。" [ 説明 ] 条件式中の構文エラーの補助メッセージです。指示された文字の付近で構文エラー が発生しました。 E4072P %s detected %s が起きました。 [ 説明 ] 条件式中の構文エラーの補助メッセージです。構文エラーが発生しました。 E4073P %s near character constant %s: 文字定数の近辺です。 [ 説明 ] 条件式中の構文エラーの補助メッセージです。文字定数の付近で構文エラーが発生 しました。 E4074P %s near string constant %s: 文字列の近辺です。 [ 説明 ] 条件式中の構文エラーの補助メッセージです。文字列リテラルの付近で構文エラー が発生しました。 E4075P cannot quote EOF EOF は , エスケープできません。 [ 説明 ] バックスラッシュの直後に EOF となりました。 [ 備考 ] このメッセージは使用されていません。 E4076P invalid `\\' in input 不当な `\\' が入力されました。 [ 説明 ] 条件式中にバックスラッシュが記述されています。 E4077P << 注意 :#error はソース中に指定した文字列をそのまま出力します >> [ 説明 ] #error が認識されました。 July 31, 2015, CM42-00328-9 221 付録 付録 E エラーメッセージ一覧 So ft war e E4078P S up po r t M a nu al -default filename expected -default: ファイル名が必要です。 [ 説明 ] -default オプションにファイル名を表すサブパラメータが指定されていません。 E4079P -predefine filename expected -predefine: ファイル名が必要です。 [ 説明 ] -predefine オプションにファイル名を表すサブパラメータが指定されていません。 E4080P invalid `$' in input 不当なキャラクタ `$' が入力中に含まれています。 [ 説明 ] 条件式中に不当な文字 `$' が記述されています。 E4081P invalid option %s 無効なオプション %s が指定されました。 [ 説明 ] 言語レベルを指定する -X オプションのサブパラメータが指定されていません。 [ 備考 ] このメッセージは使用されていません。 E4082P write error (timeout) 書きだし時にエラーです。タイムアウトしました。 [ 説明 ] 前処理の結果出力時に , ファイル書き出しが正しく行われませんでした。 [ 備考 ] このメッセージは使用されていません。 E4083P write error (select()) 書きだし時にエラーです。(select()) [ 説明 ] 前処理の結果出力時に , ファイル書き出しが正しく行われませんでした。 [ 備考 ] このメッセージは使用されていません。 222 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4084P S u p p o r t M a n u a l write error (write()) 書きだし時にエラーです。(write()) [ 説明 ] 前処理の結果出力時に , ファイル書き出しが正しく行われませんでした。 [ 備考 ] このメッセージは使用されていません。 E4085P unknown # directive 認識できない # 前処理指令です。 [ 説明 ] 未知の前処理指令です。 [ 備考 ] このメッセージは使用されていません。 E4086P invalid character `\\%o' (octal) in # directive line 誤ったキャラクタ `\\%o' が , # 前処理指令行中にあります。 [ 説明 ] 前処理指令中に認識できない文字があります。 [ 備考 ] このメッセージは使用されていません。 E4087P cannot open file \"%s\" ファイル \"%s\" をオープンできません。 [ 説明 ] -Hf オプションに指定したファイルが書き出しオープンできません。 July 31, 2015, CM42-00328-9 223 付録 付録 E エラーメッセージ一覧 So ft war e F9001P S up po r t M a nu al sorry, internal limitation: too nested input コンパイラ内部制限 : 入力が複雑すぎます。 [ 説明 ] マクロ置換によるソースの変更が多すぎるため処理しきれません。 F9002P detected too many errors to terminate compilation 多量のエラーを検出しました。翻訳を終了します。 [ 説明 ] エラーの量が多すぎます。 [ 備考 ] このメッセージは使用されていません。 F9003P Broken pipe パイプが破壊されました。 [ 備考 ] このメッセージは使用されていません。 F9004P too many comments コメントの個数が当処理系の制限 (16777215) 以上になりました。 [ 説明 ] コメントの個数が当処理系の制限 (16777215) 以上になりました。 F9005P cannot get file mode (fstat) 読み込むファイルの情報を取得できません。 [ 説明 ] 読み込むファイルの情報を取得できません。 F9006P fread ファイルが正しく読み込めません。 [ 説明 ] ファイルが正しく読み込めません。 F9007P invalid file mode 読み込むファイルが正しいテキストファイルではありません。 [ 説明 ] 読み込むファイルが正しいテキストファイルではありません。 224 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e F9008P S u p p o r t M a n u a l illegal message file メッセージファイルが正しくありません。 [ 説明 ] メッセージファイルが正しくありません。 F9009P virtual memory exhausted 作業域の獲得に失敗しました。 [ 説明 ] 作業域の獲得に失敗しました。 I0001C previous declaration of `%D': \"%s\", line %d 先の `%D' の宣言は , \"%s\", %d 行目にあります。 [ 説明 ] シンボルの二重宣言の補助メッセージです。前のシンボルは指摘された位置にあり ます。 I0002C on empty parameter declaration of function declaration ( 仮引数宣言のない関数宣言中 ) [ 説明 ] 実引数拡張後の型不適合の原因の情報です。 W1063C の補助メッセージです。 I0003C on formal parameter declaration of function definition ( 識別子並びによる仮引数宣言のある関数宣言中 ) [ 説明 ] 実引数拡張後の型不適合の原因の情報です。 W1063C の補助メッセージです。 I0004C using ellipsis terminator on empty parameter declaration ( 省略子がある関数宣言中 ) [ 説明 ] 実引数拡張後の型不適合の原因の情報です。 W1063C の補助メッセージです。 July 31, 2015, CM42-00328-9 225 付録 付録 E エラーメッセージ一覧 So ft war e I0005C S up po r t M a nu al incompatible types between `%T' and `%T' `%T' と `%T' とで型が矛盾しています。 [ 説明 ] 型不適合の情報です。 [ 備考 ] このメッセージは使用されていません。 I0006C #pragma echo is not available on your system #pragma echo: このシステムでは無効です。 [ 説明 ] #pragma echo はサポートされません。 I0007C `%D' is builtin symbol: `%T' `%D' は , `%T' 組込みのシンボルです。 [ 説明 ] シンボルの二重宣言の補助メッセージです。前のシンボルは組込みシンボルです。 226 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e S u p p o r t M a n u a l pointer to function specified W1006C ポインタに対する演算 ( 加算 , 減算 , 比較 ) において , 関数へのポイ ンタ型が指定されました。 [ 説明 ] 加減算および比較演算には関数へのポインタ型は指定できません。 オブジェクトへのポインタと同様に扱い , 処理を続行します。 W1007C empty declaration 宣言がありません。 [ 説明 ] 関数外部にセミコロンのみが記述されました。関数外部にはなんらかの宣言を記述 する必要があります。 セミコロンの記述がなかったものとして処理を続行します。 W1008C unknown size of incomplete type 不完全型です。 [ 説明 ] sizeof 演算子のオペランドに本体の定義のない構造体 , 共用体および列挙タグが指 定されました。sizeof 演算子のオペランドには完全型を指定する必要があります。 W1009C unknown size of incomplete type 配列の大きさがわかりません。 [ 説明 ] sizeof 演算子のオペランドに要素の大きさの判らない配列型が指定されています。 sizeof 演算子のオペランドには完全型を指定する必要があります。 W1010C unknown size of function type 関数の大きさはわかりません。 [ 説明 ] 関数型のサイズを取得しようとしています。関数型の大きさは取得できません。 サイズ 1 であるとして処理を続行します。 [ 備考 ] このメッセージは W1124C, W1125C の補助メッセージです。 July 31, 2015, CM42-00328-9 227 付録 付録 E エラーメッセージ一覧 So ft war e W1011C S up po r t M a nu al unknown size 型の大きさがわかりません。 [ 説明 ] void 型のサイズを取得しようとしています。void 型の大きさは取得できません。 サイズ 1 であるとして処理を続行します。 [ 備考 ] このメッセージは W1124C, W1125C の補助メッセージです。 W1012C invalid null subscript of array type 配列に添字が必要です。 [ 説明 ] 大きさの判らない配列型のサイズを取得しようとしています。 サイズ 0 であるとして処理を続行します。 [ 備考 ] このメッセージは W1124C, W1125C の補助メッセージです。 W1013C invalid variable subscript of array 配列の添字が変数値になっています。 [ 説明 ] sizeof 演算子のオペランドに指定されている配列型の添字が整数定数ではありませ ん。sizeof 演算子のオペランドには翻訳時に大きさの決定できる型を指定する必要 があります。 [ 備考 ] このメッセージは使用されていません。 W1014C identifier without type in function parameter declaration 関数の引数宣言に型がありません。 [ 説明 ] 関数の引数宣言に型がありません。 [ 備考 ] このメッセージは使用されていません。 both return nothing and return value are used in function `%D' W1015C 関数 `%D' で , return に復帰値が指定されている場合と指定されてな い場合があります。 [ 説明 ] 関数内に複数の return 文が記述されていますが , 復帰値の指定があるものとないも のが混在しています。関数の型が void 型でない限り , すべての return 文には復帰値 の指定が必要です。 復帰値の指定がない場合には未知の値が復帰されるものとして処理を続行します。 228 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1016C S u p p o r t M a n u a l %Z: array dimension is variable %Z: 配列の添字が可変な値です。 [ 説明 ] 宣言時の配列の添字には整数定数式のみが指定できます。 [ 備考 ] このメッセージは使用されていません。 %Z: brace-enclosed list of initializers expected for aggregate type W1017C %Z: 構造体 / 共用体 / 配列に対する初期値は , {} で囲まれていなけ ればなりません。 [ 説明 ] 構造体 , 共用体および配列に対する初期値が {} で囲まれていません。 {} を補って処理を続行します。 W1018C %Z: too long %s literal (%u) for array: `%D' %Z: %s(%u 文字 ) が配列に対して長過ぎます。: `%D' [ 説明 ] 配列を文字列またはワイド文字列で初期化する際 , 配列の大きさより長い文字列が 初期値に指定されています。配列の初期化時には配列の大きさより多くの初期値は 指定できません。 あふれた分を無視して処理を続行します。 W1019C %Z: address of string constant is used for `%D' %Z: 文字列定数のアドレスが `%D' に対して使われています。 [ 説明 ] 初期値の値として文字列定数のアドレスが使用されています。当システムでは問題 は発生しませんが , システムによっては問題が生じる可能性があります。 初期化を有効にして処理を続行します。 %Z: address of static symbol `%D' is used for symbol `%D' W1020C %Z: 静的シンボル `%D' のアドレスが変数 `%D' に対して使われてい ます。 [ 説明 ] 初期値の値として static 変数のアドレスが使用されています。翻訳単位外から static 変数の更新が可能となります。 初期化を有効にして処理を続行します。 July 31, 2015, CM42-00328-9 229 付録 付録 E エラーメッセージ一覧 So ft war e W1021C S up po r t M a nu al parameter `%D' unused 使用されていない引数 `%D' があります。 [ 説明 ] 関数内で参照されていない引数が記述されています。 引数を有効にして処理を続行します。 W1022C `%D' unused but it is set `%D' は設定されていますが使用されていません。 [ 説明 ] 設定のみ行われ , 参照が行われないローカル変数があります。 ローカル変数を有効にして処理を続行します。 W1023C `%D' unused `%D' は使用されていません。 [ 説明 ] 参照されないローカル変数があります。 ローカル変数を有効にして処理を続行します。 inefficient operation: result value may be ignored: %O W1024C 副作用のない演算が指定されました。命令の結果が無視されていま す。: %O [ 説明 ] 副作用のない演算が , 副作用が期待される処理中に指定されています。 そのまま処理を続行します。 W1025C statement not reached 実行されない文があります。 [ 説明 ] 分岐文等により実行されない文があります。 そのまま処理を続行します。 non void type function `%D' is expected to return value W1026C 関数の戻り型が void 型でない関数 `%D' は , 何か値を返さなければ なりません。 [ 説明 ] 関数の戻り型が void 型でない関数は , return 文において何らかの値を返却値として 指定する必要があります。 復帰値の指定がない場合には未知の値が復帰されるものとして処理を続行します。 230 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1027C S u p p o r t M a n u a l too large long long integer constant %X 大き過ぎる整数定数です。: %X [ 説明 ] 整数定数が処理系内部で保持できる値を超えています。 処理系で保持できる最大値が指定されたものとして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1028C empty translation unit ファイルが空です。 [ 説明 ] 翻訳単位内には少なくとも 1 つの外部宣言が含まれている必要あります。 そのまま処理を続行します。 W1029C enumerator list has optional comma 列挙定数リストの最後にコンマが指定されています。 [ 説明 ] 列挙定数リストの最後のコンマの後ろに列挙定数が記述されていません。規格では 列挙定数リストはコンマで終わってはならないことになっています。 コンマがなかったものとして処理を続行します。 W1030C unknown # directive 認識できない # 前処理指令です。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。指摘された前処理指令はコンパイ ラ本体では認識されません。 前処理指令がなかったものとして処理を続行します。 W1031C too long identifier, truncated to `%s' 長過ぎる識別子です。長過ぎる部分を無視します。: `%s' [ 説明 ] 記述された識別子が処理系で保持できる長さ (65534) を超えています。 長すぎる部分を無視して処理を続行します。 July 31, 2015, CM42-00328-9 231 付録 付録 E エラーメッセージ一覧 So ft war e W1032C S up po r t M a nu al invalid digit postfix expression 定数に対する不当な接尾語です。 [ 説明 ] 整数定数に誤った接尾語が記述されています。 接尾語の指定を無視して処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1033C integer constant out of range 整数定数が整数の値域を超えています。 [ 説明 ] 整数定数が接尾語で表される型の値域を超えています。 そのまま処理を続行します。 W1034C `;' expected at the end of member declaration メンバ宣言の最後には , `;' が必要です。 [ 説明 ] 構造体または共用体タグ宣言の最後のメンバ宣言に `;' が記述されていません。古い 文法の一部には最終メンバの後ろの `;' がなくても許されるものがありましたが , ANSI 規格では , このような記述は許されません。 `;' が記述されているものとして処理を続行します。 W1035C character constant too long 文字定数が長過ぎます。 [ 説明 ] ワイド文字定数が長すぎます。 先頭 1 文字分を有効にして処理を続行します。 W1036C newline in string literal 文字列リテラル中に改行文字があります。 [ 説明 ] 行中に文字列リテラルを終了する二重引用符が記述されていません。 次の行以降に二重引用符の記述があるかを検査します。 W1037C numeric octal constant contains `8' or `9' 8 進定数に `8' または `9' が含まれています。 [ 説明 ] 8 進数整数定数内に `8' または `9' が含まれています。 8 は 010, 9 は 011 として処理を続行します。 232 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1038C S u p p o r t M a n u a l invalid character `\\%o' (octal) 不当な文字 `\\%o' があります。 [ 説明 ] ソースプログラム中に不当な文字が記述されています。 不当な文字がなかったものとして処理を続行します。 W1039C modulus by 0 ゼロ除算が行われました。 [ 説明 ] 剰余算においてゼロ除算が行われました。 ゼロ除算のオブジェクトが生成されているため , ソース修正を行ってください。 W1040C division by 0 ゼロ除算が行われました。 [ 説明 ] 除算においてゼロ除算が行われました。 ゼロ除算のオブジェクトが生成されているため , ソースの修正を行ってください。 W1041C type mismatch in function prototype 関数原型宣言中の型が不適合です。 [ 説明 ] 関数プロトタイプ宣言における引数の型が適合していません。一方が void 型の場 合 , 他方も void 型である必要があります。 宣言がなかったものとして処理を続行します。 W1042C ellipsis mismatch in function parameter: parameter %d 仮引数中の省略記号が不適合です。: 第 %d 仮引数 [ 説明 ] 関数プロトタイプ宣言における省略終了子の位置が適合していません。 宣言がなかったものとして処理を続行します。 W1043C type mismatch in function prototype: parameter %d 関数原型宣言中の型が不適合です。: 第 %d 仮引数 [ 説明 ] 関数プロトタイプ宣言における引数の型が適合していません。 宣言がなかったものとして処理を続行します。 July 31, 2015, CM42-00328-9 233 付録 付録 E エラーメッセージ一覧 So ft war e W1044C S up po r t M a nu al number of function parameters is different: parameter %d 関数の仮引数の数が異なります。: 第 %d 仮引数 [ 説明 ] 関数プロトタイプ宣言における仮引数の個数が一致しません。 宣言がなかったものとして処理を続行します。 W1045C incompatible types: assumed that plain `char' and `%T' are compatible types 型の不適合 : 型の不適合ですが , `char' と `%T` は型が合っていると 見なします。 [ 説明 ] ANSI 規格では型は不適合です。 [ 備考 ] このメッセージは使用されていません。 W1046C invalid character `\\%o' (octal) in # directive line # 前処理指令行中に無効な文字 `\\%o' (8 進数 ) があります。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。指摘された前処理指令の後ろに不 当な文字が記述されています。 不当な文字を無視して処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1047C alert escape sequence is specified 警報記号が記述されています。 [ 説明 ] 古い仕様では '\a' は警報記号ではありません。 警報記号に変換して処理を続行します。 W1048C promoted to `unsigned int' with unsigned preserved rule 符号保存で `unsigned int' へ拡張されました。 [ 説明 ] 古い仕様では符号なし整数は符号を保存して整数拡張が行われます。 unsigned int へ拡張されるものとして処理を続行します。 234 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1049C S u p p o r t M a n u a l promoted to `int' with value preserved rule 値保存で `int' へ拡張されました。 [ 説明 ] ANSI 規格では符号なし整数は値を保存して整数拡張が行われます。 int へ拡張されるものとして処理を続行します。 W1050C cannot concatenate character string literal and wide character string literal: assumed as character string literal 単純文字列リテラルとワイド文字列リテラルは連結できません。 [ 説明 ] 単純文字列リテラルとワイド文字列リテラルは連結できません。 通常の文字列と見なされます。 [ 備考 ] このメッセージは使用されていません。 W1051C cannot concatenate wide character string literal and character string literal: assumed as wide character string literal ワイド文字列リテラルと単純文字列リテラルは連結できません。 [ 説明 ] ワイド文字列リテラルと単純文字列リテラルは連結できません。 ワイド文字列と見なされます。 W1052C length of identifier `%s' is longer than %d %s の長さが %d より長いです。 [ 説明 ] 識別子の長さが長すぎます。 指定された長さすべてを有効にして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1053C incompatible types: assumed that pointer to char and pointer to void are compatible types 型の不適合 : char 型へのポインタと void 型へのポインタは型が適合 していると見なします。 [ 説明 ] char 型へのポインタと void 型へのポインタは型が適合していると見なします。 適合型であるとみなして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 July 31, 2015, CM42-00328-9 235 付録 付録 E エラーメッセージ一覧 So ft war e S up po r t M a nu al incompatible types between pointer to void and pointer to function W1054C 型の不適合 : void 型へのポインタと関数へのポインタは型が不適合 です。 [ 説明 ] ANSI 規格では , void 型へのポインタと関数へのポインタは型が不適合です。 適合型であるとみなして処理を続行します。 W1055C incompatible types: assumed that pointer to void and pointer to non-void are compatible types 型の不適合 : void 型へのポインタと非 void 型へのポインタは型が適 合していると見なします。 [ 説明 ] void 型へのポインタと非 void 型へのポインタは型が適合していると見なします。 適合型であるとみなして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1056C invalid field `%I' is used 不当なフィールド `%I' が使用されました。 [ 説明 ] 指定されたメンバ名は構造体または共用体中に見つかりませんでしたが , 通常のシ ンボルとして見つかりました。 古い仕様では通常のシンボルとして処理を続行します。 W1057C cast to incomplete type `%T' 不完全な型 `%T' に対して型変換が行われました。 [ 説明 ] 型変換の型にタグの定義されていない列挙型が指定されました。 int 型への型変換とみなして処理を続行します。 W1058C identifier `%D' is used out of its scope 識別子 `%D' が有効範囲を超えて使用されています。 [ 説明 ] ブロック内で外部参照宣言された識別子が , ブロック外で参照されています。 見つかった識別子の参照を有効にして処理を続行します。 236 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1059C S u p p o r t M a n u a l This behavior is ANSI C undefined behavior ANSI C で未定義とされている処理です。 [ 説明 ] ANSI C で未定義とされている処理です。 [ 備考 ] このメッセージは使用されていません。 W1060C length of external linkage identifier (%D %d) is longer than %d 外部結合識別子の長さ (%D %d) が %d を超えています。 [ 説明 ] 外部結合の識別子の長さが長すぎます。 [ 備考 ] このメッセージは使用されていません。 W1061C length of internal linkage identifier (%D %d) is longer than %d 内部結合識別子の長さ (%D %d) が %d を超えています。 [ 説明 ] 内部結合の識別子の長さが長すぎます。 W1062C void type parameter name `%D' is ignored void 型の引数名 `%D' は無視されます。 [ 説明 ] 関数の仮引数に void 型を指定する場合には識別子は不要です。 識別子がなかったものとして処理を続行します。 W1063C parameter type have to be compatible with the type that results from the application of default type promotions 仮引数の型は対応するデフォルトの型拡張の結果型と適合していな ければなりません。 [ 説明 ] 関数プロトタイプの仮引数と非関数プロトタイプの仮引数が適合するためには , 関 数プロトタイプの仮引数を実引数拡張した型が元の型と一致している必要があり ます。 プロトタイプの型を有効にして処理を続行します。 July 31, 2015, CM42-00328-9 237 付録 付録 E エラーメッセージ一覧 So ft war e S up po r t M a nu al prototype declaration of `%D' but previous traditional definition W1064C 関数原型宣言がなされていますが , `%D' は , すでに以前の旧い形式 で定義されています。 [ 説明 ] 関数プロトタイプによる関数宣言が記述されましたが , 既に非関数プロトタイプに よる関数定義が記述されています。 宣言を有効にして処理を続行します。 W1065C inefficient identifier without declaration specifier in function parameter 関数の引数中に宣言指定子がない無効な識別子があります。 [ 説明 ] 関数宣言の仮引数中に宣言指定子のない識別子が記述されています。 仮引数宣言がなかったものとして処理を続行します。 W1066C static function `%D' is used but not defined 定義されていない静的関数 `%D' が宣言されています。 [ 説明 ] static 関数が宣言および参照されていましたが , 定義が記述されていません。 そのまま処理を続行します。 W1067C static function `%D' is declared but not defined 定義されていない静的関数 `%D' が宣言されています。 [ 説明 ] static 関数が宣言されていますが , 定義および参照がありません。宣言は意味があり ません。 そのまま処理を続行します。 W1068C case value is out of range: type of case expression is inconsistent with type of switch conditional expression: case value is truncated case 値が大き過ぎます。case 値は , switch 文の条件式の型に合わせ て切り捨てられました。 [ 説明 ] case ラベルに指定された値が , switch 文の条件式の型で表現できない値です。 条件式の型に合わせて切り捨てられた値を case ラベルの値として処理を続行しま す。 238 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1069C S u p p o r t M a n u a l decimal integer constant `%s' is too large 10 進定数 `%s' が大き過ぎます。 [ 説明 ] 10 進整数定数の値が処理系の内部で表現できる値を超えています。 下位ビットを有効にして処理を続行します。 W1070C octal integer constant `%s' is too large 8 進定数 `%s' が大き過ぎます。 [ 説明 ] 8 進整数定数の値が処理系の内部で表現できる値を超えています。 下位ビットを有効にして処理を続行します。 W1071C hexadecimal integer constant `0x%s' is too large 16 進定数 `0x%s' が大き過ぎます。 [ 説明 ] 16 進整数定数の値が処理系の内部で表現できる値を超えています。 下位ビットを有効にして処理を続行します。 W1072C binary integer constant `%s' is too large 2 進定数 `%s' が大き過ぎます。 [ 説明 ] 2 進整数定数の値が処理系の内部で表現できる値を超えています。 下位ビットを有効にして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1073C decimal integer constant is too large 10 進定数が大き過ぎます。 [ 説明 ] 行番号に指定されている 10 進整数定数値が大きすぎます。 下位ビットを有効にして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1074C floating point constant `%s' is out of range of `float' 浮動小数点定数 `%s' が `float' の値の範囲外です。 [ 説明 ] 浮動小数点定数の値が float 型で表現できる値を超えています。 double 型で変換した結果を float 型に丸めた値を定数値として処理を続行します。 July 31, 2015, CM42-00328-9 239 付録 付録 E エラーメッセージ一覧 So ft war e W1075C S up po r t M a nu al floating point constant `%s' is out of range of `double' 浮動小数点定数 `%s' が `double' の値の範囲外です。 [ 説明 ] 浮動小数点定数の値が double 型で表現できる値を超えています。 オーバフローが発生している場合 , 結果の値は +HUGE_VAL または -HUGE_VAL と なります。アンダフローが発生している場合 , 結果の値は 0 となります。 W1076C floating point constant `%s' is out of range of `long double' 浮動小数点定数 `%s' が `long double' の値の範囲外です。 [ 説明 ] 浮動小数点定数の値が long double 型で表現できる値を超えています。 [ 備考 ] このメッセージは使用されていません。 W1077C external declaration has no declaration specifier 外部宣言に宣言指定子が指定されていません。" [ 説明 ] 外部変数宣言に宣言指定子が指定されていません。外部宣言で宣言指定子を省略で きるのは関数定義の場合だけです。 int 型が指定されているものとして処理を続行します。 W1078C `%s' is ANSI C extension `%s' は ANSI C の拡張です。 [ 説明 ] __asm は ANSI C 拡張仕様です。 そのまま処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1079C prototype parameter declaration is used 関数原型宣言が使用されています。 [ 説明 ] 関数プロトタイプが使用されています。 そのまま処理を続行します。 [ 備考 ] このメッセージは使用されていません。 240 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1080C S u p p o r t M a n u a l `%s' is used `%s' が使われています。 [ 説明 ] asm 文が記述されています。 そのまま処理を続行します。 W1081C multiple type qualifier specified in declaration with obsolete modified typedef type 複数の型修飾子が旧い typedef 宣言で記述されています。 [ 説明 ] typedef 宣言 ( 型定義名の宣言 ) で指定された型修飾子が , 型定義名と共に使用され ています。 型修飾子の作用を単一化して処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1082C multiple `const' specified 複数の `const' で修飾されています。 [ 説明 ] シンボルまたはポインタに作用する const が複数記述されています。 const の作用を単一化して処理を続行します。 W1083C multiple `volatile' specified 複数の `volatile' で修飾されています。 [ 説明 ] シンボルまたはポインタに作用する volatile が複数記述されています。 volatile の作用を単一化して処理を続行します。 W1084C typedefed type already qualified with `const' 型定義の型はすでに const 修飾されています。 [ 説明 ] 型定義名の宣言で指定された const が , 型定義名と共に使用されています。 const の作用を単一化して処理を続行します。 W1085C typedefed type already qualified with `volatile' 型定義の型はすでに volatile 修飾されています。 [ 説明 ] 型定義名の宣言で指定された volatile が , 型定義名と共に使用されています。 volatile の作用を単一化して処理を続行します。 July 31, 2015, CM42-00328-9 241 付録 付録 E エラーメッセージ一覧 So ft war e W1086C S up po r t M a nu al duplicate storage class specifier specified for declaration of `%s' `%s' に対する記憶域クラス指定子の指定が重複しています。 [ 説明 ] 1 つの宣言に重複した記憶域クラス指定子が記述されています。 記憶域クラス指定子の作用を単一化して処理を続行します。 W1087C no name specified in declaration 宣言に識別子がありません。 [ 説明 ] 宣言に識別子の記述がありません。タグ宣言以外は識別子を記述する必要がありま す。 宣言がなかったものとして処理を続行します。 W1088C type declaration `%T' without body in block hides previous type ブロック中に本体のない型宣言 `%T' があります。 [ 説明 ] ブロック内にタグ宣言を持たない構造体または共用体が指定されています。通常 , 以前に宣言されていたタグを隠すために使用されますが , 後方参照を含めて正しく 使用されているかを確認してください。 型宣言を有効にして処理を続行します。 W1089C lacked tag name in struct/union declaration 構造体または共用体のタグ宣言がありません。" [ 説明 ] 構造体または共用体のタグを宣言するためにはタグ名が必要です。メンバ宣言のみ ではタグの参照ができません。 そのまま処理を続行します。 W1090C tag is declared first in parameter list: `%E %I' has function prototype scope `%E %I' は , 仮引数リスト内で初めて宣言されました。 [ 説明 ] タグが関数プロトタイプ引数の宣言時に初めて出現しました。タグのスコープは関 数プロトタイプのスコープであるため , 関数呼び出し時に引数の型が不適合になる おそれがあります。 タグ宣言を有効にして処理を続行します。 W1091C redeclaration of `%D' `%D' は , 二重定義されています。 [ 説明 ] シンボルが再宣言されました。型が適合しているかを確認してください。 242 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1092C S u p p o r t M a n u a l redeclaration of `%D': linkage conflict `%D' は , 二重定義されています。 [ 説明 ] シンボルのリンケージがあわないため再宣言とみなされます。記憶域クラス指定子 を確認してください。 W1093C redeclaration of builtin symbol `%D' as static function 組込み関数 `%D' が , 静的関数として再宣言されました。 [ 説明 ] 組込み関数 ( システムで処理手順の決まっている関数 ) は外部結合を持つ関数とし て処理されていますが , static 記憶域クラスを持つ関数として再宣言されました。 W1094C redeclaration of `%D': promoted parameter mismatch `%D' は , 二重定義されています : 仮引数が不適合です。 [ 説明 ] 実引数拡張された仮引数が適合していないため再宣言とみなされます。引数の型を 確認してください。 W1095C linkage conflict between internal and external: `%D' 内部結合と外部結合とで `%D' の結合が矛盾しています。 [ 説明 ] シンボルのリンケージ ( 結合 ) が合いません。記憶域クラス指定子を確認してくだ さい。 W1096C %s: definition of `%s' %s は , `%s' の定義です。 [ 説明 ] 関数の定義において , 既に宣言されているシンボルとリンケージが合いません。記 憶域クラス指定子を確認してください。 W1097C %s: declaration of `%s' %s: `%s' の宣言です。 [ 説明 ] 関数の宣言において , 既に定義されているシンボルとリンケージが合いません。記 憶域クラス指定子を確認してください。 July 31, 2015, CM42-00328-9 243 付録 付録 E エラーメッセージ一覧 So ft war e W1098C S up po r t M a nu al %s: declaration of `%s' %s: `%s' の宣言です。 [ 説明 ] 関数の宣言において , 既に宣言されているシンボルとリンケージが合いません。記 憶域クラス指定子を確認してください。 W1099C external array `%D' has variable dimension 外部の配列 `%D' が可変な大きさになっています。 [ 説明 ] 外部に宣言されている配列の添字が整数定数ではありません。 [ 備考 ] このメッセージは使用されていません。 aggregate type symbol `%D' declared with register storage class W1100C 集合型のシンボル `%D' がレジスタ記憶域クラスをともなって宣言 されました。 [ 説明 ] 配列 , 構造体および共用体型を持つシンボルが register 記憶域クラス指定子を伴って 宣言されました。規格上は誤りではありませんが , 移植性が失われる可能性があり ます。 W1101C local declaration of `%D' hides parameter ローカル宣言が引数 `%D' を見えなくしました。 [ 説明 ] ローカル宣言されているシンボルが既に引数として宣言されています。規格上は二 重宣言になります。 W1102C declaration of `%D' hides previous declaration `%D' の宣言が以前の宣言を見えなくしました。 [ 説明 ] ブロック内のシンボルの宣言が , 外側のブロックで宣言されている同じシンボルを 見えなくしました。外側のシンボルは参照できません。 W1103C subscript of array is zero 配列の大きさが 0 です。 [ 説明 ] 配列の添字の値が 0 です。 宣言を有効にして処理を続行します。 244 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1104C S u p p o r t M a n u a l useless type qualifiers for function return type: `%T' 関数の戻り型に対する型修飾子は無意味です。: `%T' [ 説明 ] 関数の戻り型に指定されている型修飾子 (const および volatile) は意味がありません。 [ 備考 ] このメッセージは使用されていません。 W1105C useless type qualifier specified 無意味な型修飾子が指定されました。 [ 説明 ] タグ宣言に型修飾子が指定されています。型修飾子はシンボルまたはポインタに対 して作用するため , ここでは意味がありません。 function return block scope type: `%T' W1106C 関数の返す値の型がブロック内が有効範囲の型 `%T' になっていま す。" [ 説明 ] 関数の戻り型がブロック内で宣言されている構造体または共用体型になっていま す。関数の実際の型と不適合を起こす可能性があります。 W1107C escape sequence `\\x' is specified 拡張表記 ( エスケープシーケンス )`\\x' が指定されました。 [ 説明 ] 古い仕様では `\x' による 16 進文字表記はありません。 W1108C useless type qualifiers for array type 配列型に対する修飾子は無意味です。 [ 説明 ] 配列型に対する型修飾子は配列要素に作用します。 [ 備考 ] このメッセージは使用されていません。 W1109C useless type qualifiers for function type 関数型に対する修飾子は無意味です。 [ 説明 ] 関数の戻り型に指定されている型修飾子 (const および volatile) は意味がありません。 July 31, 2015, CM42-00328-9 245 付録 付録 E エラーメッセージ一覧 So ft war e W1110C S up po r t M a nu al parameter `%D' uses block scope struct/union type: `%T' 仮引数 `%D' が , ファイル有効範囲でない型 `%T' を使用しています。 [ 説明 ] 関数の引数の型がブロック内で宣言されている構造体または共用体型になってい ます。仮引数と実引数間で型の不適合を起こす可能性があります。 W1111C void type parameter name `%D' is ignored void 型の仮引数名 `%D' は無視されます。 [ 説明 ] 引数に void を指定する場合には仮引数名は不要です。引数の void は引数がないこ とを表します。 [ 備考 ] このメッセージは使用されていません。 W1112C useless storage class specifier `%A' specified 無意味な記憶域クラス指定子 `%A' が指定されました。 [ 説明 ] タグ宣言に記憶域クラス指定子が指定されています。記憶域クラス指定子はシンボ ルの特性を表すため , ここでは意味がありません。 W1113C type qualifiers of parameter void type is ignored void 型の仮引数に対する型修飾子は無視されます。 [ 説明 ] 引数に void を指定する場合には型修飾子は意味がありません。引数の void は引数 がないことを表します。 [ 備考 ] このメッセージは使用されていません。 parameter identifier `%I' is implicitly declared as `int' W1114C 仮引数としての識別子 `%I' は `int' 型として無条件に宣言されまし た。 [ 説明 ] 古い形式の関数定義において , 引数に指定されたシンボルの型宣言が記述されてい ません。int 型の引数として処理します。 W1115C type declared in cast expression キャスト式中で型が宣言されました。 [ 説明 ] キャスト式中で構造体または共用体タグが宣言されました。 246 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1116C S u p p o r t M a n u a l external declaration `%D' with initializer at %s 外部宣言されている `%D' が %s で初期設定されています。 [ 説明 ] extern 記憶域クラス指定子を伴った外部変数が初期化されています。外部参照を表 す extern 記憶域クラス指定子は意味がありません。 type of bit-field member `%D' is not `int', `signed int' or `unsigned int' W1117C ビットフィールド `%D' の型が , `int', `signed int', `unsigned int' であり ません。 [ 説明 ] 規格ではビットフィールドの型は `int', `signed int' および `unsigned int' のみです。こ れ以外の型は拡張仕様として受け入れられます。 bit-field needs signed or unsigned: type of bit-field `%D' is assumed `%T' W1118C ビットフィールドには , signed または unsigned が必要です。ビット フィールド `%D' の型は , `%T' と見なされました。 [ 説明 ] signed または unsigned が付加されていない型がビットフィールドの型として指定さ れた場合 , 符号の扱いは処理系定義です。 内部で変換した型をビットフィールドの型とします。 W1119C enumerator value exceeds INT_MAX 列挙定数の値が INT_MAX を超えています。 [ 説明 ] 列挙定数の値の最大値は INT_MAX で表される値です。 INT_MIN の値が指定されたものとして処理を続行します。 type of bit-field is `%T': type of bit-field `%D' is assumed `%T' W1120C ビットフィールドの型に , `%T' が指定されました。ビットフィール ド `%D' の型は , `%T' と見なされました。 [ 説明 ] ビットフィールドの型に enum 型が指定されました。 内部で変換した型をビットフィールドの型とします。 W1121C invalid operands: %s: %O オペランドに誤りがあります。: %s: %O [ 説明 ] ポインタに対する演算 ( 加算 , 減算 , 比較 ) に , 関数へのポインタ型が指定されてい ます。これらの演算にポインタ型を指定する場合にはオブジェクトへのポインタで ある必要があります。 July 31, 2015, CM42-00328-9 247 付録 付録 E エラーメッセージ一覧 So ft war e W1122C S up po r t M a nu al %Z: `%T' has `const' field: %O %Z: `%T' は , `const' 型を持つフィールドを持っています。: %O [ 説明 ] const 修飾されたメンバを持つ構造体へは代入できません。 W1123C %Z incompatible pointer type in function `%D' %Z: ポインタの型間で矛盾があります。: 関数 `%D' [ 説明 ] ポインタの型が適合しません。 [ 備考 ] このメッセージは使用されていません。 W1124C %Z: %s: `%T': %O %Z: %s: `%T': %O [ 説明 ] サイズを算出できない型(添字のない配列, 関数およびvoid型)が指定されています。 添字のない配列はサイズ 0, 関数および void 型はサイズ 1 として処理を続行します。 W1125C %Z: %s: `%T' %Z: %s: `%T' [ 説明 ] サイズを算出できない型(添字のない配列, 関数およびvoid型)が指定されています。 添字のない配列はサイズ 0, 関数および void 型はサイズ 1 として処理を続行します。 W1126C %Z incompatible pointer type: `%D' %Z: 不適合なポインタが指定されています。: `%D' [ 説明 ] ポインタ型が適合しません。 [ 備考 ] このメッセージは使用されていません。 W1127C type conversion void to void void 型から void 型への型変換です。 [ 説明 ] void 型から void 型へキャストされました。 [ 備考 ] このメッセージは使用されていません。 248 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1128C S u p p o r t M a n u a l invalid type conversion to void type void 型への不当な型変換です。 [ 説明 ] void 型へのキャストです。 [ 備考 ] このメッセージは使用されていません。 W1129C invalid type conversion to same non scalar type 同じ非スカラ型への型変換は不当です。 [ 説明 ] キャストの型とキャストのオペランドの型が同じ構造体または共用体型です。キャ ストは不要です。 W1130C invalid type for conditional expression: `%T' specified: scalar type expected: %O `%T' 型は , 条件式に対して指定できません。: %O [ 説明 ] 条件演算子の第 1 オペランドに void 型が指定されています。 [ 備考 ] このメッセージは使用されていません。 W1131C `%D' may be used before it is set `%D' は設定される以前に使われています。 [ 説明 ] 設定する前に参照されているシンボルです。参照時の値は保証されません。 W1132C implicitly function declared `%I': assumed return `int' 関数 `%I' の暗黙の宣言です。`int' を返すと見なされます。 [ 説明 ] 関数宣言のない関数呼び出しがありました。復帰値の型は int とみなされます。 W1133C return without value in non void type function `%D' void 型以外の関数 `%D' で値が返されていません。 [ 説明 ] void 型以外の関数の return 文に復帰値が記述されていません。 W1134C unmodifiable object `%D' 変更不可能なオブジェクト `%D' です。 [ 説明 ] const 修飾されているシンボルは変更できません。 July 31, 2015, CM42-00328-9 249 付録 付録 E エラーメッセージ一覧 So ft war e W1135C S up po r t M a nu al unmodifiable address 変更不可能なアドレスです。 [ 説明 ] const 修飾されているポインタは変更できません。 W1136C implicitly take address of rvalue 暗黙に右辺値のアドレスをとりました。 [ 説明 ] 暗黙に右辺値のアドレスをとりました。 [ 備考 ] このメッセージは使用されていません。 W1137C take address of rvalue 右辺値のアドレスをとりました。 [ 説明 ] アドレスの取得対象は左辺値である必要があります。 W1138C cannot take address of cast expression 型変換のアドレスをとりました。 [ 説明 ] アドレスの取得対象は左辺値である必要があります。キャストの結果は左辺値では ありません。 cannot take address of `%D' declared with `register' storage class specifier W1139C register 記憶域クラス指定子をともなって宣言された `%D' のアドレ スをとりました。 [ 説明 ] register 記憶域クラス指定子を伴って宣言されたシンボルは , アドレスの取得対象に はできません。 W1140C parameter `%D' cannot be redeclared in function body 関数本体内で引数 `%D' は再定義できません。 [ 説明 ] ローカル宣言されているシンボルが既に引数として宣言されています。引数の再定 義はできません。 W1141C incompatible types between `%T' and `%T' `%T' と `%T' とで型が矛盾しています。 [ 説明 ] 型の不適合が発生したときの , 不適合となった型の情報です。 250 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1142C S u p p o r t M a n u a l redefinition of %s `%D' %s: `%D' の二重定義です。 [ 説明 ] typedef による型定義が二重に行われました。型定義名は結合を持たないため , 型定 義は複数指定できません。 %Z incompatible pointer type: argument %d of `%D' W1143C %Z: 不適合なポインタが指定されています。: 第 %d 引数 : 関数 `%D' [ 説明 ] 不適合なポインタです。 [ 備考 ] このメッセージは使用されていません。 W1144C %Z: expected `%T' actual `%T': argument %d of `%D' %Z: `%T' に対して `%T' を指定しています。: 第 %d 引数 : 関数 `%D' [ 説明 ] 関数呼び出しの実引数の型と宣言時の仮引数の型が適合しません。仮引数の型に合 うように実引数を見直してください。 W1145C %O applys to bit-field 不当な演算子 %O がビットフィールドに適用されました。 [ 説明 ] sizeof 演算子のオペランドにビットフィールドが指定されています。ビットフィー ルドの大きさは取得できません。 W1146C `$' character in identifier 識別子中に `$' があります。 [ 説明 ] 識別子中に `$' が記述されています。 [ 備考 ] このメッセージは使用されていません。 W1147C take address of rvalue: %O 右辺値のアドレスがとられました。: %O [ 説明 ] 右辺値 ( 代入の右辺に許される式の値 ) に対してアドレス参照演算が行われていま す。 July 31, 2015, CM42-00328-9 251 付録 付録 E エラーメッセージ一覧 So ft war e W1148C S up po r t M a nu al invalid `long float' type specifier: treated as `double' `long float' 型は不当です。`double' としてみなします。 [ 説明 ] long float 型が指定されました。規格では long float 型はありません。 double 型とみなして処理を続行します。 W1149C fixed parameter required before `...' `...' の前に名前のある仮引数が必要です。 [ 説明 ] 仮引数リストに省略終了子のみを記述することはできません。何らかの仮引数が必 要です。 W1150C medium type specifier is used medium 型指定子が使用されました。 [ 説明 ] medium 型指定子はありません。 [ 備考 ] このメッセージは使用されていません。 W1151C %Z: expected `%T' actual `%T' in function `%D' %Z: `%T' に対して `%T' を返しています。: 関数 `%D' [ 説明 ] 関数の復帰値の型と return 文に指定された式の型が適合しません。復帰値の型に合 うように return 文の式を見直してください。 W1152C %Z: expected `%T' actual `%T': argument %d %Z: `%T' に対して `%T' を指定しています。: 第 %d 引数 [ 説明 ] 関数呼び出しの実引数の型と宣言時の仮引数の型が適合しません。仮引数の型に合 うように実引数を見直してください。 W1153C %Z from `%T' to `%T': `%D' %Z: `%T' から `%T' への指定です。: `%D' [ 説明 ] 初期化の対象となる型と初期値の型が適合しません。初期化の対象となる型に合う ように初期値を見直してください。 252 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1154C S u p p o r t M a n u a l %Z from `%T' to `%T': %O %Z: `%T' から `%T' への指定です。: %O [ 説明 ] 代入の左辺の型と右辺の型が適合しません。左辺の型に合うように右辺の型を見直 してください。 W1155C %Z incompatible pointer type: argument %d %Z: 不適合なポインタが指定されています。: 第 %d 引数 [ 説明 ] 不適合なポインタです。 [ 備考 ] このメッセージは使用されていません。 W1156C %Z between incompatible pointer types: %O %Z: 不適合なポインタが指定されています。: %O [ 説明 ] 不適合なポインタです。 [ 備考 ] このメッセージは使用されていません。 W1157C non void type function `%D' reaches to the end of function without return void 型ではない関数 `%D' が復帰値を返却せずに終了しました。 [ 説明 ] void 型でない関数に return 文がありません。未知の値が返却されます。 W1158C function `%D' returns `int' 関数 `%D' は `int' を返します。 [ 説明 ] 関数定義に宣言指定子が記述されていません。型の情報がないため , int 型を返す関 数とみなします。 W1159C linkage conflict between internal and external 内部結合と外部結合が衝突をおこしています。 [ 説明 ] 既にあるシンボルとリンケージが合いません。 [ 備考 ] このメッセージは W1096C, W1097C, W1098C の補助メッセージです。 July 31, 2015, CM42-00328-9 253 付録 付録 E エラーメッセージ一覧 So ft war e W1160C S up po r t M a nu al %Z: left hand side must be modifiable lvalue %Z: 左側の値は変更可能な左辺値でなくてはなりません。 [ 説明 ] 左辺の値は変更可能な左辺値でなければなりません。 W1161C reference to rvalue array 右辺値配列が参照されました。 [ 説明 ] 右辺値の配列が参照されています。 storage class specifier `%A' is specified for function `%D' declared in block W1162C 記憶域指定子 `%A' がブロック中に宣言された関数 `%D' に指定され ました。 [ 説明 ] static 記憶域クラス指定子を持つ関数がブロック内に宣言されています。規格では ブロック内の関数宣言は extern 以外の明示的な記憶域クラス指定子を持ってはいけ ないことになっています。 W1163C extern function `%D' declared in block ブロック内で外部関数 `%D' が宣言されました。 [ 説明 ] extern 記憶域クラス指定子を持つ関数がブロック内に宣言されています。 W1164C `long long' integer constant is used `long long' 整数定数が使用されています。 [ 説明 ] 接尾語 `L' または `l' を二つ指定した long long 整数定数は ANSI C 拡張仕様です。た だし , 当処理系では long long 型は取り扱えません。 W1165C parameter type mismatch of `%D' `%D' の引数の型が合っていません。 [ 説明 ] プロトタイプ宣言と引数の情報を持たない関数宣言は , プロトタイプの型を実引数 拡張しますが , プロトタイプ宣言の引数を実引数拡張した型と元の型が一致しませ ん。プロトタイプ宣言の引数の型に実引数拡張後の型を指定してください。 254 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1166C S u p p o r t M a n u a l value of integral constant expression for enumerator `%I' is out of range 列挙定数 `%I' に対する整数定数の値が有効範囲を超えています。 [ 説明 ] 列挙定数に設定する整数定数の値が INT_MAX を超えています。列挙定数の値は int 型で表現できるものである必要があります。 unary minus operator applys to too large unsigned integer constant W1167C 単項マイナス演算子は大き過ぎる符号なし整数定数に適用されまし た。 [ 説明 ] 単項マイナス演算子が符号なし整数定数に適用されました。 [ 備考 ] このメッセージは使用されていません。 W1168C `%E %I' declared in parameter declaration 数の宣言中に , 構造体または共用体の宣言がされました。: `%E %I' [ 説明 ] 非プロトタイプ形式の関数定義のパラメータ宣言においてタグが同時に宣言され ました。タグのスコープは関数が終了するまでのブロックのスコープであるため , 関数呼び出し時に引数の型が不適合になるおそれがあります。 タグ宣言を有効にして処理を続行します。 W1169C label `%D' is not referred ラベル `%D' は参照されていません。 [ 説明 ] ラベルに対する goto 文がありません。プログラムに対する影響はありません。 W1170C `long long' type specifier is used `long long' 型の記述が使用されています。 [ 説明 ] 型指定子に long long 型が指定されています。当処理系では long long 型は取り扱え ません。 long 型の指定とみなして処理を続行します。 July 31, 2015, CM42-00328-9 255 付録 付録 E エラーメッセージ一覧 So ft war e W1171C S up po r t M a nu al unterminated filename ファイル名が適正に終了していません。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに行番号とファイ ル名を表す前処理指令がありますが , ファイル名を終了するための二重引用符が記 述されていません。 行番号指令行を無視して処理を続行します。 W1172C too long hexadecimal escape sequence 16 進拡張表記の最大長を超えています。 [ 説明 ] 拡張表記の `\x' による 16 進文字表記が文字の大きさで表現できない値です。 結果の下位 1 バイトまたはワイド文字の大きさ分を有効にして処理を続行します。 W1173C `*/' exists outside of comment コメントの外に `*/' が現れました。 [ 説明 ] C 言語のコメントは /* と */ で括られますが , コメント外に */ が記述されました。コ メントのネストはできないため注意してください。 単なる `*' と `/' として処理します。 W1174C hexadecimal escape sequence has no digit value 16 進拡張表記が数値を持っていません。 [ 説明 ] 拡張表記の `\x' の直後に 16 進文字表記がありません。 `\x0' が指定されたものとして処理を続行します。 W1175C type conversion between different integral types 異なる整数型間で型変換が行われました。 [ 説明 ] サイズの異なる整数型間で型変換が行われました。 [ 備考 ] このメッセージは使用されていません。 W1176C type conversion between different floating-points 異なる浮動小数点型間で型変換が行われました。 [ 説明 ] サイズの異なる浮動小数点型間で型変換が行われました。 256 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1177C S u p p o r t M a n u a l truncate pointer to lose significance: `%s%s' ポインタの値が切り捨てられたため , 意味が失われました。: `%s%s' [ 説明 ] ポインタ型が保持するアドレス値のすべてを持つことができない整数型に型変換 されました。アドレス値としての意味が失われます。 integral type expression expected for %%%c: function `%s' argument %d W1178C %%%c に対して整数型を記述してください。: 関数 `%s' の第 %d 引 数 [ 説明 ] printf のフォーマット文字列内の変換指定 %d, %u, &o, および %i に対して char 型へ のポインタ ( 文字列 ) の値は指定できません。 integral type expression expected for %%%c: function `%s' argument %d W1179C %%%c に対して整数型を記述してください。: 関数 `%s' の第 %d 引 数 [ 説明 ] printf のフォーマット文字列内の変換指定 %c に対してポインタ型の値は指定でき ません。 W1180C pointer to void type expression expected for %%%c: function `%s' argument %d %%%c に対して void 型へのポインタを記述してください。: 関数 `%s' の第 %d 引数 [ 説明 ] printf のフォーマット文字列内の変換指定 %p に対して void 型へのポインタの値以 外は指定できません。 W1181C pointer to integral type expression expected for %%%c: function `%s' argument %d %%%c に対して整数型へのポインタを記述してください。: 関数 `%s' の第 %d 引数 [ 説明 ] printf のフォーマット文字列内の変換指定 %n に対して整数型へのポインタの値以 外は指定できません。 W1182C too many arguments for format string: function `%s' フォーマット文字列に対して実引数が多過ぎます。: 関数 `%s' [ 説明 ] printf のフォーマット文字列内の変換指定に対して実引数の個数が多すぎます。余 分な実引数は無視されます。 July 31, 2015, CM42-00328-9 257 付録 付録 E エラーメッセージ一覧 So ft war e W1183C S up po r t M a nu al invalid struct/union member declaration: name required 構造体メンバ又は共用体メンバの宣言が不当です。 [ 説明 ] 構造体および共用体メンバの宣言に宣言子が指定されていません。空のビット フィールド (:0 を付加 ) にするか , メンバ名を記述してください。 W1184C expand pointer to lose significance: `%s%s' ポインタが拡張されたため意味を失いました。: `%s%s' [ 説明 ] ポインタ型が保持するアドレス値のサイズより大きい整数型に型変換されました。 アドレス値としての意味が失われます。 W1185C redeclaration of global symbol `%D' as extern symbol declared in block ブロック中の外部シンボルとして `%D' が二重宣言されました。 [ 説明 ] ブロック内に記述された extern 記憶域クラスを持つシンボルの型が , 既に外部宣言 または外部参照宣言されている型と適合しません。型が適合するように見直してく ださい。 W1186C unknown escape sequence `\\%c' 認識できない拡張表記 `\\%c' です。 [ 説明 ] `\' の直後に拡張表記の仕様に規定されていない文字が記述されています。 `\' がなかったものとして処理を続行します。 W1187C too large integer constant for radix %d %d 進数に対して大き過ぎる整数定数です。 [ 説明 ] 数字列の桁数が多すぎるため , 内部表現に変換する前にオーバフローすることが確 定します。 値 0 が指定されたものとして処理を続行します。 W1188C escape sequence does not fit in range of character 拡張表記が文字の適用範囲を超えています。 [ 説明 ] 拡張表記の結果の値が 1 バイトで表現できません。(\400 など ) 結果の下位 1 バイトを有効にして処理を続行します。 258 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1189C S u p p o r t M a n u a l escape sequence does not fit in range of wide character 拡張表記がワイド文字の適用範囲を超えています。 [ 説明 ] 拡張表記の結果の値が 2 バイトで表現できません。 結果のワイド文字の大きさ分を有効にして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1190C too large integer constant `%s' for radix %d 整数定数 `%s' は , %d 進数に対して大き過ぎます。 [ 説明 ] 数字列の桁数が多すぎるため , 内部表現に変換する前にオーバフローすることが確 定します。 値 0 が指定されたものとして処理を続行します。 W1191C arithmetic calculation/conversion error: %O 算術演算 / 変換エラーが発生しました。: %O [ 説明 ] 定数演算の結果 , エラーが発生しました。 W1192C exceed the maximum length of octal escape sequence 8 進拡張表記の最大長を超えました。 [ 説明 ] 8 進拡張表記が 4 桁以上記述されています。 [ 備考 ] このメッセージは使用されていません。 W1193C different symbol types between `%s' and `%s' `%s' と `%s' として指定されました。 [ 説明 ] 同じ名前空間内で同じ識別子が異なる目的で指定されました。 unknown format flags 0x%x: function `%s' W1194C 認識できないフォーマット指定フラグ形式 0x%x が使われています。 : 関数 `%s' [ 説明 ] printf のフォーマット文字列内に認識できない変換指定が記述されています。 July 31, 2015, CM42-00328-9 259 付録 付録 E エラーメッセージ一覧 So ft war e S up po r t M a nu al unknown format flags %%%c: function `%s' W1195C 認識できないフォーマット指定フラグ形式 %%%c が使われていま す。: 関数 `%s' [ 説明 ] printf のフォーマット文字列内に認識できない変換指定が記述されています。 W1196C function return type `%T' is not promoted for function type declaration without prototype 関数の返り値の型 `%T' は , 型拡張されません。 [ 説明 ] 古い仕様では , 関数の返り値の型は実引数拡張された型が使用されていましたが , ANSI 規格では , 関数の返り値の型は指定された型になります。 W1197C integer constant isn't treated as unsigned: %O 整数定数を , 符合なしとしては扱いません : %O [ 説明 ] 符号なし整数定数として記述された定数を , 符号付きとして取り扱います。 W1198C `%T' is useless declaration `%T' の宣言は無効です。 [ 説明 ] 列挙タグ宣言 (enum tag; のみ ) は意味がありません。宣言は無視されます。 W1199C array of incomplete type `%T' 配列が不完全型 `%T' です。 [ 説明 ] 配列要素の型に構造体型または共用体型が指定されていますが , 不完全型 ( タグの 宣言がない ) です。 W1200C suspicious assignment operator in conditional expression: %O 条件式中に疑わしい代入演算があります。: %O [ 説明 ] 条件式中に代入演算が記述されています。== 演算子と誤っていないかを確認して ください。 W1201C different semantics between transition and later: %O ANSI C で動作が変更された演算です。: %O [ 説明 ] 符号なし保存則が値保存則に変わったことにより動作が変更された演算です。 260 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1202C S u p p o r t M a n u a l call function without prototype declaration: `%s' 関数原型宣言の指定なしに関数を呼び出しています。: `%s' [ 説明 ] プロトタイプ宣言を行っていない関数が呼び出されています。引数が正しく指定さ れているかを確認してください。 W1203C use address of string constant in conditional expression 論理式のオペランドとして文字列のアドレスを使用しています。 [ 説明 ] 論理式のオペランドに文字列のアドレスが指定されています。 W1204C static symbol `%D' unused 静的シンボル `%D' は使用されていません。 [ 説明 ] static 記憶域クラス指定子を伴って宣言されたシンボルが使用されていません。static シンボルですので領域の獲得は行われます。 W1205C %O: constant out of range for `%T': %X %O: 定数が , `%T' の値域を超えています。: %X [ 説明 ] 比較演算に記述された定数および case ラベルの定数が , 型の値域を超えています。 定数値を見直してください。 string expression expected for %%%c: function `%s' argument %d W1206C %%%c に対して文字列を記述してください。: 関数 `%s' の第 %d 引 数" [ 説明 ] printf のフォーマット文字列内の変換指定 %s に対して文字型へのポインタ ( 文字列 等 ) の値以外は指定できません。 W1207C conditional expression is constant: %O 条件式が定数です。: %O [ 説明 ] 条件式が定数です。条件の意図が正しいか否かを確認してください。 July 31, 2015, CM42-00328-9 261 付録 付録 E エラーメッセージ一覧 So ft war e S up po r t M a nu al cannot take address of array `%D' declared with `register' W1208C register 記憶域クラス指定子で宣言された配列 `%D' のアドレスがと られました。 [ 説明 ] 配列のアドレスを取得しようとしていますが , 配列が register 記憶域クラス指定子を 持って宣言されているため , アドレスは取得できません。アドレス参照を行いたい 場合には register 記憶域クラス指定子を指定しないでください。 too many format characters specified in string constant for function `%s' W1209C 関数 `%s' に対する文字列中のフォーマット文字の記述が多過ぎま す。 [ 説明 ] printf のフォーマット文字列内の変換指定に対して実引数の個数が少なすぎます。不 足分の変換指定については正しいチェックが行われません。 W1210C %Z: constant out of range for `%T': %X %Z: 定数が , `%T' の値域を超えています。: %X [ 説明 ] 初期値に指定された定数が , 型の値域を超えています。定数値を見直してください。 long double expression expected for %%L%c: function `%s' argument %d W1211C %%L%c に対して long double 型を記述してください。: 関数 `%s' に 対する第 %d 引数 [ 説明 ] printf のフォーマット文字列内の変換指定 %Lf, %Le, %LE, %Lg および %LG に対し て long double 型の値以外は指定できません。 W1212C floating-point type expression expected for %%%c: function `%s' argument %d %%%c に対して浮動小数点型を記述してください。: 関数 `%s' に対 する第 %d 引数 [ 説明 ] printf のフォーマット文字列内の変換指定 %f, %e, %E, %g および %G に対して浮動 小数点型 (float, double および long double) の値以外は指定できません。 constant out of range for `%T' bit-field: its width %d: %O W1213C 定数が , ビットフィールド ( 型 `%T' 幅 %d) の大きさの値域を超えて います。: %O [ 説明 ] 比較演算に記述された定数が , ビットフィールドの大きさの値域を超えています。 定数値を見直してください。 262 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1214C S u p p o r t M a n u a l type conversion between different types: `%T' and `%T' `%T' と `%T' とで , 異なった型間の型変換をしています。 [ 説明 ] NULL ポインタ定数をポインタ型以外の型に型変換しようとしました。 W1215C end of loop not reached ループの終りに到達しません。 [ 説明 ] ループ内にループを抜けるための文 (break, goto) があり , ループの終わりに制御が 渡りません。 W1216C loop not entered from the entry of loop ループの入口が実行されません。 [ 説明 ] ループの先頭を飛び越すように goto 文とラベルが記述されています。このため , ループの先頭が実行されません。 W1217C old-fashioned function declaration hides previous prototype declaration `%D' 旧式の関数宣言が以前の関数原型宣言を隠しました。: `%D' [ 説明 ] プロトタイプ形式でない関数宣言が , プロトタイプ形式の関数宣言を参照できない ようにしました。引数の検査が行われないため , できるだけプロトタイプ形式の関 数宣言に統一してください。 W1218C `%D' hides external `%D' は外部名を隠しました。 [ 説明 ] 外部名を参照できないようにシンボルが宣言されました。 [ 備考 ] このメッセージは使用されていません。 W1219C `const' symbol `%D' has no initializer `const' シンボル `%D' は初期設定されていません。 [ 説明 ] const 型修飾子を伴って宣言された変数に初期値がありません。const シンボルは更 新ができないため , 未知の値のまま利用されることになります。 July 31, 2015, CM42-00328-9 263 付録 付録 E エラーメッセージ一覧 So ft war e W1220C S up po r t M a nu al static `%D' hides external 静的変数 `%D' は外部名を隠しました。 [ 説明 ] static 記憶域クラス指定子を伴って宣言されたシンボルが , 外部名を参照できないよ うにしました。外部参照変数が参照できなくなります。 W1221C typedef `%D' hides external 型定義名 `%D' は外部名を隠しました。 [ 説明 ] typedef 記憶域クラス指定子を伴って宣言されたシンボルが , 外部名を参照できない ようにしました。外部参照変数が参照できなくなります。 W1222C auto/register `%D' hides external auto/register 変数 `%D' は外部名を隠しました。 [ 説明 ] auto 記憶域クラス指定子および register 記憶域クラス指定子を伴って宣言されたシ ンボルが , 外部名を参照できないようにしました。外部参照変数が参照できなくな ります。 W1223C invalid function type conversion from `%T' to `%T' `%T' から `%T' への型変換は不当です。 [ 説明 ] 関数へのポインタと非 void 型へのポインタの相互の型変換はできません。 W1224C incompatible enumeration between `%T' and `%T' `%T' と `%T' は型互換ではありません。 [ 説明 ] 型互換はありません。 [ 備考 ] このメッセージは使用されていません。 W1225C type of expression is incomplete type: `%T' 式の型が不完全型です。: `%T' [ 説明 ] 式の型が未定義のタグを持った構造体または共用体型です。式中では未定義のタグ を持った構造体または共用体型は指定できません。タグの定義を行ってください。 264 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1226C S u p p o r t M a n u a l type of expression is `%T' 式の型が , `%T' 型です。 [ 説明 ] void 型へのポインタを使用してポインタ参照しています。参照先は void 型であって はなりません。キャストにより適切な型を参照するようにしてください。 W1227C arithmetic calculation overflow: %O 算術演算の結果 , オーバーフローが生じました。: %O [ 説明 ] 算術演算の結果 , オーバフローが発生しました。定数演算を見直してください。 W1228C arithmetic calculation underflow: %O 算術演算の結果 , アンダーフローが生じました。: %O [ 説明 ] 算術演算の結果 , アンダフローが発生しました。定数演算を見直してください。 W1229C floating point exception: %O 浮動小数点例外が発生しました。: %O [ 説明 ] 算術演算の結果 , 浮動小数点例外が発生しました。定数演算を見直してください。 W1230C floating point division by 0: %O 浮動小数点数のゼロ除算が行われました。: %O [ 説明 ] 算術演算において , 浮動小数点数のゼロ除算が発生しました。定数演算を見直して ください。 W1231C floating point overflow: %O 浮動小数点演算の結果 , オーバーフローが生じました。: %O [ 説明 ] 算術演算において , 浮動小数点数のオーバフローが発生しました。定数演算を見直 してください。 W1232C floating point underflow: %O 浮動小数点演算の結果 , アンダーフローが生じました。: %O [ 説明 ] 算術演算において , 浮動小数点数のアンダフローが発生しました。定数演算を見直 してください。 July 31, 2015, CM42-00328-9 265 付録 付録 E エラーメッセージ一覧 So ft war e W1233C S up po r t M a nu al floating point inexact: %O 浮動小数点演算の結果が不正確です。: %O [ 説明 ] 算術演算において , 浮動小数点数の演算結果が正確ではありません。定数演算を見 直してください。 W1234C conversion to `%T' is out of range `%T' の値域を超えた値の型変換です。 [ 説明 ] 定数の型変換において , 値域を超えた値の型変換が行われました。定数演算を見直 してください。 W1235C arithmetic calculation is out of range: %O 算術演算の値が値域を超えています。: %O [ 説明 ] 算術演算において , 演算結果の値が値域を超えました。定数演算を見直してくださ い。 W1236C invalid type combination of `%T' and `%T': %O `%T' と `%T' は , 誤った型の組合わせです。: %O [ 説明 ] 演算のオペランドの型の組み合わせに誤りがあります。 invalid type combination of `%T' and `%T': integral type required: %O W1237C `%T' と `%T' は , 誤った型の組合わせです。整数型が必要です。: %O [ 説明 ] 演算のオペランドの型の組み合わせに誤りがあります。 invalid type combination of `%T' and `%T': arithmetic type required: %O W1238C `%T' と `%T' は , 誤った型の組合わせです。算術型が必要です。: %O [ 説明 ] 演算のオペランドの型の組み合わせに誤りがあります。 invalid type combination of `%T' and `%T': void type required: %O W1239C `%T' と `%T' は , 誤った型の組合わせです。void 型が必要です。: %O [ 説明 ] 演算のオペランドの型の組み合わせに誤りがあります。 266 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e S u p p o r t M a n u a l invalid type combination of `%T' and `%T': compatible types required: %O W1240C `%T' と `%T' は , 誤った型の組合わせです。型互換のある型が必要 です。: %O [ 説明 ] 演算のオペランドの型の組み合わせに誤りがあります。 W1241C unknown escape sequence `\\%o' 拡張表記 `\\%o' は認識されません。 [ 説明 ] `\' の直後に拡張表記の仕様に規定されていない文字が記述されています。 `\' がなかったものとして処理を続行します。 W1242C return address of local variable ローカル変数のアドレスが返却されました。 [ 説明 ] ローカル変数はスタック領域に獲得されるため , アドレスを返却しても呼び出し元 で正しい値を参照できる保証がありません。呼び出し元でアドレス値を参照したい 場合には , アドレス値を格納する領域のアドレスを引数で渡し , その領域に対して 返却するアドレス値を設定してください。 W1243C return address of parameter 仮引数変数のアドレスが返却されました。 [ 説明 ] 仮引数はスタック領域に獲得されるため , アドレスを返却しても呼び出し元で正し い値を参照できる保証がありません。呼び出し元でアドレス値を参照したい場合に は , アドレス値を格納する領域のアドレスを引数で渡し , その領域に対して返却す るアドレス値を設定してください。 W1244C builtin function `%D' is redefined 組込み関数 `%D' が再定義されています。 [ 説明 ] 組込み関数は処理系内部で用途が決められている関数であり , 復帰値の型と引数の 型はすでに決められています。組込み関数の再定義は行わないでください。 W1245C multiple `__interrupt' specified 複数の `__interrupt' で修飾されています。 [ 説明 ] シンボルまたはポインタに作用する __interrupt が複数記述されています。 __interrupt の作用を単一化して処理を続行します。 July 31, 2015, CM42-00328-9 267 付録 付録 E エラーメッセージ一覧 So ft war e W1246C S up po r t M a nu al multiple `__subinterrupt' specified 複数の `__subinterrupt' で修飾されています。 [ 説明 ] シンボルまたはポインタに作用する __subinterrupt が複数記述されています。 __subinterrupt の作用を単一化して処理を続行します。 W1247C multiple `__io' specified 複数の `__io' で修飾されています。 [ 説明 ] シンボルまたはポインタに作用する __io が複数記述されています。 __io の作用を単一化して処理を続行します。 W1248C typedefed type already qualified with `__interrupt' 型定義の型はすでに __interrupt 修飾されています。 [ 説明 ] 型定義名の宣言で指定された __interrupt が , 型定義名と共に使用されています。 __interrupt の作用を単一化して処理を続行します。 W1249C typedefed type already qualified with `__subinterrupt' 型定義の型はすでに __subinterrupt 修飾されています。 [ 説明 ] 型定義名の宣言で指定された __subinterrupt が , 型定義名と共に使用されています。 __subinterrupt の作用を単一化して処理を続行します。 W1250C typedefed type already qualified with `__io' 型定義の型はすでに __io 修飾されています。 [ 説明 ] 型定義名の宣言で指定された __io が , 型定義名と共に使用されています。 __io の作用を単一化して処理を続行します。 W1251C __interrupt or __subinterrupt do not operate on function declarator __interrupt または __subinterrupt が関数宣言子に作用していません。 [ 説明 ] __interrupt および __subinterrupt は関数宣言子にのみ作用する型修飾子です。型修飾 子の指定を見直してください。 __interrupt または __subinterrupt が指定されなかったものとして処理を続行します。 268 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1252C S u p p o r t M a n u a l subinterrupt function does not called interrupt function __subinterrupt 関数が割込み処理関数から呼び出されていません。 [ 説明 ] __subinterrupt 関数が割込み処理関数から呼び出されていません。 W1253C __io do not operate on external variable __io が外部参照変数に作用していません。 [ 説明 ] __io は外部参照変数のみにしか作用できません。 [ 備考 ] このメッセージは使用されていません。 W1254C __io operate on function declarator __io が関数宣言子に作用しています。 [ 説明 ] __io は関数宣言子に作用させられません。型修飾子の指定を見直してください。 __io が指定されなかったものとして処理を続行します。 W1255C __io operate struct or union member __io が構造体または共用体メンバに作用しています。 [ 説明 ] __io が効果があるのは変数に作用する場合のみです。構造体または共用体の一部の メンバのみを __io 修飾することはできません。 __io が指定されなかったものとして処理を続行します。 W1256C __interrupt is specified __interrupt が指定されました。 [ 説明 ] __interrupt は拡張仕様です。 W1257C __subinterrupt is specified __subinterrupt が指定されました。 [ 説明 ] __subinterrupt は拡張仕様です。 W1258C __io is specified __io が指定されました。 [ 説明 ] __io は拡張仕様です。 July 31, 2015, CM42-00328-9 269 付録 付録 E エラーメッセージ一覧 So ft war e W1259C S up po r t M a nu al constant out of range of `register-constant' レジスタ数より大きな定数が指定されました。 [ 説明 ] __regload および __regstore の第 1 引数に指定されている整数定数がレジスタ数より 大きい値です。 W1260C declaration with obsolete modified typedef type 旧い形式で宣言されています。 [ 説明 ] 旧い形式で typedef 宣言されています。 [ 備考 ] このメッセージは使用されていません。 W1261C parameter type of function definition mismatch prototype: `%D' 関数の仮引数宣言が関数原型宣言と適合していません。: `%D' [ 説明 ] 関数定義に仮引数宣言が記述されていないにもかかわらず , 関数原形宣言に void 型 以外が指定されています。引数の指定を見直してください。 function `%D' is defined here but it is builtin symbol W1262C 関数 `%D' はここで再定義されています。ただし , 組込みのシンボル です。 [ 説明 ] 組込み関数として登録されている関数が定義されています。関数名に誤りがないか 確認してください。 plain `char' type value used as subscript W1263C 明示的に signed, unsigned の指定のない `char' 型変数が添字として使 われました。 [ 説明 ] 配列の添字に単なる char 型を持つ変数が指定されました。単なる char 型の扱いは 処理系およびオプションの指定によって変わるため注意してください。 W1264C switch clause without `default' switch 節に , `default' がありません。 [ 説明 ] switch 文内に default ラベルが指定されませんでした。case ラベルに誤りがないかを 確認してください。 270 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1265C S u p p o r t M a n u a l pointer type required for argument: %D 引数に対して , ポインタ型が必要です。: %D [ 説明 ] format 文字列を指定する引数がポインタ型をもっていません。引数のチェックを行 いません。 W1266C no struct members have name 構造体メンバの名前がありません。 [ 説明 ] 構造体のすべてのメンバに名前がありません。少なくとも 1 つは名前を指定する必 要があります。 W1267C no union members have name 共用体メンバの名前がありません。 [ 説明 ] 共用体のすべてのメンバに名前がありません。少なくとも 1 つは名前を指定する必 要があります。 W1268C shift count %X is negative: %O シフト値 %X が負の値です。: %O" [ 説明 ] シフト演算のシフト値に指定されている整数定数が負の値をもっています。正しく シフトさせることができません。 W1269C shift count %X is too large for `%T': %O シフト値 %X は , `%T' にとって大き過ぎます。: %O [ 説明 ] シフト演算のシフト値に指定されている整数定数がシフト対象の型の大きさより 大きい値が指定されています。 W1270C size of member `%D' is zero メンバ `%D' の大きさがゼロです。 [ 説明 ] メンバの大きさは正の数である必要があります。 W1271C `%T' is used `%T' が使用されています。 [ 説明 ] int 型 , signed int 型または unsigned int 型が使用されています。int の大きさはシステ ムによって異なるため , short あるいは long をともに指定することをお薦めします。 July 31, 2015, CM42-00328-9 271 付録 付録 E エラーメッセージ一覧 So ft war e W1272C S up po r t M a nu al `%T' is used for declaration `%D' `%T' が `%D' の宣言に使用されています。 [ 説明 ] int 型または unsigned int 型が宣言に使用されています。int の大きさはシステムに よって異なるため , short あるいは long をともに指定することをお薦めします。 W1273C comparison between pointer and constant: %O ポインタと定数の比較です。: %O [ 説明 ] 比較演算においてポインタ型と整数定数が比較されています。比較演算の一方のオ ペランドがポインタ型の場合にはもう一方のオペランドと型が適合している必要 があります。 comparison between NULL and address of data object or function: %O W1274C データオブジェクトまたは関数のアドレスと NULL との比較です。 : %O [ 説明 ] データオブジェクトまたは関数のアドレスと NULL ポインタ定数との比較です。 データオブジェクトまたは関数のアドレスはNULLになることはないので結果の値 は翻訳時に確定します。 W1275C assignment from `%T' to `%T' `%T' から `%T' に代入をしています。 [ 説明 ] int 型または unsigned int 型への代入を行っています。int の大きさはシステムによっ て異なるため , short あるいは long をともに指定することをお薦めします。 W1276C cast expression cannot be lvalue 左辺値としてキャスト式が指定されました。 [ 説明 ] ANSI 規格ではキャスト式は左辺値 ( 代入の左辺に許される式 ) ではありません。文 脈上の問題がなければ , 右辺を左辺の型にキャストするようにしてください。 size of casting type is wider: type conversion from `%T' to `%T' W1277C キャストする型のサイズがより広い幅を持っています。`%T' から `%T' への変換です。 [ 説明 ] キャストする型がキャスト演算のオペランドより広い幅をもっています。ポインタ の値が正しく保持されない可能性があります。 272 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e S u p p o r t M a n u a l size of casting type is narrower: type conversion from `%T' to `%T' W1278C キャストする型のサイズがより狭い幅を持っています。`%T' から `%T' への変換です。" [ 説明 ] キャストする型がキャスト演算のオペランドより狭い幅をもっています。ポインタ の値が正しく保持されない可能性があります。 W1279C `long double' type specifier used for `%D' `%D' に対して , `long double' が使われています。 [ 説明 ] long double 型が使用されています。 [ 備考 ] このメッセージは使用されていません。 W1280C `long double' used: %O `long double' が使われています。: %O [ 説明 ] long double 型が使用されています。 [ 備考 ] このメッセージは使用されていません。 W1281C comparison between pointers: %O ポインタ間の比較です。: %O [ 説明 ] ポインタ間の比較です。 [ 備考 ] このメッセージは使用されていません。 misalign declaration of `double'/`long double' struct/union member: `%D' W1282C メンバの double または long double のメンバの境界調整値が異なり ます。: `%D' [ 説明 ] メンバの double または long double のメンバの境界調整値が異なります。 [ 備考 ] このメッセージは使用されていません。 July 31, 2015, CM42-00328-9 273 付録 付録 E エラーメッセージ一覧 So ft war e S up po r t M a nu al layout of bit-field depends on application binary interface: `%D' W1283C ビットフィールドのレイアウトは , アプリケーションバイナリイン タフェース依存です。: `%D' [ 説明 ] ビットフィールドのレイアウトは , アプリケーションバイナリインタフェース依存 です。 [ 備考 ] このメッセージは使用されていません。 bit-field declaration without signed and unsigned: `%D' W1284C ビットフィールドが , signed, unsigned の指定なく宣言されています。 : `%D' [ 説明 ] ビットフィールドが , signed, unsigned の指定なく宣言されています。 [ 備考 ] このメッセージは使用されていません。 W1285C bit-field declaration with enumerate type: `%D' 列挙型のビットフィールドが宣言されています。: `%D' [ 説明 ] 列挙型のビットフィールドが宣言されています。 [ 備考 ] このメッセージは使用されていません。 W1286C useless type qualifier of `%T' `%T' の型修飾子は , 意味がありません。 [ 説明 ] void 型とともに指定されている型修飾子は意味がありません。型修飾子がなかった ものとして処理を続行します。 W1287C invalid void type parameter declaration: `%D' void 型の誤った仮引数宣言が指定されました。: `%D' [ 説明 ] 仮引数宣言に void 型は指定できません。 [ 備考 ] このメッセージは使用されていません。 274 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1288C S u p p o r t M a n u a l too large object `%D' `%D' のサイズが大き過ぎます。 [ 説明 ] サイズが大きすぎます。 [ 備考 ] このメッセージは使用されていません。 W1289C `...' in expression violates ANSI C specification `...' は , 式中では使うことができません。 [ 説明 ] `...' は関数宣言の引数部分でのみ使用できます。式を見直してください。 W1290C too long multi-character character constant 多バイト文字定数のキャラクタの指定が多過ぎます。 [ 説明 ] ワードサイズで表現できないほど多くの文字が文字定数として記述されています。 先頭からワードサイズ分までを有効にして処理を続行します。 W1291C multi-character character constant specified 多バイト文字定数です。 [ 説明 ] 文字定数内に 2 文字以上の文字定数が記述されています。 指定された文字定数を有効にして処理を続行します。 W1292C directive line syntax error: newline expected 指令行に誤りがあります。改行が必要です。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。その前処理指令の終わりに不当な 文字があります。前処理指令の直後は改行文字でなければなりません。 不当な文字を無視して処理を続行します。 W1293C #pragma: unknown `%s' #pragma: `%s' は認識できません。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #pragma 指令が ありますが , 指摘された #pragma は当処理系では未知の pragma です。 前処理指令を無視して処理を続行します。 July 31, 2015, CM42-00328-9 275 付録 付録 E エラーメッセージ一覧 So ft war e W1294C S up po r t M a nu al #pragma int_to_unsigned: syntax error: identifier is expected #pragma int_to_unsigned: 識別子を記述してください。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #pragma int_to_unsigned がありますが , pragma 引数として識別子が必要です。 #pragma 指令を無視して処理を続行します。 W1295C #pragma int_to_unsigned: type of identifier have to be function type returning unsigned int #pragma int_to_unsigned: 識別子の型が `unsigned int' を返す関数型で なければなりません。 [ 説明 ] #pragma int_to_unsigned で指定された識別子が unsigned int 型を返す関数ではありま せん。 pragma の効果はありません。 W1296C #pragma optimized: optimization option is not specified #pragma optimized: 最適化オプションが指定されていません。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの1つに#pragma optimized がありますが , この pragma は最適化オプションが必要です。 #pragma 指令を無視して処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1297C #pragma optimized: on or off are expected #pragma optimized: オン又はオフを記述してください。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの1つに#pragma optimized がありますが , pragma 引数は識別子でなければなりません。 #pragma 指令を無視して処理を続行します。 [ 備考 ] このメッセージは使用されていません。 276 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1298C S u p p o r t M a n u a l #pragma: unknown switch #pragma: 認識できないオペランドです。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの1つに#pragma optimized がありますが , pragma 引数は `on', `off' または `default' でなければなりません。 #pragma 指令を無視して処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1299C #pragma: invalid switch specified #pragma: 誤ったオペランドです。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの1つに#pragma optimized がありますが , pragma 引数は意味を持ちません。 #pragma 指令を無視して処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1300C #pragma: optimization specifier required #pragma: 最適化指定が必要です。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。その中に #pragma global, #pragma statement, #pragma loop および #pragma procedure がありますが , この pragma は最適 化オプションが必要です。 #pragma 指令を無視して処理を続行します。 [ 備考 ] このメッセージは使用されていません。 W1301C #pragma ident: syntax error: string constant is expected #pragma ident: 文字列リテラルを記述してください。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #pragma ident が ありますが , この pragma は引数として文字列リテラルが必要です。 #pragma 指令を無視して処理を続行します。 July 31, 2015, CM42-00328-9 277 付録 付録 E エラーメッセージ一覧 So ft war e W1302C S up po r t M a nu al #line: syntax error: digit required #line: 数字を記述してください。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #line がありま すが , この前処理指令は行番号を表す数字が必要です。 #line 指令を無視して処理を続行します。 W1303C #ident: syntax error: string constant expected #ident: 文字列リテラルを記述してください。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #ident がありま すが , この前処理指令は文字列リテラルが必要です。 #ident 指令を無視して処理を続行します。 W1304C #pragma weak: syntax error: `=' is expected #pragma weak: `=' を記述してください。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #pragma weak が ありますが , この pragma に識別子を二つ指定するときには `=' で結ばなければなり ません。 #pragma 指令を無視して処理を続行します。 W1305C #pragma weak: syntax error: identifier is expected #pragma weak: 識別子を記述してください。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #pragma weak が ありますが , この pragma には識別子を 1 つ以上指定する必要があります。 #pragma 指令を無視して処理を続行します。 W1306C #pragma echo: syntax error: string constant is expected #pragma echo: 文字列リテラルを記述してください。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #pragma echo が ありますが , この pragma には引数に文字列を指定する必要があります。 #pragma 指令がなかったものとして処理を続行します。 278 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1307C S u p p o r t M a n u a l #assert directive used #assert 指令が使われました。 [ 説明 ] #assert 指令が使われました。 [ 備考 ] このメッセージは使用されていません。 W1308C #error directive used #error 指令が使われました。 [ 説明 ] #error 指令が使われました。 W1309C #pragma locale: syntax error: string constant is expected #pragma locale: 文字列リテラルを記述してください。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #pragma locale がありますが , この pragma には引数に文字列を指定する必要があります。 #pragma 指令を無視して処理を続行します。 W1310C #sccs directive used #sccs 指令が記述されました。 [ 説明 ] #sccs 指令が記述されました。 W1311C #ident directive used #ident が使用されています。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #ident がありま すが , この前処理指令は旧い仕様のため #pragma ident に置き換えることをお薦めし ます。 そのまま処理を続行します。 July 31, 2015, CM42-00328-9 279 付録 付録 E エラーメッセージ一覧 So ft war e W1312C S up po r t M a nu al #pragma: unknown pragma #pragma: 認識できない pragma です。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #pragma があり ますが , pragma 指令名が指定されていません。 #pragma 指令を無視して処理を続行します。 W1313C #pragma: syntax error: `(' expected #pragma: 文法エラー : `(' が必要です。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #pragma unknown_control_flow がありますが , 直後に字句を持つ場合には `(' でなければなり ません。 #pragma 指令がなかったものとして処理を続行します。 W1314C #pragma: syntax error: `)' or `,' expected #pragma: 文法エラー : `)' または `,' が必要です。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。そのうちの 1 つに #pragma unknown_control_flow がありますが , 識別子の後ろは `,' または `)' でなければなりま せん。 #pragma 指令がなかったものとして処理を続行します。 W1315C #pragma: identifier expected #pragma: 識別子が必要です。 [ 説明 ] 通常 , 前処理指令はプリプロセッサで処理されますが , 処理系の都合上コンパイラ 本体で処理される前処理指令が幾つかあります。その中に #pragma 指令があります が , pragma 指令名の直後に識別子が必要です。 #pragma 指令を無視して処理を続行します。 W1316C #pragma: string constant expected #pragma: 文字列リテラルが必要です。 [ 説明 ] #pragma の引数に文字列リテラルが必要です。 [ 備考 ] このメッセージは使用されていません。 280 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1317C S u p p o r t M a n u a l #pragma: unknown specifier #pragma: 誤った指定です。 [ 説明 ] #pragma の引数に誤りがあります。 [ 備考 ] このメッセージは使用されていません。 W1318C #pragma %s: unknown optimization specifier #pragma %s: 誤った指定です。 [ 説明 ] #pragma の引数に誤りがあります。 [ 備考 ] このメッセージは使用されていません。 W1319C #pragma %s: invalid argument #pragma %s: 引数が誤っています。 [ 説明 ] #pragma の引数に誤りがあります。 [ 備考 ] このメッセージは使用されていません。 W1320C #pragma %s: identifier expected #pragma %s: 識別子が必要です。" [ 説明 ] #pragma の引数に識別子が必要です。 [ 備考 ] このメッセージは使用されていません。 W1321C #pragma %s: invalid token: identifier expected #pragma %s: 誤ったトークンです。識別子が必要です。 [ 説明 ] #pragma の引数に識別子が必要です。 [ 備考 ] このメッセージは使用されていません。 W1322C #pragma %s: invalid token: too many parameters #pragma %s: 誤ったトークンです。引数が多過ぎます。 [ 説明 ] #pragma の引数が多すぎます。 July 31, 2015, CM42-00328-9 281 付録 付録 E エラーメッセージ一覧 So ft war e W1323C S up po r t M a nu al #pragma %s: integer constant expected #pragma %s: 整数定数が必要です。 [ 説明 ] #pragma の引数に整数定数が必要です。 [ 備考 ] このメッセージは使用されていません。 W1324C #pragma %s: invalid token: integer constant expected #pragma %s: 誤ったトークンです。整数定数が必要です。 [ 説明 ] #pragma の引数に整数定数が必要です。 [ 備考 ] このメッセージは使用されていません。 W1325C #pragma %s: invalid optimization specifier #pragma %s: 誤った最適化指定です。 [ 説明 ] #pragma による最適化指定に誤りがあります。 [ 備考 ] このメッセージは使用されていません。 W1326C #pragma section: syntax error: `=' is expected #pragma section: `=' を記述してください。 [ 説明 ] #pragma section 指令の attr パラメータおよび locate パラメータの直後に `=' が必要で す。 #pragma section がなかったものとして処理を続行します。 W1327C #pragma section: invalid hexadecimal constant #pragma section: 不当な 16 進定数があります。 [ 説明 ] #pragma section の locate パラメータの設定値に誤りがあります。 [ 備考 ] このメッセージは使用されていません。 282 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1328C S u p p o r t M a n u a l #pragma section: invalid sectionname specified #pragma section: 誤ったオペランドです。 [ 説明 ] #pragma section のセクション名に未知の識別子が指定されています。 #pragma section がなかったものとして処理を続行します。 W1329C #pragma section: invalid sectionattr specified #pragma section: 誤ったオペランドです。 [ 説明 ] #pragma section の attr パラメータの属性を表す識別子に誤りがあります。 #pragma section がなかったものとして処理を続行します。 W1330C #pragma asm: syntax error: unknown specifier #pragma asm: 誤った指定です。 [ 説明 ] #pragma asm の後ろに余分な文字が指定されています。 [ 備考 ] このメッセージは使用されていません。 W1331C #pragma section: too long identifier is specified #pragma section: 長すぎる識別子です。 [ 説明 ] #pragma section の更新セクション名が長すぎます。 先頭から 255 文字までを有効にして処理を続行します。 W1332C #pragma asm: syntax error: `#pragma endasm' is not specified #pragma asm: `#pragma endasm' が指定されていません。 [ 説明 ] #pragma endasm が指定されていません。 [ 備考 ] このメッセージは使用されていません。 W1333C #pragma section: syntax error: identifier is expected #pragma section: 識別子を指定してください。 [ 説明 ] #pragma section のセクション名を表す識別子が記述されていません。 #pragma section がなかったものとして処理を続行します。 July 31, 2015, CM42-00328-9 283 付録 付録 E エラーメッセージ一覧 So ft war e W1334C S up po r t M a nu al #pragma inline: syntax error: identifier is expected #pragma inline: 識別子を指定してください。 [ 説明 ] #pragma inline の関数名を表す識別子が記述されていません。 #pragma inline がなかったものとして処理を続行します。 W1335C #pragma section: syntax error: unknown specifier #pragma section: 誤った指定です。 [ 説明 ] #pragma section のパラメータにセクション名 , 属性および配置アドレス以外が記述 されています。 #pragma section がなかったものとして処理を続行します。 W1336C #pragma %s: syntax error: identifier is expected #pragma %s: 識別子を指定してください。 [ 説明 ] #pragma intvect または #pragma defvect に割込み関数名が記述されていません。 #pragma intvect または #pragma defvect がなかったものとして処理を続行します。 W1337C #pragma intvect: invalid decimal constant #pragma intvect: 不当な 10 進定数があります。 [ 説明 ] #pragma intvect の割込み番号に誤りがあります。 [ 備考 ] このメッセージは使用されていません。 W1338C #pragma %s: invalid type of interrupt function `%s' #pragma %s: 割込み関数 `%s' の型が不当です。 [ 説明 ] #pragma intvect または #pragma defvect に指定された関数の型が __interrupt (*)(void) 型ではありません。 #pragma intvect または #pragma defvect の効果がなかったものとして処理を続行しま す。 284 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1339C S u p p o r t M a n u a l #pragma intvect: vectornumber is not integral constant expression #pragma intvect: ベクタ番号が整数定数ではありません。 [ 説明 ] #pragma intvect の割込み番号に誤りがあります。 [ 備考 ] このメッセージは使用されていません。 W1340C #pragma intvect: syntax error: vectornumber is expected #pragma intvect: ベクタ番号を指定してください。 [ 説明 ] #pragma intvect にベクタ番号が指定されていません。 #pragma intvect がなかったものとして処理を続行します。 W1341C #pragma %s: interrupt function `%s' is not found #pragma %s: 割込み関数 `%s' が見つかりませんでした。 [ 説明 ] #pragma intvect または #pragma defvect に指定された関数が見つかりません。 #pragma intvect または #pragma defvect の効果がなかったものとして処理を続行しま す。 W1342C newline is expected # 行番号 の行の最後に不要な文字があります。 [ 説明 ] 記述された文字を無視して処理を続行します。 W1343C cannot open compiler message file \"%s\" コンパイラのメッセージファイルがオープンできません。 [ 説明 ] メッセージファイルを使用せず , コンパイラに組み込まれたメッセージを使用しま す。 W1344C cannot open compiler message file コンパイラのメッセージファイルがオープンできません。 [ 説明 ] メッセージファイルを使用せず , コンパイラに組み込まれたメッセージを使用しま す。 July 31, 2015, CM42-00328-9 285 付録 付録 E エラーメッセージ一覧 So ft war e W1345C S up po r t M a nu al %Z: invalid lvalue %Z: 不当な左辺値です。 [ 説明 ] ++ 演算子および -- 演算子がキャスト演算の結果に作用しています。キャスト演算 の結果は左辺値ではないため , ++ 演算および -- 演算は適用できません。 キャストがなかったものとして処理を続行します。 W1346C #pragma defvect: duplicate defvect function #pragma defvect: 割込み関数が二重に定義されています。 [ 説明 ] #pragma intvect で指定された関数が #pragma defvect で再指定されました。 #pragma defvect がなかったものとして処理を続行します。 W1347C type `%T' defined as function return type: function `%D' 型 `%T' が関数 `%D' の戻り値の型として定義されました。 [ 説明 ] 関数の復帰値に指定された構造体または共用体型がタグ宣言を伴っています。 そのまま処理を続行します。 W1349C %Z incompatible pointer types: expected `%T' actual `%T' in function `%D' %Z: 不適合なポインタが指定されています。`%T' と `%T' の指定で す。: 関数 `%D' [ 説明 ] 関数の復帰値の型と return 文に指定された式の型が適合しません。復帰値の型に合 うように return 文の式を見直してください。 W1350C %Z incompatible pointer types: expected `%T' actual `%T': argument %d of `%D' %Z: 不適合なポインタが指定されています。`%T' と `%T' の指定で す。: 第 %d 引数 : 関数 `%D' [ 説明 ] 関数呼び出しの実引数の型と宣言時の仮引数の型が適合しません。仮引数の型に合 うように実引数を見直してください。 %Z incompatible pointer types: expected `%T' actual `%T': argument %d W1351C %Z: 不適合なポインタが指定されています。`%T' と `%T' の指定で す。: 第 %d 引数 [ 説明 ] 関数呼び出しの実引数の型と宣言時の仮引数の型が適合しません。仮引数の型に合 うように実引数を見直してください。 286 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e S u p p o r t M a n u a l %Z incompatible pointer types from `%T' to `%T': `%D' W1352C %Z: 不適合なポインタが指定されています。`%T' と `%T' の指定で す。: `%D' [ 説明 ] 初期化の対象となる型と初期値の型が適合しません。初期化の対象となる型に合う ように初期値を見直してください。 %Z incompatible pointer types from `%T' to `%T': %O W1353C %Z: 不適合なポインタが指定されています。`%T' と `%T' の指定で す。: %O [ 説明 ] 代入の左辺の型と右辺の型が適合しません。左辺の型に合うように右辺の型を見直 してください。 %Z: constant out of range for `%T' bit-field: its width %d W1354C %Z: 定数が , ビットフィールド ( 型 `%T' 幅 %d) の大きさの値域を超 えています。 [ 説明 ] 初期値に記述された定数が , ビットフィールドの大きさの値域を超えています。定 数値を見直してください。 W1355C multiple `__far' specified 複数の `__far' で修飾されています。 [ 説明 ] シンボルまたはポインタに作用する __far が複数記述されています。 __far の作用を単一化して処理を続行します。 W1356C multiple `__near' specified 複数の `__near' で修飾されています。 [ 説明 ] シンボルまたはポインタに作用する __near が複数記述されています。 __near の作用を単一化して処理を続行します。 W1357C multiple `__direct' specified 複数の `__direct' で修飾されています。 [ 説明 ] シンボルまたはポインタに作用する __direct が複数記述されています。 __direct の作用を単一化して処理を続行します。 July 31, 2015, CM42-00328-9 287 付録 付録 E エラーメッセージ一覧 So ft war e W1358C S up po r t M a nu al typedefed type already qualified with `__far' 型定義の型はすでに `__far' で修飾されています。 [ 説明 ] 型定義名の宣言で指定された __far が , 型定義名と共に使用されています。 __far の作用を単一化して処理を続行します。 W1359C typedefed type already qualified with `__near' 型定義の型はすでに `__near' で修飾されています。 [ 説明 ] 型定義名の宣言で指定された __near が , 型定義名と共に使用されています。 __near の作用を単一化して処理を続行します。 W1360C typedefed type already qualified with `__direct' 型定義の型はすでに `__direct' で修飾されています。 [ 説明 ] 型定義名の宣言で指定された __direct が , 型定義名と共に使用されています。 __direct の作用を単一化して処理を続行します。 W1361C __near and __far can not be specified at the same time __near と __far を同時に指定することはできません。 [ 説明 ] シンボルまたはポインタに作用する __far および __near はいずれか一方しか指定で きません。 あとから指定されたものを無効にして処理を続行します。 W1362C __far operate struct or union member __far が構造体または共用体メンバに作用しています。 [ 説明 ] __far は変数およびポインタの特性を決定するために使用されます。構造体および 共用体メンバには作用できません。 __far の指定を無効にして処理を続行します。 W1363C __near operate struct or union member __near が構造体または共用体メンバに作用しています。 [ 説明 ] __near は変数およびポインタの特性を決定するために使用されます。構造体および 共用体メンバには作用できません。 __near の指定を無効にして処理を続行します。 288 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1364C S u p p o r t M a n u a l __far is specified __far が指定されました。 [ 説明 ] __far は拡張仕様です。 W1365C __near is specified __near が指定されました。 [ 説明 ] __near は拡張仕様です。 W1366C __direct is specified __direct が指定されました。 [ 説明 ] __direct は拡張仕様です。 W1367C __direct operate on function declarator __direct が関数宣言子に作用しています。 [ 説明 ] __direct は関数宣言子に作用させられません。型修飾子の指定を見直してください。 __direct が指定されなかったものとして処理を続行します。 W1368C __direct operate struct or union member __direct が構造体または共用体メンバに作用しています。 [ 説明 ] __direct が効果があるのは変数に作用する場合のみです。構造体または共用体の一 部のメンバのみを __direct 修飾することはできません。 __direct が指定されなかったものとして処理を続行します。 W1369C __io and __direct can not be specified at the same time __io と __direct を同時に指定することはできません。 [ 説明 ] __io および __direct は変数の割りつけられる領域を表す型修飾子です。いずれか一 方しか指定できません。 あとから指定されたものを無効にして処理を続行します。 July 31, 2015, CM42-00328-9 289 付録 付録 E エラーメッセージ一覧 So ft war e W1370C S up po r t M a nu al %Z: type conversion from `%T' to `%T': `%D' %Z: `%T' から `%T への型変換があります。: `%D' [ 説明 ] ポインタのセグメント情報を付加できないため正しい値を期待できません。初期定 数式内に __near ポインタから __far ポインタへのキャストは記述しないでください。 __far or __near cannot specify to local variable W1371C __far または __near はローカル変数に対して指定することはできま せん。 [ 説明 ] ローカル変数はすべて同一のスタック領域に割りつけられるため , __far および __near 型修飾は意味を持ちません。 __far または __near が指定されなかったものとして処理を続行します。 W1372C first argument is not integral constant expression 第 1 引数が整数定数でありません。 [ 説明 ] __regload および __regstore の第 1 引数が整数定数でありません。 [ 備考 ] このメッセージは使用されていません。 W1373C indirect reference function call specified 間接参照関数呼び出しが指定されています。 [ 説明 ] 関数へのポインタを使って関数呼び出しを行っています。 W1374C #pragma %s: already exist #pragma %s: 既に存在しています。 [ 説明 ] 指摘された #pragma は既に存在しています。ネストはできません。 指摘された #pragma がなかったものとして処理を続行します。 W1375C `#pragma %s' expected `#pragma %s' が必要です。 [ 説明 ] 指摘された #pragma が存在していません。 翻訳単位の終わりに記述されたものとして処理を続行します。 290 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1376C S u p p o r t M a n u a l #pragma intvect: invalid constant for vector number #pragma intvect: ベクタ番号が正しくありません。 [ 説明 ] #pragma intvect に指定されたベクタ番号が正しい数値ではありません。 #pragma intvect がなかったものとして処理を続行します。 W1377C #pragma intvect: invalid constant for mode number #pragma intvect: モード値が正しくありません。 [ 説明 ] #pragma intvect に指定されたモード値が正しい数値ではありません。 モード値の指定を無効にして処理を続行します。 W1378C #pragma intvect: mode number is out of range #pragma intvect: モード値が範囲を越えています。 [ 説明 ] #pragma intvect に指定されたモード値が 255 を超えています。 モード値の指定を無効にして処理を続行します。 #pragma intvect: difference mode number for existed same vector number W1379C #pragma intvect: 既にある同じベクタ番号でモード値が異なっていま す。 [ 説明 ] 既に同じ関数名と同じベクタ番号を持った #pragma intvect が指定されていますが , モード値が一致しません。 #pragma intvect がなかったものとして処理を続行します。 W1380C #pragma section: invalid constant for allocated address #pragma section: 配置アドレスが正しくありません。 [ 説明 ] #pragma section の locate パラメータに指定されている配置アドレスが正しい数値で はありません。 #pragma section がなかったものとして処理を続行します。 W1381C __nosavereg is specified __nosavereg が指定されました。 [ 説明 ] __nosavereg は拡張仕様です。 July 31, 2015, CM42-00328-9 291 付録 付録 E エラーメッセージ一覧 So ft war e W1382C S up po r t M a nu al multiple `__nosavereg' specified 複数の `__nosavereg' で修飾されています。 [ 説明 ] シンボルまたはポインタに作用する __nosavereg が複数記述されています。 __nosavereg の作用を単一化して処理を続行します。 W1383C typedefed type already qualified with `__nosavereg' 型定義の型はすでに `__nosavereg' で修飾されています。 [ 説明 ] 型定義名の宣言で指定された __nosavereg が , 型定義名と共に使用されています。 __nosavereg の作用を単一化して処理を続行します。 W1384C __nosavereg not operate on function declarator __nosavereg が関数宣言子に作用していません。 [ 説明 ] __nosavereg は関数宣言子にのみ作用する型修飾子です。型修飾子の指定を見直して ください。 __nosavereg が指定されなかったものとして処理を続行します。 W1385C cannot initialize variable with `__io' __io 修飾された変数は初期化できません。 [ 説明 ] __io 修飾された変数が割りつけられる領域は初期値を設定できません。 初期値の指定を無効にして処理を続行します。 different size: argument type `%T' with prototype `%T': argument %d W1386C プロトタイプによる異なるサイズへの変換:`%T' から `%T' への変 換:第 %d 引数 [ 説明 ] プロトタイプ引数に指定された型と実引数に指定された型の幅が一致しません。プ ロトタイプ引数の型に合わせます。 W1387C different unsignedness: argument type `%T' with prototype `%T': argument %d プロトタイプによる異なる符合型への変換:`%T' から `%T' への変 換:第 %d 引数 [ 説明 ] プロトタイプ引数に指定された型と実引数に指定された型の符号が一致しません。 プロトタイプ引数の型に合わせます。 292 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e W1388C S u p p o r t M a n u a l Ignore since the 255th character of symbol `%s' 外部シンボル `%s' の 255 文字目以降を無視します。 [ 説明 ] 外部シンボル名が長すぎるので , 255 文字目以降は無視します。 W1389C #pragma intvect: vector number is out of range #pragma intvect: ベクタ番号が範囲を越えています。 [ 説明 ] #pragma intvect に指定されているベクタ番号がシステムで許される範囲を超えてい ます。ベクタ番号の指定がなかったものとして処理を続行します。 W1390C restrict is specified restrict が指定されました。 [ 説明 ] restrict は拡張仕様です。 W1391C multiple `restrict' specified 型定義の型はすでに `restrict' で修飾されています。 [ 説明 ] 型定義名の宣言で指定された restrict が , 型定義名と共に使用されています。restrict の作用を単一化して処理を続行します。 W1392C typedefed type already qualified with `restrict' 型定義の型はすでに `restrict' で修飾されています。 [ 説明 ] 型定義名の宣言で指定された restrict が , 型定義名と共に使用されています。restrict の作用を単一化して処理を続行します。 W1393C %Z: exist data without initial value: `%D' %Z: 初期値が指定されていないデータが存在します。: `%D' [ 説明 ] 構造体メンバおよび配列に初期値が指定されていないデータが存在します。初期値 0 が指定されたものとして処理を続行します。 W1394C #pragma %s: specify 1 or 2 for align value #pragma %s: align 値には 1 または 2 を指定してください。 [ 説明 ] #pragma %s: align 値には 1 または 2 を指定してください。 July 31, 2015, CM42-00328-9 293 付録 付録 E エラーメッセージ一覧 So ft war e E4001C S up po r t M a nu al type of function designator must be function type 関数以外の型が記述されました。 [ 説明 ] 関数呼び出しに対して関数型または関数へのポインタ型以外の型が指定されてい ます。 E4002C pointer or array type are expected ポインタ型か配列型を記述してください。 [ 説明 ] ポインタ参照 (* 演算子 ) に対してポインタ型または配列型以外の型が指定されてい ます。 E4003C pointer to struct/union type required for left operand 構造体または共用体へのポインタを記述してください。 [ 説明 ] 構造体または共用体へのポインタを記述してください。 [ 備考 ] このメッセージは使用されていません。 E4004C struct/union type required for left operand 構造体型または共用体型を記述してください。 [ 説明 ] 構造体型または共用体型を記述してください。 [ 備考 ] このメッセージは使用されていません。 E4005C scalar type required スカラ型を記述してください。 [ 説明 ] ++ 演算子 , -- 演算子および ! 演算子のオペランドにスカラ型 ( 算術型およびポイン タ型 ) 以外の型が指定されています。 E4006C integral type required 整数型を記述してください。 [ 説明 ] 演算子のオペランドに整数型以外の型が指定されています。 294 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4007C S u p p o r t M a n u a l arithmetic type required 算術型を記述してください。 [ 説明 ] 単項 + 演算子および単項 - 演算子のオペランドに算術型 ( 整数型および浮動小数点 型 ) 以外の型が指定されています。 operation and assignment from pointer type to integral type E4008C 加算 / 減算代入演算に誤った型が指定されています。整数型とポイ ンタ型の演算です。 [ 説明 ] 加算代入 (+=) 演算子および減算代入 (-=) 演算子の左辺に整数型が , 右辺にポインタ 型が指定されています。この演算は左辺と右辺を加算または減算した結果を左辺に 代入しますが , 整数型とポインタ型を加算した結果の型はポインタ型となり左辺の 型と適合しません。また , 整数型からポインタ型を減算することはできません。 E4009C unknown size of incomplete type 不完全型です。 [ 説明 ] メンバが宣言されていない構造体 , 共用体または列挙タグを持つ型が指定されてい ます。大きさの情報を取得できません。 E4010C unknown size of array type 配列の大きさがわかりません。 [ 説明 ] 配列の要素に大きさのわからない型が指定されています。配列全体の大きさを決定 できません。 E4011C unknown size of function type 関数の大きさはわかりません。 [ 説明 ] 関数型のサイズを取得しようとしています。関数型の大きさは取得できません。 サイズ 1 であるとして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 July 31, 2015, CM42-00328-9 295 付録 付録 E エラーメッセージ一覧 So ft war e E4012C S up po r t M a nu al unknown size 型の大きさがわかりません。 [ 説明 ] void 型のサイズを取得しようとしています。void 型の大きさは取得できません。 サイズ 1 であるとして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 E4013C invalid null subscript of array type 配列に添字が必要です。 [ 説明 ] 大きさの判らない配列型のサイズを取得しようとしています。 サイズ 0 であるとして処理を続行します。 [ 備考 ] このメッセージは使用されていません。 E4014C invalid variable subscript of array 配列の添字が変数値になっています。 [ 説明 ] 配列の添字に整数定数以外が指定されています。大きさは決定できません。 E4015C invalid label ラベルが不当です。 [ 説明 ] goto 文に正しいラベルが記述されていません。 E4016C undefined label `%D' is used as destination 飛び先に指定されているラベル `%D' が定義されていません。 [ 説明 ] goto 文に指定されているラベルが関数内に存在しません。 E4017C label `%D' redefined ラベル名 `%D' が二重定義されています。 [ 説明 ] 指定されたラベルは既に関数内に存在します。ラベルは関数内でユニークである必 要があります。 296 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4018C S u p p o r t M a n u a l %Z: too many initializers for `%T': `%D' %Z: `%T' に対する初期値が多過ぎます。: `%D' [ 説明 ] 構造体または共用体に対する初期値がメンバの個数より多く指定されています。特 に共用体型の場合 , 初期値は先頭のメンバに対するもの 1 つしか指定できません。 E4019C %Z: incomplete type `%T' specified: `%D' %Z: `%T' は不完全型です。: `%D' [ 説明 ] タグの宣言されていない構造体または共用体に対して初期値を設定しようとして います。 E4020C %Z: invalid array null dimension: `%D' %Z: 大きさの指定がない配列が現れました。: `%D' [ 説明 ] 添字の指定されていない配列型を要素に持つ配列型に対して初期値を設定しよう としています。初期値を持つ配列型に対して添字を省略できるのはシンボルに一番 近い配列宣言子のみです。 E4021C %Z: invalid array variable dimension: `%D' %Z: 大きさが可変な配列が現れました。: `%D' [ 説明 ] 添字に整数定数以外が指定されている配列型を要素に持つ配列型に対して初期値 を設定しようとしています。配列宣言の添字は整数定数である必要があります。 E4022C %Z: invalid initializer: `%D' %Z: 初期値として不当です。: `%D' [ 説明 ] 初期値に関数型は指定できません。 E4023C %Z: invalid initializer for array: `%D' %Z: 配列の初期設定に誤りがあります。: `%D' [ 説明 ] 配列の初期設定の記述方法に誤りがあります。 E4024C %Z: invalid initializer for function `%D' %Z: 関数 `%D' に対して初期設定が不当です。 [ 説明 ] 関数宣言に対して初期値を指定しようとしています。関数は初期化できません。 July 31, 2015, CM42-00328-9 297 付録 付録 E エラーメッセージ一覧 So ft war e E4025C S up po r t M a nu al %Z: invalid initializer for struct/union: `%D' %Z: 構造体または共用体の初期値が不当です。: `%D' [ 説明 ] 構造体または共用体の初期設定の記述方法に誤りがあります。 E4026C %Z: invalid initializer for `%T': `%D' %Z: `%T' に対して誤った初期設定を行なっています。: `%D' [ 説明 ] 構造体または共用体の初期値に適合する型の構造体または共用体を指定する場合 にはシンボルのみが指定されている必要があります。 E4027C %Z: invalid initializer for struct/union %Z: 構造体または共用体の初期値が無効です。 [ 説明 ] 構造体または共用体の初期値に型の適合しない構造体または共用体が指定されて います。 E4028C %Z: too many initializers for array: `%D' %Z: 配列に対して初期値が多過ぎます。: `%D' [ 説明 ] 配列の添字の値に比べて初期値の数が多すぎます。 E4029C %Z: too deeply nested brace: `%D' %Z: 大括弧の入れ子が深過ぎます。: `%D' [ 説明 ] 初期化指定子をくくる大括弧の入れ子が深すぎます。初期化対象の変数の型に合う ように括弧の指定を変更してください。 E4030C %Z: integral constant expression required for bit-field `%D': `%D' %Z: ビットフィールド `%D' に対しては整数定数が必要です。: `%D' [ 説明 ] ビットフィールドの初期値には整数定数しか指定できません。 E4031C %Z: too many initializers for an element: `%D' %Z: 要素に対する初期値が多過ぎます。: `%D' [ 説明 ] 初期値の数が多すぎます。変数や 1 つのメンバに対して初期値は 1 つしか指定でき ません。 298 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4032C S u p p o r t M a n u a l %Z: constant expression is expected for %s: `%D' %Z: %s に対して定数式を記述してください。: `%D' [ 説明 ] 初期化のためのデータは , 定数式に限られます。 E4033C `=' expected before initializer `=' を初期値の前に指定しなければなりません。 [ 説明 ] 初期値の前に複合代入演算子が指定されています。初期化時には単純代入演算子の みが許されます。 E4034C `=' expected before enumerator initializer `=' が列挙子の初期値の前に必要です。 [ 説明 ] 列挙定数の初期値の前に複合代入演算子が指定されています。初期化時には単純代 入演算子のみが許されます。 E4035C `continue' found outside loops `continue' がループの外側で指定されました。 [ 説明 ] continue 文がループの外側に指定されています。continue 文はそれを囲むもっとも 内側のループの一番最後へ分岐することを意味しているため , ループの外側には記 述できません。 E4036C `break' found outside switchs and loops `break' が switch 文の外やループの外側で指定されました。 [ 説明 ] break 文が switch 文またはループの外側に指定されています。break 文はそれを囲む もっとも内側の switch 文またはループを抜けることを意味しているため , switch 文 またはループの外側には記述できません。 E4037C unterminated string literal: `\"' expected 文字列リテラルが終了していません。`\"' が必要です。 [ 説明 ] 文字列リテラルが終了していません。 [ 備考 ] このメッセージは使用されていません。 July 31, 2015, CM42-00328-9 299 付録 付録 E エラーメッセージ一覧 So ft war e E4038C S up po r t M a nu al EOF in comment コメント中でファイルが終りました。 [ 説明 ] コメント中でファイルが終わりました。コメントを終了する */ が記述されていませ ん。 E4039C EOF in string literal 文字列中でファイルが終りました。 [ 説明 ] 文字列の途中でファイルが終わりました。文字列を終了する二重引用符が記述され ていません。 E4040C sorry, internal limitation: quoted character too long コンパイラ内部制限 : クォートされたキャラクタが長過ぎます。 [ 説明 ] 文字定数または文字列リテラル中にある \x による 16 進数字列の長さが当処理系の 制限である 4028 を超えました。 E4041C character constant has no character expression 文字定数中に文字がありません。 [ 説明 ] 文字定数中に文字が記述されていません。 E4042C unterminated character constant: newline in character constant 文字定数中に改行文字があります。 [ 説明 ] 文字定数中に改行文字が記述されました。文字定数を終了する単一引用符が記述さ れていません。 E4043C unterminated character constant: EOF in character constant 文字定数中でファイルが終りました。 [ 説明 ] 文字定数の途中でファイルが終わりました。文字定数を終了する単一引用符が記述 されていません。 E4044C too many postfix characters `%c' for constant 定数に対して接尾語 `%c' が多過ぎます。 [ 説明 ] 数値定数の接尾語の指定に誤りがあります。 300 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4045C S u p p o r t M a n u a l numeric octal constant contains invalid character 8 進定数中に無効な文字があります。 [ 説明 ] 8 進定数中に 8 進数として許されない文字が記述されています。 [ 備考 ] このメッセージは使用されていません。 E4046C binary constant cannot be floating point constant 2 進定数は浮動小数点定数にできません。 [ 説明 ] 0b または 0B で始まる 2 進定数は浮動小数点定数にはできません。 [ 備考 ] このメッセージは使用されていません。 E4047C invalid postfix character `%c' after integer constant 整数の後ろに不当な接尾語 `%c' があります。 [ 説明 ] 整数定数の直後に接尾語として認識されないアルファベットが記述されています。 E4048C invalid postfix character `%c' for radix %d 不当な接尾語 `%c' が , %d 進数に対して指定されています。 [ 説明 ] 整数定数の直後に接尾語として認識されないアルファベット以外の文字が記述さ れています。 E4049C no digits of floating exponent part 浮動小数点数の指数部に数字がありません。 [ 説明 ] 浮動小数点数字列の指数部を表す数字が記述されていません。 E4050C hexadecimal constant cannot be floating point constant 16 進定数は浮動小数点定数にできません。 [ 説明 ] 16 進定数中に `.' が記述されています。 E4051C invalid postfix character `%c' after floating point constant 浮動小数点定数の後ろに不当な接尾語 `%c' があります。 [ 説明 ] 浮動小数点数字列の直後に浮動小数点接尾語として認識されない文字が記述され ています。 July 31, 2015, CM42-00328-9 301 付録 付録 E エラーメッセージ一覧 So ft war e E4052C S up po r t M a nu al invalid token: `..' 不当な字句 `..' があります。 [ 説明 ] 不当な字句 `..' が記述されています。. 演算子の場合にはピリオドは 1 つ , 関数の省 略終了子の場合にはピリオドは 3 つです。 E4053C integer constant out of range 整数定数が整数の値域を超えています。 [ 説明 ] 整数定数が処理系内部で表現できない値です。 [ 備考 ] このメッセージは使用されていません。 E4054C invalid character `%c' 不当な文字 `%c' があります。 [ 説明 ] 翻訳文字集合で規定されていない不当な文字が記述されました。 E4055C invalid binary constant 不当な 2 進定数があります。 [ 説明 ] 0b または 0B で始まる 2 進定数の先頭の数字が 0 または 1 以外です。 [ 備考 ] このメッセージは使用されていません。 E4056C invalid hexadecimal constant 不当な 16 進定数があります。 [ 説明 ] 0x または 0X で始まる 16 進定数の先頭の数字が 16 進数として許されない文字です。 E4057C invalid multibyte character constant 不当な多バイト文字定数です。 [ 説明 ] ワイド文字定数内に文字コードとして認識できない不当な多バイト文字が記述さ れています。 302 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4058C S u p p o r t M a n u a l invalid multibyte string literal 不当な多バイト文字列リテラルです。 [ 説明 ] ワイド文字列リテラル内に文字コードとして認識できない不当な多バイト文字が 記述されています。 E4059C invalid character `\\%o' (octal) 不当な文字 `\\%o' があります。 [ 説明 ] 翻訳文字集合で規定されていない不当な文字が記述されました。 E4060C %s near wide character string constant %s: ワイド文字列の近辺です。 [ 説明 ] 構文エラーの補助メッセージです。ワイド文字列リテラルの付近で構文エラーが発 生しました。 E4061C %s near wide character constant %s: ワイド文字定数の近辺です。 [ 説明 ] 構文エラーの補助メッセージです。ワイド文字定数の付近で構文エラーが発生しま した。 E4062C %s near `%s' %s: `%s' の近辺です。 [ 説明 ] 構文エラーの補助メッセージです。指示された文字の付近で構文エラーが発生しま した。 E4063C %s detected %s が起きました。 [ 説明 ] 構文エラーの補助メッセージです。構文エラーが発生しました。 E4064C %s near character constant %s: 文字定数の近辺です。 [ 説明 ] 構文エラーの補助メッセージです。文字定数の付近で構文エラーが発生しました。 July 31, 2015, CM42-00328-9 303 付録 付録 E エラーメッセージ一覧 So ft war e E4065C S up po r t M a nu al %s near string constant %s: 文字列の近辺です。 [ 説明 ] 構文エラーの補助メッセージです。文字列リテラルの付近で構文エラーが発生しま した。 E4066C division by 0 ゼロ除算が行われました。 [ 説明 ] 定数演算の除算においてゼロ除算が行われました。 E4067C invalid use of void type expression void 型の式を使うことはできません。 [ 説明 ] void 型を持つ式が記述されています。 void 型に対して演算を施すことはできません。 E4068C incompatible subscript between variable and constant 添字が可変値と定数で矛盾しています。 [ 説明 ] 配列の添字の指定状況が一致していません。型は適合しないものとみなします。 [ 備考 ] このメッセージは使用されていません。 E4069C incompatible subscript between variables 添字が可変値間で矛盾しています。 [ 説明 ] 配列の添字の指定状況が一致していません。型は適合しないものとみなします。 [ 備考 ] このメッセージは使用されていません。 E4070C cannot concatenate character string literal and wide character string literal 単純文字列リテラルとワイド文字列リテラルは連結できません。 [ 説明 ] 単純文字列リテラルとワイド文字列リテラルは連結できません。文字列連結する場 合の文字列の種別は一致させる必要があります。 E4071C undefined field `%I' 未定義のフィールド `%I' が使用されました。 [ 説明 ] メンバとして定義されていないシンボルがメンバ参照されました。 304 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4072C S u p p o r t M a n u a l different data types specified for declaration of `%s' `%s' に対して異なるデータの型が記述されています。 [ 説明 ] データの型を指定する型指定子が異なるものが複数指定されています。データの型 を指定する型指定子は 1 つしか指定できません。 E4073C invalid short or long specified with char for declaration of `%s' `%s' に対して , 不当な short または long の記述がされています。 [ 説明 ] char は , short または long と組み合わせることができません。 E4074C invalid short or long specified for declaration of `%s' `%s' に対して , 不当な short または long の記述があります。 [ 説明 ] short または long と組み合わせることができない型指定子が指定されています。 E4075C invalid signed or unsigned specified for declaration of `%s' `%s' に対して , 不当な signed または unsigned の記述があります。 [ 説明 ] signedまたはunsignedと組み合わせることができない型指定子が指定されています。 E4076C multiple storage class specifier specified for declaration of `%s' `%s' に対して , 複数の記憶域クラス指定子が記述されています [ 説明 ] 複数の型指定子が記述されています。型指定子は 1 つしか記述できません。 E4077C invalid long specified for declaration of `%s' `%s' に対して , 不当な long の記述がされています。 [ 説明 ] long の型指定子の組み合わせ方法に誤りがあります。 E4078C invalid declaration specifier of both fundamental type and elaborate type for declaration of `%s' 不当な宣言指定子です。`%s' に対しての宣言指定子として , 基本型 と集合型が同時に指定されています。 [ 説明 ] 型指定子に算術型を表す型と集合型 ( 構造体 , 共用体および列挙 型 ) が同時に指定されています。 July 31, 2015, CM42-00328-9 305 付録 付録 E エラーメッセージ一覧 So ft war e E4079C S up po r t M a nu al invalid declaration specifier of elaborate types for declaration of `%s' 不当な宣言指定子です。`%s' に対する集合型は不当です。 [ 説明 ] 型指定子に集合型 ( 構造体 , 共用体および列挙型 ) が複数指定されています。 E4080C invalid struct/union definition: zero size structure 誤った struct/union 宣言です。 [ 説明 ] 構造体または共用体のタグ宣言中に有効なメンバの宣言がありません。少なくとも 1 つのメンバ宣言が必要です。 E4081C invalid declaration of `%D' as parameter 仮引数として不当な宣言 `%D' が記述されています。 [ 説明 ] 仮引数の宣言が不当です。 [ 備考 ] このメッセージは使用されていません。 E4082C redeclaration of `%D' in parameter list 仮引数リスト内に `%D' が二重定義されています。 [ 説明 ] 仮引数リスト内でシンボルが二重定義されています。 [ 備考 ] このメッセージは使用されていません。 E4083C `%E %I' was declared as `%T' previously `%E %I' は , `%T' として先に宣言されています。 [ 説明 ] 構造体 , 共用体または列挙タグ名が既に別の種類のタグとして宣言されています。 E4179C の補助メッセージです。 E4084C function `%D' cannot be struct/union member 関数 `%D' は構造体または共用体のメンバになりえません。 [ 説明 ] 構造体または共用体のメンバに関数型を持つシンボルは宣言できません。 306 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4085C S u p p o r t M a n u a l redeclaration of `%D': different object types `%D' のオブジェクト型が異なって二重定義されました。 [ 説明 ] 同じ名前空間内にオブジェクト型 ( シンボルの特性 ) の異なるシンボルが再宣言さ れています。 E4086C redeclaration of `%D' `%D' は , 二重定義されています。 [ 説明 ] シンボルが二重定義されています。型 , 結合 , 記述位置を再度確認してください。 E4087C linkage conflict declaration of `%D' `%D' の宣言が矛盾しています。 [ 説明 ] 既に定義されているシンボルと結合が一致しません。 invalid storage class specifier `%A' at %S specified for function `%D' E4088C 不当な記憶域クラス `%A' が , `%S' で , 関数 `%D' に対して指定され ています。 [ 説明 ] 指摘された記憶域クラス指定子は , 関数宣言に許されないものです。 invalid storage class specifier `%A' at %S specified for `%D' E4089C 不当な記憶域クラス `%A' が , `%S' で , `%D' に対して指定されてい ます。 [ 説明 ] 指摘された記憶域クラス指定子は , 宣言に許されないものです。記述位置と記憶域 クラスの関係を見直してください。 E4090C invalid initializer for declaration of `%D' `%D' に対して , 誤った初期値です。 [ 説明 ] 初期化の許されない宣言に初期値が指定されています。 invalid type of array subscript: integral type expected E4091C 配列の添字が不当な型になっています。整数型を記述してくださ い。 [ 説明 ] 配列の添字には整数型しか許されません。 July 31, 2015, CM42-00328-9 307 付録 付録 E エラーメッセージ一覧 So ft war e E4092C S up po r t M a nu al both separate parameter declaration and parameter list declaration are used 旧式の仮引数宣言と関数原型宣言が同時に行われました。 [ 説明 ] 関数定義がプロトタイプ宣言されていますが , 非プロトタイプの仮引数宣言が同時 に指定されています。プロトタイプ宣言を使用する場合には仮引数宣言は不要で す。 E4093C invalid constant expression in array subscript 配列の添字中に不当な定数の記述があります。 [ 説明 ] 配列の添字に記述されている式は不当な式です。正しい整数定数式を記述してくだ さい。 E4094C invalid array subscript: integral constant expression is expected 不当な配列の添字です。添字には , 整数定数を記述してください。 [ 説明 ] 配列の添字には整数定数式のみ記述できます。正しい定数式を記述してください。 E4095C subscript of array is negative 配列の大きさが負です。 [ 説明 ] 配列の添字に負の値が指定されています。このままでは配列の大きさを算出できま せん。 E4096C array type of functions 関数の配列です。 [ 説明 ] 配列の要素の型が関数型になっています。配列の要素の型にはふさわしくありませ ん。 E4097C array type of voids void 型の配列です。 [ 説明 ] 配列の要素の型が void 型になっています。配列の要素の型にはふさわしくありませ ん。 E4098C function cannot return array 関数は配列型を返すことはできません。 [ 説明 ] 関数の復帰値の型が配列型になっています。関数は配列を返すことはできません。 308 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4099C S u p p o r t M a n u a l function cannot return function 関数は関数型を返すことはできません。 [ 説明 ] 関数の復帰値の型が関数型になっています。関数は関数を返すことはできません。 E4100C parameter name is not specified 仮引数名が記述されていません。 [ 説明 ] プロトタイプ宣言されている関数定義の仮引数には仮引数名が必要です。 E4101C invalid storage class specifier `%A' specified for function definition of `%D' %A をともなって , 関数 `%D' が宣言されています。 [ 説明 ] 指摘された記憶域クラス指定子は関数定義では使用できません。 E4102C function type is required for `%D' `%D' の型には , 関数型を指定しなければなりません。 [ 説明 ] 関数定義の形式 ( 宣言子の後ろに関数本体があるパターン ) ではシンボルは関数型 を持っていなければなりません。 E4103C different data type declaration of `%D' `%D' が , 異なったデータ型宣言で宣言されています。 [ 説明 ] 関数定義を行っているシンボルが既に関数型以外で宣言されています。 E4104C redeclaration of parameter `%D' 仮引数 `%D' が二重定義されています。 [ 説明 ] 指摘されたシンボルは既に仮引数として宣言されています。 E4105C parameter `%D' is missing in parameter list `%D' は仮引数リストにありません。 [ 説明 ] 非プロトタイプによる関数定義の仮引数宣言に記述された仮引数 が , 関数宣言子内の識別子の並びにありません。 July 31, 2015, CM42-00328-9 309 付録 付録 E エラーメッセージ一覧 So ft war e E4106C S up po r t M a nu al invalid void type parameter declaration in parameter list 仮引数リスト中に不当な void 型の仮引数が宣言されています。 [ 説明 ] 二番目以降の仮引数に void 型が指定されています。仮引数がないことを意味する void 型を指定する場合には , 単独でかつ仮引数名を記述しないようにします。 E4107C invalid parameter declaration after void type in parameter list 仮引数リスト中の void 型の後に , 不当な引数の宣言があります。 [ 説明 ] 仮引数リストの先頭が void 型でしたが , 後ろに引数の宣言が続いています。仮引数 の void は仮引数がないことを意味します。 E4108C duplicate member `%I' in `%T' メンバ `%I' が `%T' 中で重複しています。 [ 説明 ] 指摘された構造体または共用体メンバのシンボルは既にメンバとして宣言されて います。 E4109C integral constant expression required for enumerator initialization of `%I' 列挙子 `%I' の初期化には整数定数が必要です。 [ 説明 ] 列挙子に初期値を指定する場合には整数定数を指定してください。 E4110C undeclared identifier `%I' 識別子 `%I' が宣言されていません。 [ 説明 ] 宣言されていない識別子を式中で使用しています。関数呼び出しを除いて , 式中で 使用する識別子は宣言しなければなりません。 E4111C bit-field size of `%D' is not integral constant expression ビットフィールド `%D' の大きさが整数定数でありません。 [ 説明 ] ビットフィールドの幅の指定は整数定数式でなければなりません。 E4112C type of bit-field member `%D' is not integral type ビットフィールド `%D' の型が整数型でありません。 [ 説明 ] ビットフィールドメンバの型は整数型でなければなりません。 310 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e S u p p o r t M a n u a l bit-field size %d of `%D' is too large E4113C 整数値 %d は , ビットフィールド `%D' の大きさとしては大き過ぎま す。 [ 説明 ] ビットフィールドの幅は型の大きさ以下でなければなりません。 E4114C bit-field width of `%D' is negative ビットフィールド `%D' の大きさが負の値です。 [ 説明 ] ビットフィールドの幅はゼロまたは正の値でなければなりません。 E4115C bit-field width of `%D' must be non-zero ビットフィールド `%D' の大きさは , 0 以外でなければなりません。 [ 説明 ] ビットフィールドの幅は正の値でなければなりません。 bit-field width %d of `%D' is larger than its type maximum width %d E4116C ビットフィールドの大きさ %d が , `%D' の型の最大の大きさ %d よ り大きい値です。 [ 説明 ] ビットフィールドの幅は型の大きさ以下でなければなりません。 E4117C size of `%T' is zero `%T' の大きさは 0 です。 [ 説明 ] 構造体または共用体タグの中に幅を持ったメンバ宣言がないため , タグの大きさが ゼロになります。 E4118C %Z: invalid lvalue: string constant specified %Z: 文字列は左辺値として無効です。 [ 説明 ] 文字列定数は左辺値 ( 代入の左辺として許される式の値 ) にはなりません。 July 31, 2015, CM42-00328-9 311 付録 付録 E エラーメッセージ一覧 So ft war e E4119C S up po r t M a nu al invalid operands: %s: %O オペランドに誤りがあります。: %s: %O [ 説明 ] 演算のオペランドに誤りがあります。 E4001C, E4002C, E4005C, E4006C, E4007C, E4008C に組み込まれるメッセージです。 [ 備考 ] このメッセージは使用されていません。 E4120C %Z: invalid lvalue %Z: 不当な左辺値です。 [ 説明 ] 左辺値 ( 代入の左辺として許される式の値 ) として許されない式が指定されていま す。 E4121C %Z: invalid lvalue: void type specified %Z: void 型は左辺値として無効です。 [ 説明 ] void 型を持つ式は , 左辺値 ( 代入の左辺として許される式の値 ) にはなりません。 E4122C %Z: invalid lvalue: function type specified %Z: 関数値の型は左辺値として無効です。 [ 説明 ] 関数型を持つ式 ( 関数のシンボル等 ) は , 左辺値 ( 代入の左辺として許される式の 値 ) にはなりません。 E4123C %Z: invalid lvalue: array type specified %Z: 配列型は左辺値として無効です。 [ 説明 ] 配列型を持つ式 ( 配列のシンボル等 ) は , 左辺値 ( 代入の左辺として許される式の 値 ) にはなりません。 E4124C %Z: pointer type or array type required: %O %Z: ポインタ型または配列型が必要です。: %O [ 説明 ] 加算 , 減算 , 配列参照演算においてポインタ型が許される演算項には , ポインタ型ま たは配列型を持つ式が指定されている必要があります。 312 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4125C S u p p o r t M a n u a l %Z: different struct/union types %Z: 異なった構造体 / 共用体型が指定されました。 [ 説明 ] 構造体代入では , 両辺の型は同じタグを持った構造体または共用体同士である必要 があります。 E4126C void type function `%D' cannot return void void 型を持つ関数 `%D' は void 型を返すことはできません。 [ 説明 ] 関数の復帰値としての void 型は復帰値がないことを表します。void 型を返すわけで はありません。return 文には式を記述しないでください。 E4127C %Z: void type specified: `%D' %Z: 無効な void 型が記述されています。: `%D' [ 説明 ] 初期化等 , void 型が許されない文脈で使用されています。 E4128C %Z: void type specified: argument %d %Z: 無効な void 型が記述されています。: 第 %d 引数 [ 説明 ] 関数呼び出しの引数に void 型を持つ式が記述されています。式中には void 型は許 されません。 E4129C %Z: void type specified: %O %Z: 無効な void 型が記述されています。: %O [ 説明 ] 代入等 , void 型が許されない文脈で使用されています。 E4130C void type function `%D' cannot return value void 型を持つ関数 `%D' は値を返却できません。 [ 説明 ] 関数の復帰値としての void 型は復帰値がないことを表します。return 文には式を記 述しないでください。 E4131C %Z: extra argument: argument %d %Z: 実引数は指定できません。: 第 %d 引数 [ 説明 ] 関数の仮引数としての void は引数を受け取らないことを表します。関数呼び出し時 に実引数を指定しないでください。 July 31, 2015, CM42-00328-9 313 付録 付録 E エラーメッセージ一覧 So ft war e E4132C S up po r t M a nu al %Z: invalid lvalue: void type specified: `%D' %Z: 左辺値が無効です。void 型が記述されています。: `%D' [ 説明 ] 初期化対象が void 型を持っています。左辺値 ( 代入の左辺として許される式の値 ) として許されません。 E4133C %Z: invalid lvalue: void type specified: %O %Z: 左辺値が無効です。void 型が記述されています。: %O [ 説明 ] 代入対象が void 型を持っています。左辺値 ( 代入の左辺として許される式の値 ) と して許されません。 E4134C %Z: invalid void type specified in function `%D' %Z: 関数 `%D' で , 誤った void 型が記述されています。 [ 説明 ] return 文に void 型を持つ式は指定できません。 E4135C %Z: %s: `%T': %O %Z: %s: `%T': %O [ 説明 ] 大きさは決定できません。 E4009C, E4010C, E4014C に組み込まれるメッセージです。 [ 備考 ] このメッセージは使用されていません。 E4136C %Z: %s: `%T' %Z: %s: `%T' [ 説明 ] 大きさは決定できません。 E4009C, E4010C, E4014C に組み込まれるメッセージです。 [ 備考 ] このメッセージは使用されていません。 E4137C undefined field `%I': `%T' is incomplete type: %O フィールド `%I' は未定義です。`%T' は不完全型です。: %O [ 説明 ] 構造体または共用体のタグの定義がないためメンバは検索できません。 314 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4138C S u p p o r t M a n u a l field `%I' is undefined in `%T': %O フィールド `%I' は `%T' のメンバではありません。: %O [ 説明 ] 構造体または共用体のタグ内にメンバが存在しません。 E4139C invalid type conversion from floating point type to pointer type 浮動小数点型からポインタ型へは , 型変換できません。 [ 説明 ] 浮動小数点型からポインタ型への型変換は , 結果の値を正しく保持できないため不 可能です。 E4140C invalid type conversion from pointer type to floating point type ポインタ型から浮動小数点型へは , 型変換できません。 [ 説明 ] ポインタ型から浮動小数点型への型変換は , 結果の値を正しく保持できないため不 可能です。 E4141C invalid type conversion: void value ought to be ignored 不当な型変換。void 型の値は無視されるべきです。 [ 説明 ] void 型から構造体または共用体型への型変換はできません。式の型の void は結果の 値を無視することを意味します。 E4142C invalid type conversion to array type 配列型への不当な型変換です。 [ 説明 ] 配列型への型変換はできません。 E4143C invalid type conversion to different non scalar type 異なる非スカラ型への型変換は不当です。 [ 説明 ] 構造体型または共用体型から異なる構造体型または共用体型への型変換はできま せん。 E4144C invalid type conversion to `%T' `%T' への不当な型変換です。 [ 説明 ] 型変換ができない型同士の型変換です。 July 31, 2015, CM42-00328-9 315 付録 付録 E エラーメッセージ一覧 So ft war e E4145C S up po r t M a nu al invalid type conversion to array type 不当な型変換です。 [ 説明 ] 配列型から構造体または共用体型への型変換はできません。 E4146C invalid type conversion to function type 不当な型変換です。 [ 説明 ] 関数型から構造体または共用体型への型変換はできません。 E4147C invalid type for conditional expression: `%T' specified: scalar type expected: %O `%T' 型は , 条件式に対して指定できません。: %O [ 説明 ] 条件式の型として構造体 , 共用体および void 型は指定できません。条件式の型とし て許されるのはスカラ型 ( 算術型およびポインタ型 ) のみです。 E4148C duplicate case value %X in switch clause case 値 %X が重複して記述されています。 [ 説明 ] case ラベルの式の値は switch 文内でユニークである必要があります。 E4149C duplicate `default' in switch clause default ラベルが重複して記述されています。 [ 説明 ] default ラベルは switch 文内に 1 つしか記述できません。 integral type required for switch conditional expression: `%T' specified E4150C switch 文の条件式には整数型を記述してください。`%T' は不当な型 です。 [ 説明 ] switch 文の条件式に整数型以外の型は指定できません。 E4151C void type expression is used as argument: argument %d 実引数として void 型の式が使用されています。: 第 %d 引数 [ 説明 ] 仮引数の省略終了子に対する実引数に void 型の式が使用されています。 E4214C および E4215C に関数の情報が出力されています。 316 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e S u p p o r t M a n u a l too many arguments to function: argument %d expect %d E4152C 関数の実引数が多過ぎます。%d 個の実引数が指定されましたが , 期 待される実引数の数は %d です。 [ 説明 ] 関数の仮引数に比べて実引数の個数が多すぎます。 E4214C および E4215C に関数の情報が出力されています。 too few arguments to function: argument %d expect %d E4153C 関数の実引数が少な過ぎます。%d 個の実引数が指定されましたが , 期待される実引数の数は %d です。 [ 説明 ] 関数の仮引数に比べて実引数の個数が少なすぎます。 E4214C および E4215C に関数の情報が出力されています。 [ 備考 ] このメッセージは使用されていません。 E4154C cannot take address of bit-field `%D' ビットフィールド `%D' のアドレスをとりました。 [ 説明 ] & 演算子のオペランドにビットフィールドを表す式が指定されています。ビット フィールドのアドレスは取得できません。 E4155C argument passing to function `%N': argument %d 関数 `%N' への実引数渡しです。: 第 %d 引数 [ 説明 ] 関数への実引数渡しです。 [ 備考 ] このメッセージは使用されていません。 E4156C integral type required for case expression: `%T' specified case 文には整数型を記述してください。`%T' は不当な型です。 [ 説明 ] case ラベルの式には switch 文の条件式と同じく整数型のみが許されます。 E4157C integral constant expression required for case expression case 文には整数定数を記述してください。 [ 説明 ] case ラベルの式には整数定数のみ記述できます。 July 31, 2015, CM42-00328-9 317 付録 付録 E エラーメッセージ一覧 So ft war e E4158C S up po r t M a nu al incompatible types between `%T' and `%T' `%T' と `%T' とで型が矛盾しています。 [ 説明 ] シンボルの外部参照による再宣言および構造体代入において型が矛盾しています。 E4159C redefinition of %s `%D' %s: `%D' の二重定義です。 [ 説明 ] シンボルが二重定義になっています。 E4160C %Z: void type specified: argument %d of `%D' %Z: 無効な void 型が記述されています。: 第 %d 引数 : 関数 `%D' [ 説明 ] 関数呼び出しの引数に void 型を持つ式が記述されています。式中には void 型は許 されません。 E4161C %Z: extra argument: argument %d of `%D' %Z: 実引数は指定できません。: 第 %d 引数 : 関数 `%D' [ 説明 ] 関数の仮引数としての void は引数を受け取らないことを表します。関数呼び出し時 に実引数を指定しないでください。 E4162C %Z: expected `%T' actual `%T': argument %d of `%D' %Z: `%T' に対して `%T' を指定しています。: 第 %d 引数 : 関数 `%D' [ 説明 ] 関数呼び出しの実引数の型と宣言時の仮引数の型が適合しません。仮引数の型に合 うように実引数を見直してください。 E4163C invalid type conversion of void type: invalid use of void void 型の型変換が不当です。void 型の使用に誤りがあります。 [ 説明 ] void 型に関わる不正な型変換が記述されています。 E4164C invalid `long long' type specifier `long long' 型は許されません。 [ 説明 ] 当処理系では long long 型はサポートされていません。 318 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4165C S u p p o r t M a n u a l cannot take address of void type expression: %O void 型の式のアドレスがとられました。: %O [ 説明 ] 単項 & 演算子のオペランドの型が void 型です。 void 型のアドレスは取得できません。 E4166C take address of rvalue: %O 右辺値のアドレスがとられました。: %O [ 説明 ] 単項 & 演算子のオペランドは左辺値 ( 代入の右辺に許される式の 値 ) でなければなりません。 E4167C `long char' type specifier is forbidden `long char' 型は許されません。 [ 説明 ] 旧い仕様の一部にある long char 型はサポートしてしません。 E4168C type of `%D' is incomplete type `%T' `%D' の型は不完全型 `%T' です。 [ 説明 ] タグの定義されていない構造体 , 共用体および列挙型は不完全型です。不完全型を 式で使用することはできません。 E4169C `%T' is incomplete type `%T' は不完全型です。 [ 説明 ] タグの定義されていない構造体 , 共用体および列挙型は不完全型です。不完全型を 式で使用することはできません。 E4170C invalid type conversion 型変換が不当です。 [ 説明 ] 定数の型変換のターゲットの型が , void 型 , 整数型 , 浮動小数点型 , ポインタ型以外 の型です。定数ではこれらの型以外への型変換はできません。 E4171C %Z: expected `%T' actual `%T' in function `%D' %Z: `%T' に対して `%T' を返しています。: 関数 `%D' [ 説明 ] 関数の復帰値の型と return 文の式の型が適合しません。 July 31, 2015, CM42-00328-9 319 付録 付録 E エラーメッセージ一覧 So ft war e E4172C S up po r t M a nu al %Z: expected `%T' actual `%T': argument %d %Z: `%T' に対して `%T' を指定しています。: 第 %d 引数 [ 説明 ] 関数呼び出しの実引数の型と宣言時の仮引数の型が適合しません。仮引数の型に合 うように実引数を見直してください。 E4173C %Z from `%T' to `%T': `%D' %Z: `%T' から `%T' への指定です。: `%D' [ 説明 ] 初期化対象の型と初期値の型が適合しません。 E4174C %Z from `%T' to `%T': %O %Z: `%T' から `%T' への指定です。: %O [ 説明 ] 代入の左辺の型と右辺の型が適合しません。 too many arguments to function: argument %d expect 0 E4175C 関数に対して実引数が多過ぎます。%d 個の実引数が指定されまし たが , 期待される実引数の数は 0 です。 [ 説明 ] 仮引数にvoidを持って宣言されている関数の呼び出しにおいて実引数が指定されて います。仮引数の void は引数を必要としない関数であることを表しているため , 実 引数は不要です。 E4214C および E4215C に関数の情報が出力されています。 E4176C invalid type combination in declaration with obsolete modified typedef type 旧い形式の宣言で型の組み合わせが不当です。 [ 説明 ] 型の組み合わせが不当です。 [ 備考 ] このメッセージは使用されていません。 E4177C too many same data types specified for declaration of `%s' `%s' に対して同じデータ型が多く記述されています。 [ 説明 ] 同じ型指定子が 1 宣言中に複数記述されています。 320 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4178C S u p p o r t M a n u a l invalid void type parameter before ellipsis in parameter list 仮引数リスト中の省略記号の前に不当な void 型の引数があります。 [ 説明 ] 仮引数に void を指定した場合には省略終了子は記述できません。 E4179C different kind tag declaration of `%D' `%D' のタグが異なって宣言されました。 [ 説明 ] 構造体 , 共用体または列挙タグ名が既に別の種類のタグとして宣言されています。 width of type is too wide: cannot use `%T' for bit-field: declaration of `%D' E4180C `%T' の型は大き過ぎるのでビットフィールド宣言としては使用でき ません。: `%D' [ 説明 ] 型の幅が処理系内でビットフィールドとして処理できる大きさを超えているため , ビットフィールド宣言として使用することはできません。 [ 備考 ] このメッセージは使用されていません。 E4181C invalid null subscript of array: `%D' 配列の大きさが指定されていません。: `%D' [ 説明 ] 配列の添字が記述されていないためシンボルの大きさを決定できません。 E4182C %Z: `%T' is incomplete type %Z: `%T' は不完全型です。 [ 説明 ] 型が不完全型 ( タグの定義のない構造体 , 共用体 , 列挙型 , および添字のない配列 型 ) です。 E4183C invalid storage class specifier `%A' specified for `%D' at %S 不当な記憶域クラス `%A' が `%D' に対して %S で指定されました。 [ 説明 ] 記述位置 ( スコープ ) で許されない記憶域クラス指定子が指定されています。 July 31, 2015, CM42-00328-9 321 付録 付録 E エラーメッセージ一覧 So ft war e E4184C S up po r t M a nu al sorry, internal limitation: precision of bit-field type %d is larger than native machine register width %d コンパイラ内部制限 : ビットフィールドの型の %d の精度に対して , ビットフィールドの大きさ %d は , 不当です。 [ 説明 ] 型の幅が処理系内でビットフィールドとして処理できる大きさを超えているため , ビットフィールド宣言として使用することはできません。 [ 備考 ] このメッセージは使用されていません。 E4185C %Z: missing argument %Z: 実引数に誤りがあります。 [ 説明 ] 組込み関数の実引数の指定方法に誤りがあります。 [ 備考 ] このメッセージは使用されていません。 E4186C %Z: too many arguments %Z: 実引数が多過ぎます。 [ 説明 ] 組込み関数の実引数の指定方法に誤りがあります。 [ 備考 ] このメッセージは使用されていません。 E4187C %Z: invalid argument: pointer required %Z: 実引数の値が無効です。ポインタ変数が必要です。 [ 説明 ] 組込み関数の実引数の指定方法に誤りがあります。 [ 備考 ] このメッセージは使用されていません。 E4188C invalid type conversion to function 関数への不当な型変換です。 [ 説明 ] 関数型への型変換はできません。 322 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4189C S u p p o r t M a n u a l automatic symbol has zero or negative size 自動変数の大きさが 0 または負の値になっています。 [ 説明 ] タグ宣言の誤りまたは配列添字の誤りにより , 自動変数の大きさが正の値になって いません。 E4190C invalid typedefed function type for function definition 関数宣言に対する関数値の型宣言が不当です。 [ 説明 ] 関数型を持つ型定義名を使って関数定義を行うことはできません。 E4191C cannot quote EOF EOF は , エスケープできません。 [ 説明 ] 文字列または文字定数内のバックスラッシュの直後に EOF となりました。 E4192C invalid `\\' in input 不当な `\\' が入力されました。 [ 説明 ] 文字列および文字定数の外にバックスラッシュが出現しました。ソース中のバック スラッシュは不当な文字です。 E4193C asm: invalid type `%T' of symbol `%D' asm: 型 が `%T' であるオペランド `%D' は , 指定できません。 [ 説明 ] asm 文内の LOAD/STORE 表記内に配列型 , 算術型またはポインタ型以外の型を持つ シンボルが記述されています。 E4194C asm: array `%D' cannot be used for store operand asm: 配列名 `%D' は , ストアオペランドとしては使用できません。 [ 説明 ] asm 文内の STORE 表記内に配列型を持つシンボルが記述されています。配列型の シンボルは配列のアドレスを持つため STORE の対象とすることはできません。 E4195C asm: too many operands asm: オペランドが多過ぎます。 [ 説明 ] asm 文中の LOAD/STORE 表記が多すぎます。コンパイラの内部処理では 6 個まで 許していますが , 実際に効果があるか否かはアセンブラ命令によります。 July 31, 2015, CM42-00328-9 323 付録 付録 E エラーメッセージ一覧 So ft war e E4196C S up po r t M a nu al asm: invalid expression: `%I' asm: 誤った式が書かれています。: `%I' [ 説明 ] asm 文中の LOAD/STORE 表記内のシンボルに誤りがあります。 E4197C asm: regular string constant expected for asm statement asm: 単純文字列リテラルを記述してください。 [ 説明 ] asm 文のオペランドは単純文字列リテラルである必要があります。 E4198C asm: identifier is expected asm: 識別子を記述してください。 [ 説明 ] asm 文中の LOAD/STORE 表記内に識別子が記述されていません。 E4199C asm: `%c' is expected asm: `%c' が必要です。 [ 説明 ] asm 文中の LOAD/STORE 表記内の識別子の直後に `}' または `]' が記述されていま せん。 E4200C asm: typedefed identifier `%I' cannot be used in asm statement asm: 型定義された識別子 `%I' は , asm 文中で使用できません。 [ 説明 ] asm 文中の LOAD/STORE 表記内の識別子が型定義名です。 E4201C asm: invalid assignment of enumerator `%I' asm: 列挙定数 `%I' が誤って使われています。 [ 説明 ] asm 文中の STORE 表記内の識別子が列挙定数です。列挙定数に STORE することは できません。 E4202C asm: invalid expression asm: 不当な表現です。 [ 説明 ] asm 文の文字列リテラルの表記が不当です。 324 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4203C S u p p o r t M a n u a l asm: invalid use of enumerator `%I' asm: 列挙定数 `%I' が誤って使われています。 [ 説明 ] asm 文中の LOAD 表記内の識別子が列挙定数です。列挙定数を LOAD することは できません。 E4204C `default' outside switch switch 文の外に default が指定されました。 [ 説明 ] default ラベルが switch 文の外側に指定されています。default ラベルは switch 文内の case ラベルにあわない条件の分岐先です。 E4205C sorry, internal limitation: number of array dimensions exceeds %d コンパイラ内部制限 : 配列の大きさが %d を超えました。 [ 説明 ] 配列の次元数がコンパイラの内部制限を超えています。 E4206C %Z: cannot get alignment of `%T' %Z: `%T' の境界調整値を得ることができません。 [ 説明 ] 不完全型の境界調整値は取得できません。 [ 備考 ] このメッセージは使用されていません。 E4207C invalid type combination of `%T' and `%T': %O `%T' と `%T' は , 誤った型の組合わせです。: %O [ 説明 ] 演算のオペランドの型の組み合わせに誤りがあります。 invalid type combination of `%T' and `%T': integral type required: %O E4208C `%T' と `%T' は , 誤った型の組合わせです。整数型が必要です。: %O [ 説明 ] 演算のオペランドの型の組み合わせに誤りがあります。整数型のオペランドが必要 です。 July 31, 2015, CM42-00328-9 325 付録 付録 E エラーメッセージ一覧 So ft war e S up po r t M a nu al invalid type combination of `%T' and `%T': arithmetic type required: %O E4209C `%T' と `%T' は , 誤った型の組合わせです。算術型が必要です。: %O [ 説明 ] 演算のオペランドの型の組み合わせに誤りがあります。算術型のオペランドが必要 です。 invalid type combination of `%T' and `%T': void type required: %O E4210C `%T' と `%T' は , 誤った型の組合わせです。void 型が必要です。: %O [ 説明 ] 演算のオペランドの型の組み合わせに誤りがあります。void 型のオペランドが必要 です。 invalid type combination of `%T' and `%T': compatible types required: %O E4211C `%T' と `%T' は , 誤った型の組合わせです。型互換のある型が必要 です。: %O [ 説明 ] 演算のオペランドの型の組み合わせに誤りがあります。型互換のある型を持つオペ ランドが必要です。 E4212C only one argument is specified 引数が 1 つしか指定されていません。 [ 説明 ] __regload および __regstore には引数が 2 つ必要です。 E4213C too many argument specified 引数が多すぎます。 [ 説明 ] __regload および __regstore には引数が 2 つ必要です。 E4214C argument passing to builtin function `%N' 組込み関数 `%N' [ 説明 ] 組込み関数の誤りです。 E4151C, E4152C, E4153C および E4175C の関数の情報です。 326 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4215C S u p p o r t M a n u a l argument passing to function `%N': \"%s\", line % 関数 `%N': ファイル \"%s\", %d 行目 [ 説明 ] 指摘された関数の誤りです。 E4151C, E4152C, E4153C および E4175C の関数の情報です。 E4216C invalid declaration specifier: `%s' 不当な宣言が記述されています。: `%s' [ 説明 ] 宣言指定子に誤りがあります。 [ 備考 ] このメッセージは使用されていません。 E4217C member `%D' has invalid storage class specifier `%D' に対して不当な記憶域が記述されています。 [ 説明 ] 記憶域クラス指定子を構造体または共用体メンバの宣言に指定できません。 [ 備考 ] このメッセージは使用されていません。 E4218C cannot get unknown scaling value 大きさがわからないため演算できません。 [ 説明 ] 式が持つ型の大きさを取得できないため演算ができません。 E4219C `case' outside switch case 文が switch 文の外にあります。 [ 説明 ] case ラベルが switch 文の外側に指定されています。case ラベルは switch 文内の条件 の分岐先です。 E4220C invalid data member: `%D' 誤ったデータメンバです。: `%D' [ 説明 ] 構造体または共用体メンバの型の指定に誤りがあります。 July 31, 2015, CM42-00328-9 327 付録 付録 E エラーメッセージ一覧 So ft war e E4221C S up po r t M a nu al invalid `...' in expression 誤った `...' が , 式中にあります。 [ 説明 ] 省略終了子 `...' は仮引数の記述位置以外には指定できません。 E4222C invalid `$' in input 不当なキャラクタ `$' が入力中に含まれています。 [ 説明 ] `$' は翻訳文字集合中に含まれない文字です。 E4223C specification of sign of plain `char' conflict 単なる char の符号を指定するオプションに誤りがあります。 [ 説明 ] 単なるcharを符号付きとするオプションと符合なしとするオプションを同時に指定 しないでください。 E4224C #pragma intvect: the same vector number is expected #pragma intvect: 同一のベクタ番号が指定されました。 [ 説明 ] #pragma intvect で別の関数名で同じベクタ番号を持つ指定が既に存在します。 E4225C cannot take address of object in register storage register 記憶域にあるオブジェクトのアドレスをとりました。 [ 説明 ] & 演算子のオペランドに register 記憶域クラス指定子を伴って宣言されたシンボル が指定されています。register 記憶域クラスにあるオブジェクトのアドレスは取得で きません。 E4226C #pragma register: syntax error: register bank number is expected #pragma register: レジスタバンク番号が必要です。 [ 説明 ] #pragma register にはレジスタバンク番号が必要です。 E4227C #pragma register: register bank number is out of range #pragma register: レジスタバンク番号が範囲を越えています。 [ 説明 ] #pragma register のレジスタバンク番号は 31 以下である必要があります。 328 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4228C S u p p o r t M a n u a l #pragma noregister: `#pragma register' not exist #pragma noregister: 対応する `#pragma register' がありません。 [ 説明 ] #pragma noregister の以前に #pragma register の指定がありません。 E4229C #pragma ilm: syntax error: interrupt level is expected #pragma ilm: 割込みレベルが必要です。 [ 説明 ] #pragma ilm には割込みレベルが必要です。 E4230C #pragma ilm: interrupt level is out of range #pragma ilm: 割込みレベルが範囲を越えています。 [ 説明 ] #pragma ilm の割込みレベルは 7 以下である必要があります。 E4231C #pragma noilm: `#pragma ilm' not exist #pragma noilm: 対応する `#pragma ilm' がありません。 [ 説明 ] #pragma noilm の以前に #pragma ilm の指定がありません。 E4232C #pragma except: `#pragma ssb' exist #pragma except: `#pragma ssb' が存在します。 [ 説明 ] #pragma except は #pragma ssb ~ #pragma nossb の範囲内に記述できません。 E4233C #pragma noexcept: `#pragma except' not exist #pragma noexcept: 対応する `#pragma except' がありません。 [ 説明 ] #pragma noexcept の以前に #pragma except の指定がありません。 E4234C #pragma ssb: `#pragma except' exist #pragma ssb: `#pragma except' が存在します。 [ 説明 ] #pragma ssb は #pragma except ~ #pragma noexcept の範囲内に記述できません。 E4235C #pragma nossb: `#pragma ssb' not exist #pragma nossb: 対応する `#pragma ssb' がありません。 [ 説明 ] #pragma nossb の以前に #pragma ssb の指定がありません。 July 31, 2015, CM42-00328-9 329 付録 付録 E エラーメッセージ一覧 So ft war e E4236C S up po r t M a nu al #pragma register: invalid constant for register bank number #pragma register: レジスタバンク番号が正しくありません。 [ 説明 ] #pragma register のレジスタ番号に正しい整数定数が記述されていません。 E4237C #pragma ilm: invalid constant for interrupt level value #pragma ilm: 割込みレベル値が正しくありません。 [ 説明 ] #pragma ilm の割込みレベル値に正しい整数定数が記述されていません。 E4238C pointer to struct/union type required for left operand: access to member `%I': %O 構造体または共用体へのポインタを記述してください。: メンバ `%I' へのアクセス : %O [ 説明 ] -> 演算子の左辺に構造体または共用体へのポインタ型以外の型が指定されていま す。 struct/union type required for left operand: access to member `%I': %O E4239C 構造体型または共用体型を記述してください。: メンバ `%I' へのア クセス : %O [ 説明 ] . 演算子の左辺に構造体型または共用体型以外の型が指定されています。 E4240C #pragma ilm: interrupt level number should be an integer value without the sign #pragma ilm: 割込みレベル番号は符号のない整数値でなければなり ません。 [ 説明 ] #pragma ilm の割込みレベル番号の記述方法が誤っています。符号のない整数値でな ければなりません。 E4241C invalid restrict qualifier 誤った restrict 型修飾です。 [ 説明 ] restrict 型修飾子が配列型またはポインタ型に作用していません。 E4242C invalid type qualifier in array 配列の誤った型修飾です。 [ 説明 ] 配列の添字と同時に指定できる型修飾子は restrict のみです。 330 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e E4243C S u p p o r t M a n u a l sorry, internal limitation: stack size exceeds 32768 bytes コンパイラ内部制限 : スタックサイズが 32768 バイトを超えました。 [ 説明 ] 1 つの関数内で 32768 バイトを超えてスタックを使用できません。 E4244C array is too large 配列が大きすぎます。 [ 説明 ] 配列の大きさが size_t で表現できません。 E4245C #pragma section: align cannot be specified for INTVECT section. #pragma section: INTVECT セクションに align は指定できません。 [ 説明 ] #pragma section: INTVECT セクションに align は指定できません。 E4246C #pragma %s: align and locate cannot be specified at the same time. #pragma %s: align と locate は同時に指定できません。 [ 説明 ] #pragma %s: align と locate は同時に指定できません。 E4247C enum type cannot be specified for type of bit-field member `%D' ビットフィールド `%D' の型には列挙型を指定できません。 [ 説明 ] ビットフィールド `%D' の型には列挙型を指定できません。 E4248C cannot define enumeration tag: `%E %I' 列挙型タグを定義できません。: `%E %I' [ 説明 ] 列挙型タグを定義できません。: `%E %I' July 31, 2015, CM42-00328-9 331 付録 付録 E エラーメッセージ一覧 So ft war e F9001C S up po r t M a nu al too many errors エラーの個数が多すぎます。 [ 説明 ] エラーの個数が多すぎます。 F9002C detected too many error to terminate compilation 構文エラーの個数が多すぎます。 [ 説明 ] 構文エラーの個数が多すぎます。 F9003C too large message file メッセージファイルに誤りがあります。 [ 説明 ] メッセージファイルに誤りがあります。 F9004C too many messages メッセージファイルに誤りがあります。 [ 説明 ] メッセージファイルに誤りがあります。 F9005C illegal message file メッセージファイルに誤りがあります。 [ 説明 ] メッセージファイルに誤りがあります。 F9006C virtual memory exhausted 作業用のメモリ領域が不足しています。 [ 説明 ] 作業用のメモリ領域が不足しています。 F9007C data file : cannot open %s データファイル : %s をオープンできません。 [ 説明 ] データファイル : %s をオープンできません。 F9008C data file : file read error データファイル : ファイルリードエラーです。 [ 説明 ] データファイル : ファイルリードエラーです。 332 CM42-00328-9, July 31, 2015 付録 付録 E エラーメッセージ一覧 S o ft w a r e F9009C S u p p o r t M a n u a l data file : illegal format %s データファイル : 不正な書式 %s があります。 [ 説明 ] データファイル : 不正な書式 %s があります。 F9010C data file : too many characters of line データファイル : 行の文字数が多過ぎます。 [ 説明 ] データファイル : 行の文字数が多過ぎます。 F9011C data file : mismatch <F>-</F> データファイル : <F> と </F> の組み合わせが一致しません。 [ 説明 ] データファイル : <F> と </F> の組み合わせが一致しません。 F9012C data file : common information cannot describe the multiple データファイル : 共通情報は複数記述できません。 [ 説明 ] データファイル : 共通情報は複数記述できません。 July 31, 2015, CM42-00328-9 333 付録 付録 F C ライブラリのリエントラント性について So ft war e 付録 F S up po r t M a nu al C ライブラリのリエントラント性について C ライブラリのリエントラント性について記述します。 ■ C ライブラリのリエントラント性について ● リエントラント可能な関数一覧 表 F-1 リエントラント可能な関数一覧 334 関数名 ヘッダファイル名 関数名 ヘッダファイル名 abs stdlib.h memmove string.h atoi stdlib.h memset string.h atol stdlib.h strcat string.h bsearch stdlib.h strchr string.h difftime time.h strcmp string.h div stdlib.h strcpy string.h isalnum ctype.h strcspn string.h isalpha ctype.h strlen string.h iscntrl ctype.h strncat string.h isdigit ctype.h strncmp string.h isgraph ctype.h strncpy string.h islower ctype.h strpbrk string.h isprint ctype.h strrchr string.h ispunct ctype.h strspn string.h isspace ctype.h strstr string.h isupper ctype.h tolower ctype.h isxdigit ctype.h toupper ctype.h labs stdlib.h va_arg stdarg.h ldiv stdlib.h va_end stdarg.h memchr string.h va_start stdarg.h memcmp string.h memcpy string.h ( すべての実行時ライブラリ関数 ) CM42-00328-9, July 31, 2015 付録 付録 F C ライブラリのリエントラント性について S o ft w a r e S u p p o r t M a n u a l ● リエントラント不可な関数一覧 表 F-2 リエントラント不可な関数一覧 (1 / 2) July 31, 2015, CM42-00328-9 関数名 ヘッダファイル名 関数名 ヘッダファイル名 abort stdlib.h gets stdio.h acos math.h gmtime time.h asctime time.h ldexp math.h asin math.h localtime time.h assert assert.h log math.h atan math.h log10 math.h atan2 math.h longjmp setjmp.h atexit stdlib.h malloc stdlib.h atof stdlib.h mktime time.h calloc stdlib.h modf math.h ceil math.h pow math.h clearerr stdio.h printf stdio.h cos math.h putc stdio.h cosh math.h putchar stdio.h ctime time.h puts stdio.h exit stdlib.h qsort stdlib.h exp math.h rand stdlib.h fabs math.h realloc stdlib.h fclose stdio.h rewind stdio.h feof stdio.h scanf stdio.h ferror stdio.h setbuf stdio.h fflush stdio.h setjmp setjmp.h fgetc stdio.h setvbuf stdio.h fgetpos stdio.h sin math.h fgets stdio.h sinh math.h floor math.h sprintf stdio.h fmod math.h sqrt math.h fopen stdio.h srand stdlib.h fprintf stdio.h sscanf stdio.h fputc stdio.h stream_init ---- 335 付録 付録 F C ライブラリのリエントラント性について So ft war e S up po r t M a nu al 表 F-2 リエントラント不可な関数一覧 (2 / 2) 336 関数名 ヘッダファイル名 関数名 ヘッダファイル名 fputs stdio.h strftime time.h fread stdio.h strtod stdlib.h free stdlib.h strtok string.h freopen stdio.h strtol stdlib.h frexp math.h strtoul stdlib.h fscanf stdio.h tan math.h fseek stdio.h tanh math.h fsetpos stdio.h ungetc stdio.h ftell stdio.h vfprintf stdio.h fwrite stdio.h vprintf stdio.h getc stdio.h vsprintf stdio.h getchar stdio.h CM42-00328-9, July 31, 2015 付録 付録 G スタンバイ制御マクロ , CPU 間欠動作制御マクロ , ソ フトウェアリセットマクロ S o ft w a r e 付録 G S u p p o r t M a n u a l スタンバイ制御マクロ , CPU 間欠動作制御マクロ , ソフトウェアリセットマクロ スタンバイ制御マクロ , CPU 間欠動作マクロ , ソフトウェアリセットマクロ名につ いて説明します。 スタンバイモード遷移のための低消費電力モード制御レジスタ (LPMCR) へアクセス する際の注意事項に対応しており , スタンバイモードに移行する設定を行う場合に必 要な命令列を展開します。 また , 低消費電力モードレジスタ (LPMCR) で制御できる CPU 間欠動作 , ソフト ウェアリセットの制御マクロも用意されています。 これらのマクロを使用するには , "_standby.h" をインクルードする必要があります。 ■ スタンバイ制御マクロ IO_STOP_HOLD 低消費電力モード制御レジスタ (LPMCR) の SPL ビット =0, STP ビット =1 に設定します。ストップモードまたは疑似時 計モードに遷移します。外部端子のレベルを保持します。 IO_STOP_Z 低消費電力モード制御レジスタ (LPMCR) の SPL ビット =1, STP ビット =1 に設定します。ストップモードまたは疑似時 計モードに遷移します。外部端子のレベルをハイインピーダ ンスにします。 IO_SLEEP 低消費電力モード制御レジスタ (LPMCR) の SPL ビット =1 に設定します。スリープモードに遷移します。 IO_TMD_HOLD 低消費電力モード制御レジスタ (LPMCR) の SPL ビット =0, STP ビット =1 に設定します。時計モードに遷移します。外 部端子のレベルを保持します。 IO_TMD_Z 低消費電力モード制御レジスタ (LPMCR) の SPL ビット =1, STP ビット =1 に設定します。時計モードに遷移します。外 部端子のレベルをハイインピーダンスにします。 IO_SET_LPMCR (IMM) 低消費電力モード制御レジスタ (LPMCR) に IMM に指定した 値が設定されます。 July 31, 2015, CM42-00328-9 337 付録 付録 G スタンバイ制御マクロ , CPU 間欠動作制御マクロ , ソ フトウェアリセットマクロ So ft war e S up po r t M a nu al ■ CPU 間欠動作制御マクロ IO_CG_0 低消費電力モード制御レジスタ (LPMCR) の (CG1,CG0)=(0,0) に設定します。 IO_CG_1 低消費電力モード制御レジスタ (LPMCR) の (CG1,CG0)=(0,1) に設定します。 IO_CG_2 低消費電力モード制御レジスタ (LPMCR) の (CG1,CG0)=(1,0) に設定します。 IO_CG_3 低消費電力モード制御レジスタ (LPMCR) の (CG1,CG0)=(1,1) に設定します。 ■ ソフトウェアリセットマクロ IO_RESET 338 低消費電力モード制御レジスタ (LPMCR) の RST ビットを 0 に設定します。内部リセットが発生します。 CM42-00328-9, July 31, 2015 付録 付録 H 16FX ファミリ TBR レジスタ使用方法 S o ft w a r e 付録 H S u p p o r t M a n u a l 16FX ファミリ TBR レジスタ使用方法 F2MC-16FX ファミリの割込みベクタテーブルベースレジスタ (TBR) を C ソースか ら使用する方法を記述します。 ■ TBR レジスタ使用例 TBR レジスタの使用例を以下に示します。TBR レジスタの詳細については「CM4400203 F2MC-16FX プログラミングマニュアル」を参照してください。 /* TBR_INTERRUPT, TBR_VECT, TBR_LIST の名前は任意に変更可 */ typedef __interrupt __far void TBR_INTERRUPT; typedef TBR_INTERRUPT (* __far TBR_VECT)(void); typedef TBR_VECT TBR_LIST[256]; /* TBR レジスタで割り込みを行う関数名を記載してください */ extern TBR_INTERRUPT func1(void); extern TBR_INTERRUPT func2(void); /* TBR を RAM に配置し , 初期値がない場合は FAR_DATA を指定してください。 NEW_TBR_DATA の名前は任意に変更可。locate は RAM のアドレス (0x400 単位の 境界 ) を指定してください。 */ #pragma segment FAR_DATA=NEW_TBR_DATA, locate=0x1000 TBR_LIST new_tbr_data; /* TBR を RAM に配置し , 初期値がある場合は FAR_DCONST と FAR_INIT を指定し てください。 NEW_TBR_DCONST から NEW_TBR_INIT に転送するコードを加えてください。 NEW_TBR_DCONST と NEW_TBR_INIT の名前は任意に変更可。 FAR_DCONST の locate は ROM のアドレスを指定してください。 FAR_INIT の locate は RAM のアドレス (0x400 単位の境界 ) を指定してください。 */ #pragma segment FAR_DCONST=NEW_TBR_DCONST, locate=0xfe0000 #pragma segment FAR_INIT=NEW_TBR_INIT, locate=0x2000 TBR_LIST new_tbr_ram = {func1}; /* 初期値に割り込み関数名を指 定してください。 配列要素 0 番は INT255 です。使用しない割り込み番号の要素の場合 , 0 を指定して ください */ /* TBR を ROM に配置する場合は FAR_CONST にしてください。 NEW_TBR_ROM の名前は任意に変更可。locate は ROM のアドレス (0x400 単位の 境界 ) を指定してください。 */ #pragma segment FAR_CONST=NEW_TBR_ROM, locate=0xff0000 TBR_LIST const new_tbr_rom = {0, func2}; /* 初期値に割り 込み関数名を指定してください。 配列要素 0 番は INT255 です。使用しない割り込み番号の要素の場合 , 0 を指定して ください */ /* TBR で割り込みを行う関数の定義 */ July 31, 2015, CM42-00328-9 339 付録 付録 H 16FX ファミリ TBR レジスタ使用方法 So ft war e S up po r t M a nu al TBR_INTERRUPT func1(void) { /* 割り込み処理 */ } /* サンプル I/O レジスタファイルを利用する場合 , この 3 行は不要です */ #pragma segment DATA=IO_TBR, locate=0x3A2 #pragma segment FAR_DATA=IO_TBR, locate=0x3A2 volatile unsigned short TBR; /* NEW_TBR_DCONST から NEW_TBR_INIT に転送するコード */ void tbr_init() { __DI(); /* 割込みをマスクしてください */ #pragma asm MOVW A, RW0 PUSHW A MOV A, DTB PUSHW A MOV A, #BNKSEC(NEW_TBR_DCONST) MOV ADB, A MOV A, #BNKSEC(NEW_TBR_INIT) MOV DTB, A MOVW RW0, #SIZEOF(NEW_TBR_INIT) MOVW A, #NEW_TBR_INIT & 0xFFFF MOVW A, #NEW_TBR_DCONST & 0xFFFF MOVSI DTB, ADB POPW A MOV DTB, A POPW A MOVW RW0, A #pragma endasm __EI(); /* 必要があれば , 割込みマスクを解除してください } int { */ main() tbr_init(); TBR (unsigned short) ((unsigned long)new_tbr_rom >> /* TBR の設定 */ /* TBR を変更する場合の式 変数名以外は変更しないでください TBR = (unsigned short) ((unsigned long)new_tbr_ram >> /* TBR の再設定 */ /* TBR を変更する場合の式 変数名以外は変更しないでください 8); */ = new_tbr_ram[1] = func2; /* TBR テーブル要素 (INT254) の変更 8); */ */ } 340 CM42-00328-9, July 31, 2015 付録 付録 I 処理系定義の動作 S o ft w a r e 付録 I S u p p o r t M a n u a l 処理系定義の動作 処理系定義の動作について記述します。 ■ 処理系定義の動作 処理系定義の動作を以下に示します。 JIS X3010-1993 と比較できるように , 処理系定義の動作の項目は JIS 規格と同じ文章 , 章番号を用いています。 表 I-1 処理系定義の動作 (1 / 10) No. JIS 規格の 章番号 処理系定義の項目 本コンパイラの動作 1 5.1.1.3 どのような方法で診断メッ セージを識別するか。 診断メッセージの形式は , 以下のとおりです。 *** ファイル名 ( 行番号 ) エラーコード : エラーメッ セージ 詳細は , 「3.7 翻訳時メッセージ」を参照してくだ さい。 2 5.1.2.2.1 main 関数への実引数の意味。 main 関数の実引数は , ユーザシステムで定義しま す。 3 5.1.2.3 対話型装置がどのようなもの で構成されるか。 対話型装置は , ユーザシステムで定義します。 4 6.1.2 外部結合でない識別子におい 識別子の文字長は , 254 文字までです。 て (31 文字以上の ) 意味がある 詳細は , 「5.15 コンパイラの翻訳限界」を参照して ください。 先頭の文字数。 5 6.1.2 外部結合である識別子におい て (6 文字以上の ) 意味がある 先頭の文字数。 識別子の文字長は , 254 文字までです。 詳細は , 「5.15 コンパイラの翻訳限界」を参照して ください。 6 6.1.2 外部結合である識別子におい て英小文字と英大文字の区別 に意味があるか否か。 英小文字と英大文字を区別します。 詳細は , 「9.1 コンパイラに依存した言語仕様の相違 点」を参照してください。 7 5.2.1 ソース及び実行文字集合の要 素で , この規格で明示的に規 定しているもの以外の要素。 ソース文字集合には , ASCII(JISX0201) に加えて , 以 下の多バイト文字を使用できます。 - Shift-JIS - EUC 実行文字集合についてはユーザシステムで定義され ます。詳細は , 「3.5.4 言語仕様関連オプション」を 参照してください。 8 5.2.1.2 多バイト文字のコード化のた めに使用されるシフト状態。 ソース文字集合には , Shift-JIS 文字コード及び EUC 文字コードで規定されるシフト状態を持ちます。 実行文字集合についてはユーザシステムで定義され ます。 9 5.2.4.2.1 実行文字集合の文字における ビット数。 8 ビットです。 July 31, 2015, CM42-00328-9 341 付録 付録 I 処理系定義の動作 So ft war e S up po r t M a nu al 表 I-1 処理系定義の動作 (2 / 10) No. JIS 規格の 章番号 処理系定義の項目 本コンパイラの動作 10 6.1.3.4 ( 文字定数内及び文字列リテラ ル内の ) ソース文字集合の要 拡張表記 ( エスケープシーケンス ) を除き , ソース文 素と実行文字集合の要素との 字集合と実行文字集合は , 同じ値です。 対応付け。 11 6.1.3.4 基本実行文字集合で表現でき ない文字若しくは拡張表記を 含む単純文字定数の値 , 又は ワイド文字定数に対しては拡 張文字集合で表現できない文 字若しくは拡張表記を含むワ イド文字定数の値。 12 6.1.3.4 先頭から 2 文字を 16 進数で表現した文字コードを並 べた値になります。 ( 例 ) 'ab' = 0x6162 ('a' = 0x61, 'b' = 0x62) 2 文字以上の文字を含む単純文 字定数又は 2 文字以上の多バ 3 文字以上が記述された場合 , 値は無視され , 以下の イト文字を含むワイド文字定 ワーニングが発生します。 W1290C: 多バイト文字定数のキャラクタの指定が多 数の値。 過ぎます。 ワイド文字はサポート対象外です。ワイド文字を使 用した場合の動作は保証しません。 13 6.1.3.4 ワイド文字定数に対して , 多 バイト文字を対応するワイド ワイド文字はサポート対象外です。ワイド文字を使 文字 ( コード ) に変換するため 用した場合の動作は保証しません。 に使用されるロケール。 14 6.2.1.1 デフォルトは , unsigned char 型です。-K SCHAR オ " 単なる "char が signed char と プションを指定することで signed char に変更できま 同じ値の範囲を持つか , す。 unsigned char と同じ値の範囲 詳細は , 「3.5.4 言語仕様関連オプション」を参照し を持つか。 てください。 拡張表記 ( エスケープシーケンス ) を除き , 文字コー ドがそのままの値になります。 単純拡張表記の場合は , 該当する ASCII コードの値 になります。 拡張表記の場合は , 文字コードと 255(0xFF) の論理積 (AND) の値になります。 ワイド文字はサポート対象外です。ワイド文字を使 用した場合の動作は保証しません。 signed char 0 to 255 または -128 to 127 (No.14 の説明を参照 ) -128 to 127 unsigned char 0 to 255 short -32768 to 32767 signed short -32768 to 32767 unsigned short 0 to 65535 int -32768 to 32767 signed int -32768 to 32767 unsigned int 0 to 65535 long -2147483648 to 2147483647 signed long -2147483648 to 2147483647 unsigned long 0 to 4294967295 char 15 6.1.2.5 342 整数の様々な型の表現方法及 び値の集合。 CM42-00328-9, July 31, 2015 付録 付録 I 処理系定義の動作 S o ft w a r e S u p p o r t M a n u a l 表 I-1 処理系定義の動作 (3 / 10) No. JIS 規格の 章番号 処理系定義の項目 本コンパイラの動作 整数をより短い符号付き整数 に変換した結果 , 又は符号無 し整数を長さの等しい符号付 き整数に変換した結果で , 値 が表現できない場合の変換結 果。 整数をより短い符号付き整数に変換する場合 , 上位 バイトの値が捨てられます。同じ長さの変換の場合 ビットパターンは維持されます。 17 6.3 符号付き整数に対してビット 単位の演算を行った結果。 汎整数拡張後のビットパターンの表現にビット演算 が行われます。 (例) signed char var = -1; の場合 var & 0x100 の値は 0x100 になります。 18 6.3.5 整数除算における剰余の符号。 余りがゼロでない場合 , 被除数の符号となります。 19 6.3.7 負の値を持つ符号付き汎整数 型の右シフトの結果。 最上位ビットを保持した算術右シフトになります。 20 6.1.2.5 浮動小数点数の様々な型の表 現方法及び値の集合。 float は IEE754 の単精度に準拠します。 double は IEEE754 の倍精度に準拠します。 long double は IEEE754 の倍精度に準拠します。 詳細は , 「9.2 浮動小数点データの形式と表現でき る値の範囲」を参照してください。 21 6.2.1.3 汎整数の値を元の値に正確に 表現することができない浮動 小数点数に変換する場合の切 捨ての方向。 最近値に丸めます。 詳細は , 「9.3 実行時ライブラリ関数による浮動小 数点データの演算」を参照してください。 22 6.2.1.4 浮動小数点数をより狭い浮動 小数点数に変換する場合の切 捨て又は丸めの方向。 最近値に丸めます。 詳細は , 「9.3 実行時ライブラリ関数による浮動小 数点データの演算」を参照してください。 6.3.3.4, 23 7.1.1 配列の大きさの最大値を保持 するために必要な整数の型。 すなわち , sizeof 演算子の型 size_t。 unsigned int 型です。 16 6.2.1.2 July 31, 2015, CM42-00328-9 343 付録 付録 I 処理系定義の動作 So ft war e S up po r t M a nu al 表 I-1 処理系定義の動作 (4 / 10) No. JIS 規格の 章番号 処理系定義の項目 本コンパイラの動作 __near ポインタが 4 バイト整数型にキャストされた場合 : ローカル変数のアドレスの場合 : 上位 16bit は USB もしくは SSB レジスタの値が入 ります。 ローカル変数のアドレス以外の場合 : 上位 16bit は DTB レジスタの値が入ります。 下位 16bit はビットパターンが維持されます。 __near ポインタが 2 バイト整数型にキャストされた場合 : ビットパターンが維持されます。 __near ポインタが 1 バイト整数型にキャストされた場合 : 上位 1 バイトの値は捨てられる場合と捨てられない場 合があります。確実に下位 1 バイトの値を取得するた めには , 一度 int へキャストした後 , 再度キャストして ください。例 : (char)(int)&var __far ポインタが 4 バイト整数型にキャストされた場合 : ビットパターンが維持されます。 __far ポインタが 2 バイト整数型にキャストされた場合 : 上位 2 バイトの値は捨てられます。 24 6.3.4 ポインタを整数へキャストし た結果 , 及びその逆の場合の 結果。 __far ポインタが 1 バイト整数型にキャストされた場合 : 上位 2 バイトの値は捨てられます。下位 2 バイトの 内 , 上位 1 バイトの値は捨てられる場合と捨てられな い場合があります。確実に下位 1 バイトの値を取得 するためには , 一度 int へキャストした後 , 再度キャ ストしてください。例 : (char)(int)&var 1 バイト整数型が __near ポインタにキャストされた場合 : signed の場合は上位 1 バイトに符号拡張した値が入り ます。 unsigned の場合は上位 1 バイトの値は 0 になります。 1 バイト整数型が __far ポインタにキャストされた場合 : signed の場合は上位 3 バイトに符号拡張した値が入り ます。 unsigned の場合は上位 3 バイトの値は 0 になります。 2 バイト整数型が __near ポインタにキャストされた場合 : ビットパターンが維持されます。 2 バイト整数型が __far ポインタにキャストされた場合 : signed の場合は上位 2 バイトに符号拡張した値が入り ます。 unsigned の場合は上位 2 バイトの値は 0 になります。 4 バイト整数型が __near ポインタにキャストされた場合 : 上位 2 バイトの値は捨てられます。 4 バイト整数型が __far ポインタにキャストされた場合 : ビットパターンが維持されます。 __near __far についての詳細は , 「4.2 メモリモデル」お よび「5.5 16 ビット /24 ビットアドレッシングアクセス 機能」を参照してください。 344 CM42-00328-9, July 31, 2015 付録 付録 I 処理系定義の動作 S o ft w a r e S u p p o r t M a n u a l 表 I-1 処理系定義の動作 (5 / 10) No. JIS 規格の 章番号 処理系定義の項目 本コンパイラの動作 6.3.4, 25 7.1.1 同じ配列内の , 二つの要素へ のポインタ間の差を保持する ために必要な整数の型 , すな わち ptrdiff_t の型。 26 6.5.1 register 記憶域クラス指定子を 使用することによって実際に 各関数の中で最優先されます。 オブジェクトをレジスタに置 くことができる範囲。 27 6.3.2.3 共用体オブジェクトのメンバ を異なる型のメンバを用いて アクセスする場合。 参照したメンバのビットパターンの値になります。 28 6.5.2.1 構造体のメンバの詰め物及び 境界調整。これは , ある処理 系によって書かれたバイナリ データを他の処理系で読まな い限り , 問題とならない。 -pack オプションが指定されていない場合 , メンバの 型サイズで境界調整します。境界調整により発生し た空き領域の値は , 不定値です。 -pack オプションが指定されている場合 , 境界調整し ません。 詳細は , 「4.6 構造体 / 共用体」を参照してくださ い。 29 6.5.2.1 " 単なる "int 型のビットフィー ルドが , signed int のビット フィールドとして扱われるか, unsigned int のビットフィール ドとして扱われるか。 デフォルトは , unsigned int 型です。-K SBIT オプ ションを指定することで , signed int 型に変更できま す。 詳細は , 「3.5.4 言語仕様関連オプション」を参照し てください。 30 6.5.2.1 単位内のビットフィールドの 割付け順序。 -K BITFIELD_ORDER_MSB オプションが指定されて いない場合 , 同じ記憶単位の隣接したビットに , LSB から MSB へ詰め込みます。 -K BITFIELD_ORDER_MSB オプションが指定されて いる場合 , 同じ記憶単位の隣接したビットに , MSB から LSB へ詰め込みます。 詳細は , 「4.5 ビットフィールド」を参照してくだ さい。 31 6.5.2.1 ビットフィールドを記憶域単 位の境界をまたがって割り付 けうるか否か。 記憶域単位の境界をまたがって割り付けません。 詳細は , 「4.5 ビットフィールド」を参照してくだ さい。 32 6.5.2.2 列挙型の値を表現するために 選択される整数型。 int 型です。 July 31, 2015, CM42-00328-9 long 型です。 345 付録 付録 I 処理系定義の動作 So ft war e S up po r t M a nu al 表 I-1 処理系定義の動作 (6 / 10) No. JIS 規格の 章番号 33 6.5.3 処理系定義の項目 本コンパイラの動作 volatile 修飾型のオブジェクトは常にメモリ上に配置 します。 以下のオブジェクトは , 型のバイト幅と一致するア クセスサイズを持つメモリアクセス命令を 1 つ使用 してアクセスします。 ・ 基本型 ・ 列挙型 ・ ポインタ型 ・ ビットフィールド ( ※ ) 以下のオブジェクトは , 4 バイトのメモリアクセス命 令を 2 つ使用してアクセスします。 volatile 修飾型のオブジェクト ・ double 型 へのアクセスをどのように構 ・ long double 型 成するか。 以下の構造体型及び共用体型へのアクセスは , 上記 のようなアクセスを保証しません。 基本型のメンバ変数を使ってアクセスしてください。 volatile struct { int mem;} st1, st2; st1 = st2; func(st1); ( ※ ) ビットフィールドのデータ書き込みの場合 , RMW(Read Modify Write) にならないことがあ ります。 34 6.5.4 346 制限はありません。動作環境で使用できるメモリサ 算術型 , 構造体型又は共用体 イズに依存します。 型を修飾する宣言子の最大数。 詳細は , 「5.15 コンパイラの翻訳限界」を参照して ください。 35 6.6.4.2 switch 文における case 値の最 大数。 制限はありません。動作環境で使用できるメモリサ イズに依存します。ただし , バンクサイズの制限に より関数の大きさは 64 キロバイト以上にできませ ん。 詳細は , 「5.15 コンパイラの翻訳限界」を参照して ください。 36 6.8.1 条件付取り込みを制御する定 数式中の単一文字からなる文 字定数の値が実行文字集合中 の同じ文字定数の値に一致す るか否か。このような文字定 数が負の値を持つことがある か否か。 単一文字の文字定数の値は実行文字集合に一致しま す。 文字定数が負の値を持つことはありません。 CM42-00328-9, July 31, 2015 付録 付録 I 処理系定義の動作 S o ft w a r e S u p p o r t M a n u a l 表 I-1 処理系定義の動作 (7 / 10) No. JIS 規格の 章番号 処理系定義の項目 本コンパイラの動作 37 6.8.2 取り込み可能なソースファイ ルを捜すための方法。 ■ <> で囲まれている場合 (1) 環境変数 INC907 が存在する場合 INC907 に設定されているディレクトリを探索し ます。 (2) 環境変数 FETOOL が存在する場合 %FETOOL%¥lib¥907¥include を探索します。 (3) INC907, FETOOL が存在しない場合 コンパイル時に使用した fcc907s.exe のディレク トリからの相対パス ..¥lib¥907¥include を探索し ます。 ■ "" で囲まれている場合 ソースのディレクトリを探索します。ソースの ディレクトリで見つからない場合 , -I オプション で指定されたディレクトリを探索します。 詳細は , 「1.3 C コンパイラの基本的な機能」を参照 してください。 38 6.8.2 取り込み可能なソースファイ ルに対する " で囲まれた名前 の探索。 ソースのディレクトリを探索します。ソースのディ レクトリで見つからない場合 , -I オプションで指定 されたディレクトリを探索します。 詳細は , 「1.3 C コンパイラの基本的な機能」を参照 してください。 39 6.8.2 ソースファイル名と文字列と の対応付け。 記述されたすべての文字列をパス名として扱います。 バックスラッシュ (¥) はパス区切りとなりエスケープ されません。 40 6.8.6 認識される #pragma 指令の動 以下を参照してください。 作。 「第 5 章 拡張言語仕様」 41 6.8.8 翻訳日付及び翻訳時刻がそれ ぞれ有効でない場合における __DATE__ 及び __TIME__ の 定義。 翻訳日付および翻訳時刻が無効になることはありま せん。 42 7.1.6 マクロ NULL が展開する空ポ インタ定数。 ((void*)0) です。 43 7.2 ■ 診断メッセージ 以下の診断メッセージが出力されます。 < Program Diagnosis *** information of fail expression > assert 関数によって表示される file : __FILE__ で展開されるファイル名 診断メッセージ及び assert 関 line : __LINE__ で展開される行番号 数の終了時の動作。 expression : 式 ■ 終了時の動作 abort 関数の呼び出しと同等です。 44 7.3.1 テストされる文字の集合は以下のとおりです。 ・ isalnum: "0" ~ "9", "a" ~ "z", "A" ~ "Z" isalnum 関数 , isalpha 関数 , ・ isalpha : "a" ~ "z", "A" ~ "Z" iscntrl 関数 , islower 関数 , ・ iscntrl : "¥000"(0x00) ~ "¥037"(0x1F), "¥177"(0x7F) isprint 関数及び isupper 関数に ・ islower : "a" ~ "z" よってテストされる文字集合。 ・ isprint : "¥040"(0x20) ~ "¥176"(0x7E) ・ isupper : "A" ~ "Z" July 31, 2015, CM42-00328-9 347 付録 付録 I 処理系定義の動作 So ft war e S up po r t M a nu al 表 I-1 処理系定義の動作 (8 / 10) No. 348 JIS 規格の 章番号 処理系定義の項目 本コンパイラの動作 45 7.5.1 数学関数に定義域エラーが発 生した場合に返される値。 qNaN が返されます。 46 7.5.1 アンダフロー値域エラーの場 合に , 数学関数がマクロ ERANGE の値を整数式 errno に設定するか否か。 エラーが検出可能な場合は errno に ERANGE の値が 設定されます。 47 7.5.6.4 fmod 関数の第 2 引数が 0 の場 定義域エラーが発生します。 合に , 定義域エラーが発生す NaN が返されます。 るか又は 0 が返されるか。 48 7.7.1.1 signal 関数に対するシグナルの signal 関数はサポートしていません。 集合。 49 7.7.1.1 signal 関数によって認識される signal 関数はサポートしていません。 シグナルの意味。 50 7.7.1.1 signal 関数によって認識される シグナルに対する規定の処理 signal 関数はサポートしていません。 及びプログラム開始時の処理。 51 7.7.1.1 シグナル処理ルーチンの呼出 し前に signal(sig, SIG_DFL); と signal 関数はサポートしていません。 同等のことが実行されない場 合のシグナルの遮断の処置。 52 7.7.1.1 シグナル関数によって指定さ れた処理ルーチンによって SIGILL シグナルが受け付けら signal 関数はサポートしていません。 れる場合に規定の処理が再設 定されるか否か。 53 7.9.2 テキストストリームの最終行 が , 終了を示す改行文字を必 要とするか否か。 ファイル操作は , ユーザシステムの低水準関数の実 装方法に依存します。 54 7.9.2 データが読み取られる時 , 改 行文字の直前にテキストスト リームに書き込まれた空白文 字の並びが現れるか否か。 ファイル操作は , ユーザシステムの低水準関数の実 装方法に依存します。 55 7.9.2 バイナリストリームに書き込 むデータに付加してもよいナ ル文字の個数。 ファイル操作は , ユーザシステムの低水準関数の実 装方法に依存します。 56 7.9.3 追加モードのストリームの ファイル位置表示子が , 最初 ファイル操作は , ユーザシステムの低水準関数の実 にファイルの先頭又は終わり 装方法に依存します。 のどちらに位置付けされるか。 57 7.9.3 テキストストリームへの書込 みが , 結び付けられたファイ ルを最終書込み点の直後で切 り捨てるか否か。 ファイル操作は , ユーザシステムの低水準関数の実 装方法に依存します。 CM42-00328-9, July 31, 2015 付録 付録 I 処理系定義の動作 S o ft w a r e S u p p o r t M a n u a l 表 I-1 処理系定義の動作 (9 / 10) No. JIS 規格の 章番号 処理系定義の項目 本コンパイラの動作 58 7.9.3 ファイルバッファリングの特 「付録 B ライブラリ固有の動作」を参照してくださ 性。 い。 59 7.9.3 長さ 0 のファイルが実際に存 在するか否か。 ファイルシステムまたはファイル操作は , ユーザシ ステムの低水準関数の実装方法に依存します。 60 7.9.3 正しいファイル名の規則。 ファイルシステムまたはファイル操作は , ユーザシ ステムの低水準関数の実装方法に依存します。 61 7.9.3 同一ファイルを複数回オープ ンすることが可能か否か。 ファイルシステムまたはファイル操作は , ユーザシ ステムの低水準関数の実装方法に依存します。 62 7.9.4.1 オープンされているファイル remove 関数はサポートしていません。 に対する remove 関数の効果。 63 7.9.4.2 rename 関数呼出し前に新しい 名前を持つファイルが存在し remove 関数はサポートしていません。 ている場合の効果。 64 7.9.6.1 スモールモデル , ミディアムモデル : 4 桁の 16 進表 記で 4 桁に満たない場合 , 先行する 0 を付加します。 fprintf 関数中の %p 変換による 英字は大文字を使用します。 出力。 ラージモデル , コンパクトモデル : 桁数が 8 桁にな ること以外はスモールモデルと同じです。 65 7.9.6.2 英大文字または英子文字を用いた 16 進表記の数値形 式 , 4 桁 ( スモールモデル , ミディアムモデル ) また fscanf 関数中の %p 変換に対す は 8 桁 ( ラージモデル , コンパクトモデル ) に満たな る入力。 い場合は先行する 0 を付加します。また , 前記の桁 数を超えた場合は下位の部分のみが有効となります。 66 7.9.6.2 fscanf 関数中の %[ 変換におい て文字 - が走査文字の並びの "-" は包含範囲を指す文字として扱われます。 中の最初の文字でも最後の文 ( 例 ) %[a-c] は %[abc] と同等です。 字でもない場合の解釈。 67 7.9.9.1, 7.9.9.4 fgetpos 関数又は ftell 関数が失 敗した場合に , マクロ errno に errno に値を設定しません。 設定される値。 68 7.9.10.4 perror 関数によって生成される perror 関数はサポートしていません。 メッセージ。 69 7.10.3 要求された大きさが 0 の場合 の calloc 関数 , malloc 関数又 は realloc 関数の動作。 NULL を返します。 70 7.10.4.1 オープンされているファイル 及び一時ファイルに関しての abort 関数の動作。 すべてのストリームをフラッシュした後でクローズ します。 71 7.10.4.3 exit 関数の実引数の値が 0, EXIT_SUCCESS 又は EXIT_FAILURE と同じ状態を返します。 EXIT_FAILURE 以外の場合に 返される状態。 July 31, 2015, CM42-00328-9 349 付録 付録 I 処理系定義の動作 So ft war e S up po r t M a nu al 表 I-1 処理系定義の動作 (10 / 10) No. 350 JIS 規格の 章番号 処理系定義の項目 本コンパイラの動作 72 7.10.4.4 getenv 関数によって使われる 環境の名前の集合及び環境の 並びを変更する方法。 getenv 関数はサポートしていません。 73 7.10.4.5 system 関数による文字列の実 行のモード及び内容。 system 関数はサポートしていません。 74 7.11.6.2 strerror 関数によって返される エラーメッセージ文字列の内 strerror 関数はサポートしていません。 容。 75 7.12.1 地方時及び夏時間。 「付録 B ライブラリ固有の動作」を参照してくださ い。 clock 関数はユーザシステムで定義します。 時刻の基点は , 「1970 年 1 月 1 日 00:00:00 (UTC)」 です。 詳細は , 「付録 B ライブラリ固有の動作」を参照し てください。 76 7.12.2.1 clock 関数のための時点。 77 5.1.1.2 翻訳フェーズ 3 において , 改行 文字を除く空白類文字の並び 空白類文字の並びを保持します。 を保持するか , 一つの空白類文 字に置き換えるか。 CM42-00328-9, July 31, 2015 付録 付録 J 主な変更内容 S o ft w a r e 付録 J S u p p o r t M a n u a l 主な変更内容 ページ 場所 変更箇所 Revision 7.1 - - 社名変更および記述フォーマットの変換 Revision 8.0 1 第1章 社名部分を削除 9 第2章 設定例の文字列を変更 33 ● -V オプション 出力例を削除 39 ● -O [level] オプション [level] に x を追加 41 ● -K EOPT オプション 有効動作の最適化レベルを 1 以上と明記 42 ● -K LIB オプション 有効動作の最適化レベルを 1 以上と明記 42 ● -K NOALIAS オプショ ン 有効動作の最適化レベルを 1 以上と明記 43 ● -x 関数名 1 [, 関数名 2, ...] 有効動作の最適化レベルを 1 以上と明記 43 ● -xauto [size] オプション 有効動作の最適化レベルを 1 以上と明記 43 ● -K ARRAY オプション 有効動作の最適化レベルを 1 以上と明記 44 ● -K ACCOPT オプション 有効動作の最適化レベルを 1 以上と明記 44 ● -K BITOPT オプション 有効動作の最適化レベルを 0 以上に変更 20, 21 3.4.1 表 3.4-1 に -c, -K LNKOPT, -splitsection を追加 22 3.4.1 表 3.4-2 に -align のサブオプションとして FUNC1 と FUNC2 を追加 26 3.5.1 ■ 翻訳制御関連オプションと表 3.5-1 に -c を追加 27 3.5.1 ● -c オプションの説明を追加し , 表 3.5-2 に -c の列を 追加 44 3.5.5 ● -K LNKOPT オプションの説明を追加 45 3.5.5 - 2 のべき乗の文から - を削除 51 3.5.6 ● -align に FUNC1 および FUNC2 を追加 #pragma section および #pragma segment との優先順位 の説明を追加 52 3.5.6 ● -splitsection オプションの説明を追加 62 4.1 表 4.1-1 の No7,8,9 の境界整合 (BYTE) の値を 2 のみに 変更 106 5.7 【説明】に -align オプションよりも有効になるセク ションとして CODE を追加 107 5.7 【説明】に -align オプションに関する説明を追加 Revision 9.0 July 31, 2015, CM42-00328-9 351 付録 付録 J 主な変更内容 So ft war e ページ 352 場所 S up po r t M a nu al 変更箇所 119 5.15 表 5.15-1 No.6 の本コンパイラの値を 254 に変更 165 付録 付録 H および付録 I の項目を追加 173 付録 B ● fscanf 関数における %p 書式変換の入力形式にミ ディアムモデルとコンパクトモデルの説明を追加 339 付録 H 付録 H 16FX ファミリ TBR レジスタ使用方法を追加 341 付録 I 付録 I 処理系定義の動作を追加 CM42-00328-9, July 31, 2015 索引 S o ft w a r e S u p p o r t M a n u a l 索引 Numerics A 16 ビット /24 ビットアドレッシングアクセス 16 ビット /24 ビットアドレッシングアクセス機能 ...........................................................................103 _abort 関数 _abort 関数 .............................................................147 ANSI 規格 ANSI 規格で規定されているマクロ .................. 118 asm 文 asm 文による記述方法 ...........................................96 assert.h assert.h ....................................................................166 C c sbrk.c ソースプログラムリスト .......................... 163 clock 関数 clock 関数 ...............................................................149 close 関数 close 関数 .......................................................140, 162 CPU CPU 間欠動作制御マクロ .................................... 338 F2MC-16LX CPU の符号付き除算命令の注意事項 について .......................................................... 177 CPU 間欠動作制御 CPU 間欠動作制御マクロ .................................... 338 ctype.h ctype.h ..................................................................... 166 C コンパイラ C コンパイラの機能 .................................................2 C ライブラリ C ライブラリの リエントラント性について .......................... 334 D direct 領域アクセス direct 領域アクセス機能 ...................................... 101 __divu ビルトイン関数 __divu ビルトイン関数 ........................................ 116 __div ビルトイン関数 __div ビルトイン関数 .......................................... 115 E errno.h errno.h ..................................................................... 166 _exit 関数 _exit 関数 ...............................................................146 July 31, 2015, CM42-00328-9 353 索引 So ft war e M a nu al F M F2MC-16LX F2MC-16LX CPU の符号付き除算命令の注意事項 について ..........................................................177 fcc907s コマンド fcc907s コマンドで定義されている マクロ ..............................................................118 fcc907s コマンドの基本的な処理 ...........................4 fcntl.h fcntl.h ......................................................................169 FELANG FELANG ...................................................................14 FETOOL FETOOL ...................................................................10 float.h float.h ......................................................................166 math.h math.h ..................................................................... 167 __modu ビルトイン関数 __modu ビルトイン関数 ...................................... 117 __mod ビルトイン関数 __mod ビルトイン関数 ........................................ 115 __mulu ビルトイン関数 __mulu ビルトイン関数 .......................................116 __mul ビルトイン関数 __mul ビルトイン関数 .........................................114 H h assert.h .....................................................................166 ctype.h .....................................................................166 errno.h .....................................................................166 fcntl.h ......................................................................169 float.h ......................................................................166 limits.h .....................................................................167 math.h ......................................................................167 setjmp.h ...................................................................170 stdarg.h ....................................................................167 stddef.h ....................................................................167 stdio.h ......................................................................168 stdlib.h .....................................................................168 string.h .....................................................................169 sys/types.h ...............................................................170 time.h .......................................................................170 unistd.h ....................................................................169 I I/O ポート 特殊な I/O ポート .................................................161 I/O 領域アクセス I/O 領域アクセス機能 ..........................................100 INC907 INC907 ......................................................................12 isatty 関数 isatty 関数 .......................................................144, 162 L limits.h limits.h .....................................................................167 lseek 関数 lseek 関数 .......................................................143, 161 354 S up po r t O open 関数 open 関数 ........................................................139, 161 OPT907 OPT907 ..................................................................... 11 R read 関数 read 関数 .........................................................141, 161 ROM 化プログラム ROM 化プログラムの注意事項 .......................... 126 S sbrk.c sbrk.c ソースプログラムリスト .......................... 163 sbrk 関数 sbrk 関数 .........................................................145, 162 setjmp.h setjmp.h ................................................................... 170 stdarg.h stdarg.h ....................................................................167 stddef.h stddef.h ....................................................................167 stdio.h stdio.h ......................................................................168 stdlib.h stdlib.h ..................................................................... 168 string.h string.h ....................................................................169 sys/types.h sys/types.h ...............................................................170 T TBR TBR レジスタ使用例 ............................................ 339 TBR レジスタ TBR レジスタ使用例 ............................................ 339 time.h time.h ......................................................................170 time 関数 time 関数 ................................................................ 150 TMP TMP ..........................................................................13 CM42-00328-9, July 31, 2015 索引 S o ft w a r e S u p p o r t M a n u a l U あ unistd.h unistd.h ....................................................................169 アドレッシング 16 ビット /24 ビットアドレッシング アクセス機能 ..................................................103 W __wait_nop ビルトイン関数 __wait_nop ビルトイン関数 .................................114 write 関数 write 関数 .......................................................142, 161 い 依存関係 排他関係と依存関係 .............................................. 19 引数 引数 ( 引数のスタック渡し ) ................................. 76 引数 ( 引数のレジスタ渡し ) ................................. 84 引数の拡張形式 ( 引数のスタック渡し ) ............. 77 引数の拡張形式 ( 引数のレジスタ渡し ) ............. 86 関数呼び出しインタフェース ( 引数のスタック渡し ) ................................... 73 関数呼び出しインタフェース ( 引数のレジスタ渡し ) ................................... 81 スタックフレーム ( 引数のスタック渡し ) ................................... 74 スタックフレーム ( 引数のレジスタ渡し ) ................................... 82 戻り値 ( 引数のレジスタ渡し ) ............................. 90 呼び出し手続き ( 引数のスタック渡し ) ............. 78 呼び出し手続き ( 引数のレジスタ渡し ) ............. 87 レジスタの設定 ( 引数のスタック渡し ) ............. 79 レジスタの設定 ( 引数のレジスタ渡し ) ............. 89 レジスタの保証 ( 引数のスタック渡し ) ............. 79 レジスタの保証 ( 引数のレジスタ渡し ) ............. 89 インタフェース 新しい関数呼び出しインタフェース ................ 180 関数呼び出しインタフェース ( 引数のスタック渡し ) ................................... 73 関数呼び出しインタフェース ( 引数のレジスタ渡し ) ................................... 81 関数呼び出しインタフェースの 変更の詳細 ......................................................181 関数呼び出しインタフェースの 変更の流れ ......................................................181 割込み関数呼び出しインタフェース .................. 91 インライン展開指定 インライン展開指定機能 .................................... 105 え エラーメッセージ エラーメッセージの見方 .................................... 189 警告とエラーメッセージ .................................... 186 エラーレベル エラーレベル .......................................................... 60 お オープン 標準入出力と標準エラー出力ファイルの オープンおよびクローズ ..............................135 大文字 大文字小文字の区別 .............................................. 19 オプション オプションのシンタックス ..................................19 July 31, 2015, CM42-00328-9 355 索引 So ft war e オプションファイル関連オプション .............25, 56 言語仕様関連オプション .................................25, 36 コマンド関連オプション .................................25, 55 コマンドのオプション一覧 ...................................20 コマンドの取り消しオプション一覧 ...................23 コンパイル処理の過程を制御する オプション ..........................................................4 最適化関連オプション .....................................25, 39 出力オブジェクト関連オプション .................25, 48 情報出力関連オプション .................................25, 31 デバッグ情報関連オプション .........................25, 54 同一オプションの複数指定 ...................................19 プリプロセッサ関連オプション .....................25, 28 翻訳制御関連オプション .................................25, 26 オプションファイル オプションファイル ...............................................57 オプションファイルに 記述できるコメント ........................................57 オプションファイルの制限 ...................................57 オプションファイル関連オプション オプションファイル関連オプション .............25, 56 オペランド コマンドのオペランド ...........................................17 か 拡張形式 引数の拡張形式 ( 引数のスタック渡し ) .............77 引数の拡張形式 ( 引数のレジスタ渡し ) .............86 加算 浮動小数点数の四則演算 ( 加算 , 減算 , 乗算 , 除算 ) .............................155 型変換 整数型から浮動小数点型への型変換 .................156 浮動小数点型から整数型への型変換 .................156 浮動小数点数から浮動小数点数への 型変換 ..............................................................156 間欠動作制御 CPU 間欠動作制御マクロ ....................................338 関数 _abort 関数 .............................................................147 clock 関数 ...............................................................149 close 関数 .......................................................140, 162 __divu ビルトイン関数 ........................................116 __div ビルトイン関数 ..........................................115 _exit 関数 ................................................................146 isatty 関数 .......................................................144, 162 lseek 関数 .......................................................143, 161 __modu ビルトイン関数 ......................................117 __mod ビルトイン関数 ........................................115 __mulu ビルトイン関数 .......................................116 __mul ビルトイン関数 .........................................114 open 関数 ........................................................139, 161 read 関数 .........................................................141, 161 sbrk 関数 .........................................................145, 162 time 関数 .................................................................150 __wait_nop ビルトイン関数 .................................114 write 関数 .......................................................142, 161 時間関数 .................................................................148 時間関数 ( システム依存の処理 ) の種類 ..........131 低水準関数 .............................................................138 356 S up po r t M a nu al 低水準関数 ( システム依存の処理 ) の種類 .................... 131 低水準関数の種類 ................................................136 低水準関数ライブラリの概略 ............................158 標準ライブラリ関数と必要な処理 / 低水準関数 ......................................................137 ライブラリを使用する際に 必要な処理と関数 .......................................... 134 レジスタ退避なしの割込み関数機能 ................ 113 割込み関数記述機能 .............................................. 99 関数呼び出しインタフェース 新しい関数呼び出しインタフェース ................ 180 関数呼び出しインタフェース ( 引数のスタック渡し ) ................................... 73 関数呼び出しインタフェース ( 引数のレジスタ渡し ) ................................... 81 関数呼び出しインタフェースの 変更の詳細 ......................................................181 関数呼び出しインタフェースの 変更の流れ ......................................................181 き 規格 ANSI 規格で規定されているマクロ .................. 118 境界整合 境界整合 .................................................................. 68 共用体 構造体 / 共用体 ....................................................... 71 く クローズ 標準入出力と標準エラー出力ファイルの オープンおよびクローズ ..............................135 け 警告 警告とエラーメッセージ .................................... 186 言語仕様 コンパイラに依存した言語仕様の相違点 ........152 言語仕様関連オプション 言語仕様関連オプション ................................ 25, 36 検索 ヘッダファイルの検索 ............................................ 6 減算 浮動小数点数の四則演算 ( 加算 , 減算 , 乗算 , 除算 ) ............................155 こ 構造体 構造体 / 共用体 ....................................................... 71 コマンド fcc907s コマンドで定義されている マクロ .............................................................. 118 fcc907s コマンドの基本的な処理 ...........................4 コマンド行 .............................................................. 16 コマンド行での位置 .............................................. 19 コマンドのオプション一覧 ..................................20 CM42-00328-9, July 31, 2015 索引 S o ft w a r e S u p p o r t M a n u a l コマンドのオペランド ...........................................17 コマンドの処理 .......................................................16 コマンドの取り消しオプション一覧 ...................23 コマンド関連オプション コマンド関連オプション .................................25, 55 コマンド行 コマンド行 ...............................................................16 コマンド行での位置 ...............................................19 コメント オプションファイルに記述できるコメント .......57 小文字 大文字小文字の区別 ...............................................19 固有の動作 ライブラリ固有の動作 .........................................171 コンパイラ C コンパイラの機能 .................................................2 コンパイラで使用する名前の生成規則 ...............67 コンパイラに依存した言語仕様の相違点 .........152 コンパイラの翻訳限界 .........................................119 コンパイル コンパイル処理の過程を 制御するオプション ..........................................4 乗算 浮動小数点数の四則演算 ( 加算 , 減算 , 乗算 , 除算 ) ............................155 情報出力関連オプション 情報出力関連オプション ................................ 25, 31 使用例 TBR レジスタ使用例 ............................................ 339 初期化 初期化処理 / 終了処理 .........................................135 ストリーム領域の初期化 .................................... 135 初期化処理 初期化処理 ............................................................ 159 初期化処理 / 終了処理 .........................................135 除算 浮動小数点数の四則演算 ( 加算 , 減算 , 乗算 , 除算 ) ............................155 処理系定義 処理系定義の動作 ................................................341 シンタックス オプションのシンタックス ..................................19 シンボリックデバッガ シンボリックデバッガとの連携 ............................ 7 さ す 最適化 最適化 .........................................................................7 最適化レベルごとに実施する 最適化について ................................................45 最適化関連オプション 最適化関連オプション .....................................25, 39 最適化レベル 最適化レベルごとに実施する 最適化について ................................................45 スタートアップルーチン スタートアップルーチンの作成 ........................ 124 スタックバンク スタックバンクの自動判別機能 ........................ 112 スタックフレーム スタックフレーム ( 引数のスタック渡し ) ................................... 74 スタックフレーム ( 引数のレジスタ渡し ) ................................... 82 割込みスタックフレーム ...................................... 92 スタック渡し 引数 ( 引数のスタック渡し ) ................................. 76 引数の拡張形式 ( 引数のスタック渡し ) ............. 77 関数呼び出しインタフェース ( 引数のスタック渡し ) ................................... 73 スタックフレーム ( 引数のスタック渡し ) ................................... 74 呼び出し手続き ( 引数のスタック渡し ) ............. 78 レジスタの設定 ( 引数のスタック渡し ) ............. 79 レジスタの保証 ( 引数のスタック渡し ) ............. 79 スタンバイ制御 スタンバイ制御マクロ ........................................ 337 ストリーム領域 ストリーム領域の初期化 .................................... 135 し 時間関数 時間関数 .................................................................148 時間関数 ( システム依存の処理 ) の種類 ..........131 識別子 ツール識別子 ...........................................................59 システム依存 時間関数 ( システム依存の処理 ) の種類 ..........131 システム依存の処理 .............................................131 低水準関数 ( システム依存の処理 ) の種類 .....................131 システムスタック システムスタックの利用指定機能 .....................111 四則演算 浮動小数点数の四則演算 ( 加算 , 減算 , 乗算 , 除算 ) .............................155 実行処理 実行処理の概要 .....................................................122 自動判別 スタックバンクの自動判別機能 .........................112 シミュレータデバッガ シミュレータデバッガの設定 .............................160 終了処理 初期化処理 / 終了処理 .........................................135 出力オブジェクト関連オプション 出力オブジェクト関連オプション .................25, 48 July 31, 2015, CM42-00328-9 せ 整数型 整数型から浮動小数点型への型変換 ................ 156 浮動小数点型から整数型への型変換 ................ 156 生成規則 コンパイラで使用する名前の生成規則 ..............67 セクション セクション構成 ......................................................62 セクション名の変更機能 .................................... 106 ライブラリのセクション名 ................................130 357 索引 So ft war e セクション名 セクション名の変更機能 .....................................106 ライブラリのセクション名 .................................130 設定 シミュレータデバッガの設定 .............................160 タイムゾーンの設定 .............................................135 レジスタの設定 ( 引数のスタック渡し ) .............79 レジスタの設定 ( 引数のレジスタ渡し ) .............89 そ ソースプログラムリスト sbrk.c ソースプログラムリスト ..........................163 ソフトウェアリセット ソフトウェアリセットマクロ .............................338 た タイムゾーン タイムゾーンの設定 .............................................135 つ ツール ツール識別子 ...........................................................59 て 定義 処理系定義の動作 .................................................341 低水準関数 低水準関数 .............................................................138 低水準関数 ( システム依存の処理 ) の種類 .....................131 低水準関数の種類 .................................................136 標準ライブラリ関数と必要な処理 / 低水準関数 ......................................................137 低水準関数ライブラリ 低水準関数ライブラリの概略 .............................158 ディレクトリ名 ファイル名とディレクトリ名 ...............................18 手続き 割込み関数呼び出し手続き ...................................93 デバッグ情報関連オプション デバッグ情報関連オプション .........................25, 54 デフォルトオプションファイル デフォルトオプションファイル ...........................58 と 同一オプション 同一オプションの複数指定 ...................................19 動的確保領域 動的確保領域の変更 .............................................163 取り消しオプション コマンドの取り消しオプション一覧 ...................23 358 S up po r t M a nu al な 名前の生成規則 コンパイラで使用する名前の生成規則 ..............67 は 排他関係 排他関係と依存関係 .............................................. 19 バンク レジスタバンク番号の設定機能 ........................ 109 ひ 比較 浮動小数点数の比較 ............................................ 155 ビットフィールド ビットフィールド ..................................................69 標準エラー出力ファイル 標準入出力と標準エラー出力ファイルの オープンおよびクローズ ..............................135 標準入出力 標準入出力と標準エラー出力ファイルの オープンおよびクローズ ..............................135 標準ライブラリ関数 標準ライブラリ関数と必要な処理 / 低水準関数 ......................................................137 ビルトイン関数 __divu ビルトイン関数 ........................................ 116 __div ビルトイン関数 .......................................... 115 __modu ビルトイン関数 ...................................... 117 __mod ビルトイン関数 ........................................ 115 __mulu ビルトイン関数 .......................................116 __mul ビルトイン関数 .........................................114 __wait_nop ビルトイン関数 ................................114 ふ ファイル 標準入出力と標準エラー出力ファイルの オープンおよびクローズ ..............................135 ファイルシステム ファイルシステムの概略 .................................... 158 ファイルの構成 ファイルの構成 ....................................................128 ファイル名 ファイル名とディレクトリ名 ..............................18 複数指定 同一オプションの複数指定 ..................................19 符号付き除算命令 F2MC-16LX CPU の符号付き除算命令の 注意事項について .......................................... 177 浮動小数点 浮動小数点データの形式と 表現できる値の範囲 ...................................... 154 浮動小数点型 整数型から浮動小数点型への型変換 ................ 156 浮動小数点型から整数型への型変換 ................ 156 浮動小数点数 浮動小数点数から浮動小数点数への 型変換 .............................................................. 156 CM42-00328-9, July 31, 2015 索引 S o ft w a r e S u p p o r t 浮動小数点数の四則演算 ( 加算 , 減算 , 乗算 , 除算 ) .............................155 浮動小数点数の比較 .............................................155 浮動小数点データ 浮動小数点データの形式と 表現できる値の範囲 ......................................154 プラグマ指令 プラグマ指令による記述方法 ...............................97 プリプロセッサ関連オプション プリプロセッサ関連オプション .....................25, 28 プログラム ROM 化プログラムの注意事項 ..........................126 へ ベクタテーブル 割込みベクタテーブル生成機能 ...........................99 ヘッダファイル ヘッダファイルの検索 .............................................6 ほ 保証 レジスタの保証 ( 引数のスタック渡し ) .............79 レジスタの保証 ( 引数のレジスタ渡し ) .............89 翻訳限界 コンパイラの翻訳限界 .........................................119 翻訳時メッセージ 翻訳時メッセージ ...................................................59 翻訳制御関連オプション 翻訳制御関連オプション .................................25, 26 ま マクロ ANSI 規格で規定されているマクロ ..................118 CPU 間欠動作制御マクロ ....................................338 fcc907s コマンドで 定義されているマクロ ..................................118 スタンバイ制御マクロ .........................................337 ソフトウェアリセットマクロ .............................338 マスク 割込みマスク解除機能 ...........................................98 割込みマスク設定機能 ...........................................98 め 命令 F2MC-16LX CPU の符号付き除算命令の 注意事項について ..........................................177 メモリ メモリモデル ...........................................................65 も 戻り値 戻り値 .......................................................................80 戻り値 ( 引数のレジスタ渡し ) .............................90 July 31, 2015, CM42-00328-9 M a n u a l よ 呼び出し手続き 呼び出し手続き ( 引数のスタック渡し ) ............. 78 呼び出し手続き ( 引数のレジスタ渡し ) ............. 87 ら ライブラリ C ライブラリの リエントラント性について .......................... 334 低水準関数ライブラリの概略 ............................158 標準ライブラリ関数と必要な処理 / 低水準関数 ......................................................137 ライブラリ固有の動作 ........................................ 171 ライブラリのセクション名 ................................130 ライブラリを使用する際に必要な 処理と関数 ......................................................134 り リエントラント性 C ライブラリの リエントラント性について .......................... 334 リセット ソフトウェアリセットマクロ ............................338 領域管理 領域管理 ................................................................ 158 れ レジスタ レジスタの設定 ( 引数のスタック渡し ) ............. 79 レジスタの設定 ( 引数のレジスタ渡し ) ............. 89 レジスタの保証 ( 引数のスタック渡し ) ............. 79 レジスタの保証 ( 引数のレジスタ渡し ) ............. 89 TBR レジスタ使用例 ............................................ 339 レジスタ退避 レジスタ退避なしの割込み関数機能 ................ 113 レジスタバンク レジスタバンク番号の設定機能 ........................ 109 レジスタ渡し 引数 ( 引数のレジスタ渡し ) ................................. 84 引数の拡張形式 ( 引数のレジスタ渡し ) ............. 86 関数呼び出しインタフェース ( 引数のレジスタ渡し ) ................................... 81 スタックフレーム ( 引数のレジスタ渡し ) ................................... 82 戻り値 ( 引数のレジスタ渡し ) ............................. 90 呼び出し手続き ( 引数のレジスタ渡し ) ............. 87 レジスタの設定 ( 引数のレジスタ渡し ) ............. 89 レジスタの保証 ( 引数のレジスタ渡し ) ............. 89 レベル エラーレベル .......................................................... 60 最適化レベルごとに実施する 最適化について ................................................ 45 割込みレベル設定機能 .......................................... 99 割込みレベルの設定機能 .................................... 110 359 索引 So ft war e ろ ロードモジュール ロードモジュールの作成 .....................................159 わ 割込み レジスタ退避なしの割込み関数機能 .................113 割込み関数記述機能 ...............................................99 割込みスタックフレーム .......................................92 割込みベクタテーブル生成機能 ...........................99 割込みマスク解除機能 ...........................................98 割込みマスク設定機能 ...........................................98 割込みレベル設定機能 ...........................................99 割込みレベルの設定機能 .....................................110 割込み関数 レジスタ退避なしの割込み関数機能 .................113 割込み関数記述機能 ...............................................99 360 S up po r t M a nu al 割込み関数呼び出し 割込み関数呼び出しインタフェース .................. 91 割込み関数呼び出し手続き ..................................93 割込み関数呼び出しインタフェース 割込み関数呼び出しインタフェース .................. 91 割込み関数呼び出し手続き 割込み関数呼び出し手続き ..................................93 割込みスタックフレーム 割込みスタックフレーム ...................................... 92 割込みベクタテーブル 割込みベクタテーブル生成機能 .......................... 99 割込みマスク 割込みマスク解除機能 .......................................... 98 割込みマスク設定機能 .......................................... 98 割込みレベル 割込みレベル設定機能 .......................................... 99 割込みレベルの設定機能 .................................... 110 CM42-00328-9, July 31, 2015 S o ft w a r e S u p p o r t M a n u a l 奥付 CM42-00328-9 Spansion • SOFTWARE SUPPORT MANUAL F2MC-16 ファミリ SOFTUNE® C コンパイラマニュアル 2015 年 7 月 Rev. 9.0 発行 Spansion Inc. 編集 コーポレートコミュニケーション部 July 31, 2015, CM42-00328-9 361 So ft war e S up po r t M a nu al 免責事項 本資料に記載された製品は、通常の産業用 , 一般事務用 , パーソナル用 , 家庭用などの一般的用途 ( ただし、用途の限定はあ りません ) に使用されることを意図して設計・製造されています。(1) 極めて高度な安全性が要求され、仮に当該安全性が 確保されない場合、社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途 ( 原子力施設における 核反応制御 , 航空機自動飛行制御 , 航空交通管制 , 大量輸送システムにおける運行制御 , 生命維持のための医療機器 , 兵器シ ステムにおけるミサイル発射制御等をいう ) 、ならびに (2) 極めて高い信頼性が要求される用途 ( 海底中継器 , 宇宙衛星等を いう ) に使用されるよう設計・製造されたものではありません。上記の製品の使用法によって惹起されたいかなる請求また は損害についても、Spansion は、お客様または第三者、あるいはその両方に対して責任を一切負いません。半導体デバイス はある確率で故障が発生します。当社半導体デバイスが故障しても、結果的に人身事故 , 火災事故 , 社会的な損害を生じさ せないよう、お客様において、装置の冗長設計 , 延焼対策設計 , 過電流防止対策設計 , 誤動作防止設計などの安全設計をお 願いします。本資料に記載された製品が、外国為替及び外国貿易法、米国輸出管理関連法規などの規制に基づき規制され ている製品または技術に該当する場合には、本製品の輸出に際して、同法に基づく許可が必要となります。 商標および注記 このドキュメントは、断りなく変更される場合があります。本資料には Spansion が開発中の Spansion 製品に関する情報が 記載されている場合があります。Spansion は、それらの製品に対し、予告なしに仕様を変更したり、開発を中止したりする 権利を有します。このドキュメントに含まれる情報は、現状のまま、保証なしに提供されるものであり、その正確性 , 完全 性 , 実施可能性および特定の目的に対する適合性やその市場性および他者の権利を侵害しない事を保証するものでなく、ま た、明示 , 黙示または法定されているあらゆる保証をするものでもありません。Spansion は、このドキュメントに含まれる 情報を使用することにより発生したいかなる損害に対しても責任を一切負いません。 Copyright ©2004-2015 Cypress All rights reserved. 商標:Spansion®, Spansion ロゴ ( 図形マーク ), MirrorBit®, MirrorBit® EclipseTM, ORNANDTM 及びこれらの組合せは、米国・ 日本ほか諸外国における Spansion LLC の商標です。第三者の社名・製品名等の記載はここでは情報提供を目的として表記 したものであり、各権利者の商標もしくは登録商標となっている場合があります。 362 CM42-00328-9, July 31, 2015
© Copyright 2024 ExpyDoc