F MC-16 ファミリ

F2MC-16 ファミリ
SOFTUNE® C コンパイラマニュアル
Software Support Manual
Publication Number CM42-00328
MB90880ÉVÉäÅ[ÉY Cover Sheet
Revision 8.0
Issue Date July 1, 2014
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 1, 2014, CM42-00328-8
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)。
■ 文法書
C 言語の文法および標準ライブラリ関数については , ANSI 規格に準拠した参考書が市
販されておりますので , それらを参照してください。
ii
CM42-00328-8, July 1, 2014
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 1, 2014, CM42-00328-8
iii
So ft war e
iv
S up po r t
M a nu al
CM42-00328-8, July 1, 2014
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
コマンドの取り消しオプション一覧 .......................................................................... 22
3.5 オプションの詳細 ................................................................................................................. 24
3.5.1
翻訳制御関連オプション ............................................................................................ 25
3.5.2
プリプロセッサ関連オプション ................................................................................. 27
3.5.3
情報出力関連オプション ............................................................................................ 30
3.5.4
言語仕様関連オプション ............................................................................................ 35
3.5.5
最適化関連オプション ............................................................................................... 38
3.5.6
出力オブジェクト関連オプション.............................................................................. 47
3.5.7
デバッグ情報関連オプション..................................................................................... 52
3.5.8
コマンド関連オプション ............................................................................................ 53
3.5.9
オプションファイル関連オプション .......................................................................... 54
3.6 オプションファイル ............................................................................................................. 55
3.7 翻訳時メッセージ ................................................................................................................. 57
第4章
オブジェクトプログラムの構成............................................................... 59
4.1 セクション構成 .................................................................................................................... 60
4.2 メモリモデル ........................................................................................................................ 63
4.3 コンパイラで使用する名前の生成規則................................................................................. 65
4.4 境界整合 ............................................................................................................................... 66
4.5 ビットフィールド ................................................................................................................. 67
4.6 構造体 / 共用体 ..................................................................................................................... 69
4.7 関数呼び出しインタフェース ( 引数のスタック渡し ) ......................................................... 71
4.7.1
スタックフレーム ( 引数のスタック渡し ) ................................................................. 72
4.7.2
引数 ( 引数のスタック渡し )....................................................................................... 74
4.7.3
引数の拡張形式 ( 引数のスタック渡し )..................................................................... 75
4.7.4
呼び出し手続き ( 引数のスタック渡し )..................................................................... 76
July 1, 2014, CM42-00328-8
v
So ft war e
S up po r t
M a nu al
4.7.5
レジスタ ( 引数のスタック渡し )................................................................................ 77
4.7.6
戻り値 ( 引数のスタック渡し ) ................................................................................... 78
4.8 関数呼び出しインタフェース ( 引数のレジスタ渡し ) ......................................................... 79
4.8.1
スタックフレーム ( 引数のレジスタ渡し ) ................................................................. 80
4.8.2
引数 ( 引数のレジスタ渡し )....................................................................................... 82
4.8.3
引数の拡張形式 ( 引数のレジスタ渡し )..................................................................... 84
4.8.4
呼び出し手続き ( 引数のレジスタ渡し )..................................................................... 85
4.8.5
レジスタ ( 引数のレジスタ渡し )................................................................................ 87
4.8.6
戻り値 ( 引数のレジスタ渡し ) ................................................................................... 88
4.9 割込み関数呼び出しインタフェース .................................................................................... 89
4.9.1
割込みスタックフレーム ............................................................................................ 90
4.9.2
割込み関数呼び出し手続き ........................................................................................ 91
第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章
拡張言語仕様............................................................................................ 93
アセンブラ記述機能 ............................................................................................................. 94
割込み制御機能 .................................................................................................................... 96
I/O 領域アクセス機能 ........................................................................................................... 98
direct 領域アクセス機能 ....................................................................................................... 99
16 ビット /24 ビットアドレッシングアクセス機能............................................................ 101
インライン展開指定機能 .................................................................................................... 103
セクション名の変更機能 .................................................................................................... 104
レジスタバンク番号の設定機能 ......................................................................................... 107
割込みレベルの設定機能 .................................................................................................... 108
システムスタックの利用指定機能...................................................................................... 109
スタックバンクの自動判別機能 ......................................................................................... 110
レジスタ退避なしの割込み関数機能 .................................................................................. 111
ビルトイン関数 .................................................................................................................. 112
既定義マクロ ...................................................................................................................... 116
コンパイラの翻訳限界........................................................................................................ 117
実行環境................................................................................................. 119
実行処理の概要 .................................................................................................................. 120
スタートアップルーチンの作成 ......................................................................................... 122
ROM 化プログラムの注意事項........................................................................................... 124
ライブラリの概要 .................................................................................. 125
ファイルの構成 .................................................................................................................. 126
組み込むシステムとの関係................................................................................................. 129
ライブラリの組込み............................................................................... 131
8.1 ライブラリの組込みの概略................................................................................................. 132
8.2 ライブラリを使用する際に必要な初期化処理 / 終了処理................................................... 133
8.3 低水準関数の種類 ............................................................................................................... 134
8.4 標準ライブラリと必要な処理 / 低水準関数 ........................................................................ 135
8.5 低水準関数の仕様 ............................................................................................................... 136
8.5.1
open 関数 ................................................................................................................. 137
8.5.2
close 関数 ................................................................................................................. 138
8.5.3
read 関数 .................................................................................................................. 139
8.5.4
write 関数.................................................................................................................. 140
vi
CM42-00328-8, July 1, 2014
S o ft w a r e
S u p p o r t
M a n u a l
8.5.5
lseek 関数 ................................................................................................................. 141
8.5.6
isatty 関数 ................................................................................................................. 142
8.5.7
sbrk 関数................................................................................................................... 143
8.5.8
_exit 関数.................................................................................................................. 144
8.5.9
_abort 関数 ............................................................................................................... 145
8.6 時間関数の仕様 .................................................................................................................. 146
8.6.1
clock 関数 ................................................................................................................. 147
8.6.2
time 関数................................................................................................................... 148
第9章
9.1
9.2
9.3
コンパイラにより異なる仕様 ................................................................ 149
コンパイラに依存した言語仕様の相違点 ........................................................................... 150
浮動小数点データの形式と表現できる値の範囲 ................................................................ 152
実行時ライブラリ関数による浮動小数点データの演算 ..................................................... 153
第 10 章
10.1
10.2
10.3
10.4
低水準関数ライブラリの概略 ............................................................................................. 156
低水準関数ライブラリの利用 ............................................................................................. 157
低水準関数の機能 ............................................................................................................... 159
低水準関数ライブラリの変更 ............................................................................................. 161
付録
付録 A
付録 B
付録 C
付録 D
付録 E
付録 F
付録 G
付録 H
索引
シミュレータデバッガ用低水準関数ライブラリ.................................... 155
................................................................................................................163
型 , マクロ , 変数 , 関数一覧 ........................................................................................... 164
ライブラリ固有の動作.................................................................................................... 169
F2MC-16LX CPU の符号付き除算命令の注意事項について .......................................... 175
関数呼び出しインタフェース変更ガイド....................................................................... 178
エラーメッセージ一覧.................................................................................................... 187
C ライブラリのリエントラント性について ................................................................... 332
スタンバイ制御マクロ , CPU 間欠動作制御マクロ ,
ソフトウェアリセットマクロ......................................................................................... 335
主な変更内容 .................................................................................................................. 337
................................................................................................................339
July 1, 2014, CM42-00328-8
vii
So ft war e
viii
S up po r t
M a nu al
CM42-00328-8, July 1, 2014
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 1, 2014, CM42-00328-8
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
7
第 1 章 SOFTUNE C コンパイラの 概要
1.3 C コンパイラの基本的な機能
So ft war e
8
S up po r t
M a nu al
CM42-00328-8, July 1, 2014
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 1, 2014, CM42-00328-8
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
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-8, July 1, 2014
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 1, 2014, CM42-00328-8
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
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
前処理結果にコメントを残す。
-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 NOALIAS
異なるポインタは同一領域を指さないとして最適化する。
-K NOINTLIB
割込み関連関数をインライン展開しない。
-K NOUNROLL
ループアンローリング抑止。
-K NOVOLATILE
_ _ io 修飾変数を volatile と見なさない。
-K REALOS
ITRON システムコール関数をインライン展開する。
CM42-00328-8, July 1, 2014
第 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 {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] ]
セクション名を変更する。
-T item, arg1 [, arg2...]
ツールに引数を渡す。
-U name
マクロ name の定義を取り消す。
-V
実行されたコンパイラ・ツールのバージョン情報を , 標準出力に出力する。
-w level
警告メッセージの出力レベルを指定する。
-Xdof
デフォルトオプションファイルの読み込みを抑止する。
-x func [, fun2...]
関数のインライン展開を指定する。
-xauto [size]
論理行が size 行以上の関数をインライン展開の対象とする。
-Y item, dir
item の位置を dir に変更する。
表 3.4-2 コマンドのオプション一覧
指定形式
機能概要
-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}
__direct 型修飾子が指定された変数の境界整合値を
指定する。
-rp
関数の引数をレジスタ渡しにする。
-dF
__direct 型修飾子を有効利用する。
July 1, 2014, CM42-00328-8
21
第 3 章 C コンパイラの操作
3.4 コマンドのオプション
So ft war e
3.4.2
S up po r t
M a nu al
コマンドの取り消しオプション一覧
コマンドのオプションを個別に取り消すオプションです。コマンドの取り消しオプ
ションの一覧を表 3.4-3 および表 3.4-4 に示します。
■ コマンドの取り消しオプション一覧
表 3.4-3 コマンドの取り消しオプション一覧
指定形式
22
機能概要
-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 に対する指定を取り消す。
CM42-00328-8, July 1, 2014
第 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-4 コマンドの取り消しオプション一覧
指定形式
機能概要
-K NOACCOPT
ACCOPT サブオプションを取り消す。
-K NOADDSP
ADDSP サブオプションを取り消す。
-K NOARRAY
ARRAY サブオプションを取り消す。
-K NOBITOPT
BITOPT サブオプションを取り消す。
-Xpack
-pack オプションを取り消す。
-Xdiv905
-div905 オプションを取り消す。
-Xramconst
-ramconst オプションを取り消す。
-Xalign
-align オプションを取り消す。
-Xrp
-rp オプションを取り消す。
-XdF
-dF オプションを取り消す。
July 1, 2014, CM42-00328-8
23
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
3.5
S up po r t
M a nu al
オプションの詳細
ここでは , オプションの詳細について説明します。
■ 翻訳制御関連オプション
翻訳制御関連オプションは , プリプロセッサ , コンパイラ , アセンブラの呼び出し制御
に関連するオプションです。
■ プリプロセッサ関連オプション
プリプロセッサ関連オプションは , プリプロセッサの動作に関連するオプションです。
■ 情報出力関連オプション
情報出力関連オプションは , コマンド , プリプロセッサやコンパイラの情報出力に関連
するオプションです。
■ 言語仕様関連オプション
言語仕様関連オプションは , コンパイラが認識する言語仕様に関連するオプションで
す。
■ 最適化関連オプション
最適化関連オプションは , コンパイラが施す最適化に関連するオプションです。
■ 出力オブジェクト関連オプション
出力オブジェクト関連オプションは , 出力するオブジェクトの形式に関連するオプ
ションです。
■ デバッグ情報関連オプション
デバッグ情報関連オプションは , シンボリックデバッガが参照するデバッグ情報に関
連するオプションです。
■ コマンド関連オプション
コマンド関連オプションは , コマンドが呼び出す他のツールに関連するオプションで
す。
■ オプションファイル関連オプション
オプションファイル関連オプションは , オプションファイルに関連するオプションで
す。
24
CM42-00328-8, July 1, 2014
第 3 章 C コンパイラの操作
3.5 オプションの詳細
S o ft w a r e
3.5.1
S u p p o r t
M a n u a l
翻訳制御関連オプション
翻訳制御関連オプションは , プリプロセッサ , コンパイラ , およびアセンブラの呼び
出し制御に関するオプションです。
■ 翻訳制御関連オプション
翻訳制御関連オプションは , 次に示す優先順位を持ちます。指定した順序は関係ありま
せん。
-E > -P > -S
翻訳制御関連オプションの排他関係を表 3.5-1 に示します。
表 3.5-1 翻訳制御関連オプションの排他関係
指定されたオプション
無効となるオプション
-E
-S
-P
-S
-S
なし
-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 に出力します。
July 1, 2014, CM42-00328-8
25
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
S up po r t
M a nu al
● -S オプション
-S オプションは , コンパイルまでの処理を行い , 拡張子を .asm に変更したファイルに
結果のアセンブラソースを出力します。もし入力ファイルが C ソースファイルまたは
前処理済 C ソースファイルでないときには , 何もしません。
【例】
>fcc907s -S
-cpu
MB90F553A
sample.c
sample.c に対して前処理およびコンパイル処理を行った結果を sample.asm に出力しま
す。
ファイルの種別と翻訳制御関連オプションに対して行われる処理の関係を , 表 3.5-2 に
示します。
表 3.5-2 ファイル種別と翻訳制御関連オプションに対して行われる処理の関係
オプションファイル種別 ( 拡張子 )
-E
-P
-S
指定なし
C ソースファイル (.c)
P
P
P, C
P, C, A
前処理済 C ソースファイル (.i)
-
-
C
C, A
アセンブラソースファイル (.asm)
-
-
-
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 が生成されます。
26
CM42-00328-8, July 1, 2014
第 3 章 C コンパイラの操作
3.5 オプションの詳細
S o ft w a r e
3.5.2
S u p p o r t
M a n u a l
プリプロセッサ関連オプション
プリプロセッサ関連オプションは , プリプロセッサの動作に関するオプションです。
プリプロセッサの呼び出しが行われないときには , プリプロセッサ関連オプション
は無効になります。
■ プリプロセッサ関連オプション
以下に , プリプロセッサ関連オプションについて説明します。
● -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 でマクロ定義されたものとして処理します。
July 1, 2014, CM42-00328-8
27
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
S up po r t
M a nu al
● -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. 標準のディレクトリ
28
CM42-00328-8, July 1, 2014
第 3 章 C コンパイラの操作
3.5 オプションの詳細
S o ft w a r e
S u p p o r t
M a n u a l
ヘッダファイルが絶対パス名で指定されたときには , 指定された絶対パス名のみ検索
します。もし存在しない 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 の定義を取り消します。
July 1, 2014, CM42-00328-8
29
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
3.5.3
S up po r t
M a nu al
情報出力関連オプション
情報出力関連オプションは , コマンド , プリプロセッサ , およびコンパイラの情報出
力に関するオプションです。
■ 情報出力関連オプション
● -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 アセンブラマニュア
ル』を参照してください。
30
CM42-00328-8, July 1, 2014
第 3 章 C コンパイラの操作
3.5 オプションの詳細
S o ft w a r e
S u p p o r t
M a n u a l
なお , 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}
...
#
July 1, 2014, CM42-00328-8
4
E
_func
->
E
_sub
31
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
S up po r t
M a nu al
● -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' は初期設定されていません。
32
CM42-00328-8, July 1, 2014
第 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 警告レベルごとの警告項目
警告レベル
July 1, 2014, CM42-00328-8
警告項目
レベル 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' が指定された場合について警告を発す
る。
プロトタイプ宣言の引数の型と関数呼び出し時の実引数の型について , 整数型
同士または浮動小数点型同士で型のサイズが異なる場合に警告を発する。
プロトタイプ宣言の引数の型と関数呼び出し時の実引数の型について , 整数型
同士の型のサイズが一致していても符号が一致していなければ警告を発する。
初期値が指定されていないデータが存在する場合について警告を発する。
33
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
S up po r t
M a nu al
表 3.5-3 警告レベルごとの警告項目
34
警告レベル
警告項目
レベル 7
レベル 6 に加えて以下の警告を行う。
int 型が使われた場合について警告を発する。
ビットフィールドが int, signed int, unsigned int ではない場合について警告を発
する。
プロトタイプ宣言の引数の型と関数呼び出し時の実引数の型について , 両者の
型グループ ( 整数型 , 浮動小数点型 , void, ポインタ型 , その他 ) が異なる場合
に警告を発する。
レベル 8
レベル 7 に加えて以下の警告を行う。
関数へのポインタを使って , 関数が呼び出された場合について警告を発する。
CM42-00328-8, July 1, 2014
第 3 章 C コンパイラの操作
3.5 オプションの詳細
S o ft w a r e
3.5.4
S u p p o r t
M a n u a l
言語仕様関連オプション
言語仕様関連オプションは , コンパイラが認識する言語仕様に関するオプションで
す。
■ 言語仕様関連オプション
● -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
July 1, 2014, CM42-00328-8
35
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
S up po r t
M a nu al
● -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
36
c
=
-1;
func(void){ data = c;}
操作: fcc907s
-K
出力:
MOVX
A, _c
MOVW
_data, A
SCHAR
-cpu
MB90F553A
-S
sample.c
CM42-00328-8, July 1, 2014
第 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 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 が適用されます。
July 1, 2014, CM42-00328-8
37
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
3.5.5
S up po r t
M a nu al
最適化関連オプション
最適化関連オプションは , コンパイラが行う最適化に関するオプションです。
■ 最適化関連オプション
● -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)
プログラムの流れを詳細に解析して最適化が行われます。
38
CM42-00328-8, July 1, 2014
第 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 ( 最適化レベル 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 の指定と同じ )
標準関数の動作を認識して, 標準関数のインライン展開および同じ動作をする, よ
り高速な標準関数への置換えを行います。このオプションを指定した場合には ,
実行結果に副作用を及ぼす可能性があります。標準関数のインライン展開が実施
されるため , コードサイズが大きくなる可能性があります。
July 1, 2014, CM42-00328-8
39
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
S up po r t
M a nu al
● -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
40
-O
-cpu
MB90F553A
;
-S
sample.c
演算の順序の入れ換え
_i, A
CM42-00328-8, July 1, 2014
第 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 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 サブ
オプションを取り消します。
July 1, 2014, CM42-00328-8
41
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
S up po r t
M a nu al
● -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 サブオプションを取り消します。
42
CM42-00328-8, July 1, 2014
第 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 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
July 1, 2014, CM42-00328-8
_a:7
43
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
S up po r t
M a nu al
■ 最適化レベルごとに実施する最適化について
● 最適化レベル 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;
- 共通式の除去
44
[ 最適化前 ]
[ 最適化後 ]
t1=a+b;
t1=a+b;
t2=a+b;
t2=t1;
CM42-00328-8, July 1, 2014
第 3 章 C コンパイラの操作
3.5 オプションの詳細
S o ft w a r e
S u p p o r t
M a n u a l
- 定数計算 ( 定数の畳み込み )
計算可能な定数計算をコンパイル時に行う。
- 定数の伝播
定数が代入された変数の使用を定数で置き換える。
[ 最適化前 ]
[ 最適化後 ]
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 のテーブル分岐化
- レジスタ割り付け
July 1, 2014, CM42-00328-8
45
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
S up po r t
M a nu al
● 最適化レベル 2
最適化レベル 1 に加えて , 以下の最適化が行われます。
オブジェクトが増加する場合があります。
- ストレートループに対するループアンローリング
● 最適化レベル 3
最適化レベル 2 に加えて , 以下の最適化が行われます。
コンパイル時間が大幅に増加します。
- 出口が 2 つあるループに対するループアンローリング
- if 文による分岐があるループに対するループアンローリング
- 最適化機能の繰返し実施
● 最適化レベル 4
最適化レベル 3 に加えて , 以下の最適化が行われます。
- 演算の評価方法の変更 (-K EOPT の指定と同じ )
- 標準関数呼び出しの変更 (-K LIB の指定と同じ )
C の strcpy, strcmp, strlen, memcpy, memset 関数のインライン展開を行う。
46
CM42-00328-8, July 1, 2014
第 3 章 C コンパイラの操作
3.5 オプションの詳細
S o ft w a r e
3.5.6
S u p p o r t
M a n u a l
出力オブジェクト関連オプション
出力オブジェクト関連オプションは , 出力するオブジェクトの形式に関するオプ
ションです。
■ 出力オブジェクト関連オプション
● -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 メモリモデル」を
参照してください。
July 1, 2014, CM42-00328-8
47
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
S up po r t
M a nu al
● -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
出力:
48
-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
CM42-00328-8, July 1, 2014
第 3 章 C コンパイラの操作
3.5 オプションの詳細
S o ft w a r e
S u p p o r t
M a n u a l
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 サブ
オプションを指定したオブジェクトとそうでないオブジェクトをリンクした場合は正
常に動作しません。
July 1, 2014, CM42-00328-8
49
第 3 章 C コンパイラの操作
3.5 オプションの詳細
So ft war e
S up po r t
M a nu al
● -align { DIR1 | DIR2 } オプションと -Xalign オプション
-align オプションは , __direct 型修飾された変数の境界整合値を変更します。DIR1 サブ
オプションが指定された時は , __direct 型修飾された変数の境界整合値を 1 にします。
DIR2 サブオプションが指定された時は , __direct 型修飾された変数の境界整合値を 2 に
します。
省略した場合 , -align DIR2 が適用されます。
なお , -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 関数呼び出しインタ
フェース変更ガイド」を参照してください。
【出力例】
入力:
操作:
出力:
int func(int a, int b){
return a + b;
}
fcc907s -rp -O -cpu MB90F553A -S sample.c
_func:
MOVW
A, RW0 ; 実引数 a をレジスタで受け渡し
ADDW
A, RW1 ; 実引数 b をレジスタで受け渡し
RET
<注意事項>
-rp オプション指定時には , "_rp" 付きのライブラリをリンクしてください。
関数呼び出しインタフェースの異なるオブジェクトを混在してリンクした場合の動作は
保証されません。
50
CM42-00328-8, July 1, 2014
第 3 章 C コンパイラの操作
3.5 オプションの詳細
S o ft w a r e
S u p p o r t
M a n u a l
● -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 オプションの指定を取り消します。
July 1, 2014, CM42-00328-8
51
第 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 ソースが正しくない場合があります
52
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
53
第 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 オプションファイル」を参照し
てください。
54
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
/usr/include
F2MC16
#
/*
//
;
インクルード指定
マクロ指定 */
デバッグ情報生成指定
コンパイルまで実行
55
第 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 をコマンドラインで指定してくださ
い。
56
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
57
第 3 章 C コンパイラの操作
3.7 翻訳時メッセージ
So ft war e
S up po r t
M a nu al
■ エラーレベル
エラーレベルは診断の種別を表しています。エラーレベルと復帰コードの関係とその
意味を表 3.7-1 に示します。
表 3.7-1 エラーレベルと復帰コードの関係
58
エラーレベル
復帰コード
意味
I
0
エラーではないが , 注意を促すメッセージです。
W
0
軽度のエラーを示すメッセージであり , そのまま処理を続行
します。復帰コードは , -cwno オプションにより変更できま
す。
E
2
重度のエラーを示すメッセージであり , 処理を打ち切りま
す。
F
3
致命的な誤り , 定量制限またはシステムの障害であり , 処理
を打ち切ります。
CM42-00328-8, July 1, 2014
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 1, 2014, CM42-00328-8
59
第 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 または 1
可
無
8
Initial value of DIRINIT
DIRCONST
DIRCONST
2 または 1
否
有
9
Direct section
DIRDATA
DIR
2 または 1
可
無
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 です。
60
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
61
第 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 章 実行環境」を参照してください。
62
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
63
第 4 章 オブジェクトプログラムの構成
4.2 メモリモデル
So ft war e
S up po r t
M a nu al
● ラージモデル
ラージモデルは , コードおよびデータのすべてが 24 ビットのアドレス空間内に配置で
きるときに指定します。ラージモデルでは , アドレスをすべて 24 ビットで表現するた
め , スモールモデルに比べ , 冗長なコードになります。型修飾子によるアドレスサイズ
の指示があるときには , その指示に従います。
変数はバンクの境界を越えて配置できません。このような配置を行った場合 , プログラ
ム中で , データへのアクセスが正常にできないため注意してください。
64
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
65
第 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
( 後述 )
( 後述 )
構造体 / 共用体
66
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
21
空き
16
B
12
空き
0(LSB)
A
67
第 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
空き
68
6
C
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
A
+0
空き
+1
+2
69
第 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
70
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
71
第 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) の値を格納する領域です。
72
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
73
第 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)
74
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
75
第 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)
76
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
77
第 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 を戻り値の格納領納域の先頭アド
レスとして解釈します。呼び出し先関数は , このアドレスをメモリに退避する必要
がある場合 , 戻り値アドレス退避域を確保し , ここに退避します。
78
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
79
第 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 に格納された戻り値アドレスをメモリに退避す
る必要がある場合 , この領域に退避します。
● レジスタ退避域
レジスタ退避域は , 呼び出し元関数に対して , 保証しなければならないレジスタを退避
するための領域です。退避の必要がない場合 , この領域を確保しません。
80
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
81
第 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 言語使用の規定の実引
数拡張によるものです。
82
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
83
第 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 バイト単位で切り
上げたサイズの領域がスタック上に確保されます。
84
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
85
第 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)
86
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
87
第 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 を戻り値の格納領納域の先頭アド
レスとして解釈します。呼び出し先関数は , このアドレスをメモリに退避する必要
がある場合 , 戻り値アドレス退避域を確保し , ここに退避します。
88
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
89
第 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)
90
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
91
第 4 章 オブジェクトプログラムの構成
4.9 割込み関数呼び出しインタフェース
So ft war e
92
S up po r t
M a nu al
CM42-00328-8, July 1, 2014
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 1, 2014, CM42-00328-8
93
第 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 の最適化オプションが指定されても
一部の最適化が抑止されます。
【出力例】
94
入力:
/* 関数内に記述する場合 */
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
.RES.B
2
95
第 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
96
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
97
第 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
98
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
99
第 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
100
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
101
第 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
102
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
103
第 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 セ
クションに対して , -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
104
#0
CM42-00328-8, July 1, 2014
第 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 segment と #pragma section または ,
-s オプションが同時に指定された時は , #pragma segment で指定されていないセクショ
ンについてのみ #pragma section, -s オプションが作用します。
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
.SECTION
program2, CODE, ALIGN=1
.GLOBAL _func2
_func2:
RET
July 1, 2014, CM42-00328-8
105
第 5 章 拡張言語仕様
5.7 セクション名の変更機能
So ft war e
S up po r t
M a nu al
<注意事項>
#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){}
// 関数定義
変数 / 関数の出力先セクション:
106
変数名 / 関数名
出力先セクション名
var
const1
func
program2
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
107
第 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
108
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
109
第 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
110
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
111
第 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 シリーズでは展開されません。
112
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
113
第 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
114
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
MOVL
A, _arg1
MOVW
RW0, _arg2
DIVUW
A, RW0
MOVW
A, RW0
MOVW
_ans, A
115
第 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_ _
116
CM42-00328-8, July 1, 2014
第 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
∞
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 1, 2014, CM42-00328-8
117
第 5 章 拡張言語仕様
5.15 コンパイラの翻訳限界
So ft war e
118
S up po r t
M a nu al
CM42-00328-8, July 1, 2014
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 1, 2014, CM42-00328-8
119
第 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)
環境の初期設定
ユーザプログラム
ユーザプログラムの呼び出し
終了処理
ライブラリ
スタートアップルーチンを作成する上で , 注意が必要な項目について以下に述べます。
● スタック
スタックは , ユーザプログラムを実行するときに , 戻り番地 , 引数格納領域 , 自動変数
領域 , レジスタ退避などに使用されるため , 十分な領域を確保することが必要になりま
す。
120
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
121
第 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_ࣔࢪ࣮ࣗࣝྡࡢࢧ࢖ࢬ
122
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
123
第 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 に配置
されているように見せる必要があります。
124
CM42-00328-8, July 1, 2014
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 1, 2014, CM42-00328-8
125
第 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 汎用標準ライブラリファイル一覧 ( 引数のレジスタ渡し用 )
ファイル名
126
メモリモデル
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
unistd.h
sys/types.h
127
第 7 章 ライブラリの概要
7.1 ファイルの構成
So ft war e
S up po r t
M a nu al
■ ライブラリのセクション名
ライブラリのセクション名はメモリモデルごとに異なります。表 7.1-5 にライブラリが
使用しているセクション名を示します。
表 7.1-5 ライブラリのセクション名
セクション種別
128
スモール
ミディアム
コンパクト
ラージ
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
129
第 7 章 ライブラリの概要
7.2 組み込むシステムとの関係
So ft war e
130
S up po r t
M a nu al
CM42-00328-8, July 1, 2014
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 1, 2014, CM42-00328-8
131
第 8 章 ライブラリの組込み
8.1 ライブラリの組込みの概略
So ft war e
8.1
S up po r t
M a nu al
ライブラリの組込みの概略
ここでは , ライブラリの組込みの概略について記述します。
■ ライブラリを使用する際に必要な処理と関数
ファイル入出力やメモリ管理 , プログラムの終了方法はシステムに依存した処理とな
ります。このため , ライブラリではこれらの処理を標準ライブラリから切り離し , これ
らの処理が必要なときには , 低水準関数として呼び出しを行います。このほか , スト
リーム領域の初期化などライブラリを使用する際に必要な処理があります。ライブラ
リを使用する際に準備が必要な処理 , 関数には以下のものがあります。
• ストリーム領域の初期化処理
• 標準入出力と標準エラー出力ファイルのオープンおよびクローズ処理
• 低水準関数の作成
• 時間関数の作成
ライブラリを組み込むときには , これらの処理や関数をシステムに合わせて作成して
ください。
132
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
133
第 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 関数を
呼び出します。
134
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
135
第 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) があります。
これらの低水準関数をシステムに合わせて作成してください。
■ 低水準関数
低水準関数は , この節で記述する仕様に従って作成してください。
136
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
137
第 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 を返却してく
ださい。
138
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
139
第 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 を返
却してください。
140
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
141
第 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 で指定されるファイルが端末ファイルか否かを調べ , 端末ファイルの場合は真を
返し , それ以外の場合は偽を返してください。
【返却値】
端末ファイルの場合は真を返し , それ以外の場合は偽を返してください。
142
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
143
第 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 関数は , 呼び出し元に返りません。
144
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
145
第 8 章 ライブラリの組込み
8.6 時間関数の仕様
So ft war e
8.6
S up po r t
M a nu al
時間関数の仕様
時間関数には , 使用したプロセッサ時間を取得するための clock 関数および , 現在の
暦時刻を取得するための time 関数があります。
これらの時間関数をシステムに合わせて作成してください。
■ 時間関数
時間関数は , この節で記述する仕様に従って作成してください。
146
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
147
第 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 が指すオブジェクトにも返却値を代入してくださ
い。
148
CM42-00328-8, July 1, 2014
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 1, 2014, CM42-00328-8
149
第 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)
仕様の相違内容
150
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
151
第 9 章 コンパイラにより 異なる仕様
9.2 浮動小数点データの形式と表現できる値の範囲
So ft war e
9.2
S up po r t
M a nu al
浮動小数点データの形式と表現できる値の範囲
浮動小数点データの形式と表現できる値の範囲を , 表 9.2-1 に示します。
■ 浮動小数点データの形式と表現できる値の範囲
表 9.2-1 浮動小数点データの形式と表現できる値の範囲
浮動小数点データの形式
152
表現できる値の範囲
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-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
153
第 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) の区別はありません。
● 演算例外発生時の割込み
発生しません。
● ステータスフラグ
サポートしていません。
154
CM42-00328-8, July 1, 2014
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 1, 2014, CM42-00328-8
155
第 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 関数が呼び出されると , 領域のアドレスの低い方から領域を割り当てます。
156
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
標準ライブラリ
低水準ライブラリ
157
第 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 コマンドは省略してもかまいません。
158
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
159
第 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 低水準関数ライブラリの変更」を参照してください。
160
CM42-00328-8, July 1, 2014
第 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 1, 2014, CM42-00328-8
161
第 10 章 シミュレータデバッガ用 低水準関数ライブラリ
10.4 低水準関数ライブラリの変更
So ft war e
162
S up po r t
M a nu al
CM42-00328-8, July 1, 2014
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 主な変更内容
July 1, 2014, CM42-00328-8
163
付録
付録 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
164
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
offsetof
165
付録
付録 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
166
offsetof
EXIT_FAILURE
EXIT_SUCCESS
RAND_MAX
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
SEEK_CUR
SEEK_END
167
付録
付録 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
● 関数
168
asctime()
ctime()
mktime()
strftime()
difftime()
gmtime()
localtime()
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
169
付録
付録 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); }
170
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
171
付録
付録 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;
};
172
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
173
付録
付録 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" ロケールのみです。
174
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
175
付録
付録 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 シリーズをご
使用の際はこのコンパイラとアセンブラを利用してください。
176
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
177
付録
付録 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 命令」
178
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
179
付録
付録 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
:
180
:
:
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
181
付録
付録 D 関数呼び出しインタフェース変更ガイド
So ft war e
S up po r t
M a nu al
図 D-2 プロジェクトの設定ダイアログ
2. 新規に作成するプロジェクトの設定を変更する場合
プロジェクトの [ 新規作成 ] ダイアログでは , デフォルトとして「引数のスタック渡
し」が選択されます。関数呼び出しインタフェースを「引数のレジスタ渡し」に変
更してください。
図 D-3 プロジェクトの新規作成ダイアログ
182
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
: 48 ファイル
183
付録
付録 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
184
:関数呼び出しインタフェースを変更しない。
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
185
付録
付録 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 オプション指定または , 入力オブジェ
クト , 編集対象ライブラリの関数呼び出しインタフェースを修正してください。
<注意事項>
関数呼び出しインタフェースの異なるオブジェクトはリンクできません。以下の弊社提供
オブジェクトの関数呼び出しインタフェースは , 「引数のスタック渡し」のみとなってい
ますので注意してください。
• モニタデバッガ
186
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
187
付録
付録 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), 下線 (_) 以外の文字が使用されていま
す。
188
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
189
付録
付録 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
ツールの呼び出しに失敗しました
[ 説明 ]
ツールの呼び出しに失敗しました。
190
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
191
付録
付録 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 情報ファイルの形式が正しくありません。
192
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
193
付録
付録 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 文字表記の置き換えが行われました。
置き換えられた文字を有効にします。
194
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
195
付録
付録 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 と解釈する古い仕様が適用されました。
解釈を有効にして処理を続行します。
196
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
197
付録
付録 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 指令がなかったものとして処理を続行します。
198
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
199
付録
付録 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
コマンドラインの引数指定が多過ぎます。
[ 説明 ]
コマンドラインの出力ファイル名の後ろにオプションまたはファイル名が指定さ
れています。
余分な引数を無視して処理を続行します。
200
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
201
付録
付録 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 つ指定されています。
接尾語の指定を無効にして処理を続行します。
202
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
203
付録
付録 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 文字までを有効にして処理を続行します。
204
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
205
付録
付録 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'
プログラムの内部的な制限 : 長過ぎる識別子です。
[ 説明 ]
識別子が長すぎます。
[ 備考 ]
このメッセージは使用されていません。
206
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
207
付録
付録 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 等の条件式内に定数式として認識できないトークンが記述されています。
208
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
209
付録
付録 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 指令の関数形式マクロ定義において仮引数指定位置に識別子以外が記述さ
れています。
210
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
211
付録
付録 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 指令に記述されているファイル名を表す文字列を閉じる `"' が記述されていま
せん。
212
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
213
付録
付録 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 以上になりました。
214
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
215
付録
付録 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 進数に対して指定されています。
[ 説明 ]
条件式中の整数定数の直後に接尾語として認識されないアルファベット以外の文
字が記述されています。
216
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
217
付録
付録 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: ワイド文字定数の近辺です。
[ 説明 ]
条件式中の構文エラーの補助メッセージです。ワイド文字定数の付近で構文エラー
が発生しました。
218
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
219
付録
付録 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())
[ 説明 ]
前処理の結果出力時に , ファイル書き出しが正しく行われませんでした。
[ 備考 ]
このメッセージは使用されていません。
220
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
221
付録
付録 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
読み込むファイルが正しいテキストファイルではありません。
[ 説明 ]
読み込むファイルが正しいテキストファイルではありません。
222
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
223
付録
付録 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' 組込みのシンボルです。
[ 説明 ]
シンボルの二重宣言の補助メッセージです。前のシンボルは組込みシンボルです。
224
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
225
付録
付録 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 文には復帰値
の指定が必要です。
復帰値の指定がない場合には未知の値が復帰されるものとして処理を続行します。
226
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
227
付録
付録 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 文において何らかの値を返却値として
指定する必要があります。
復帰値の指定がない場合には未知の値が復帰されるものとして処理を続行します。
228
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
229
付録
付録 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 として処理を続行します。
230
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
231
付録
付録 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 へ拡張されるものとして処理を続行します。
232
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
233
付録
付録 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' が有効範囲を超えて使用されています。
[ 説明 ]
ブロック内で外部参照宣言された識別子が , ブロック外で参照されています。
見つかった識別子の参照を有効にして処理を続行します。
234
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
235
付録
付録 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 ラベルの値として処理を続行しま
す。
236
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
237
付録
付録 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
関数原型宣言が使用されています。
[ 説明 ]
関数プロトタイプが使用されています。
そのまま処理を続行します。
[ 備考 ]
このメッセージは使用されていません。
238
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
239
付録
付録 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' は , 二重定義されています。
[ 説明 ]
シンボルが再宣言されました。型が適合しているかを確認してください。
240
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
241
付録
付録 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 です。
宣言を有効にして処理を続行します。
242
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
243
付録
付録 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
キャスト式中で型が宣言されました。
[ 説明 ]
キャスト式中で構造体または共用体タグが宣言されました。
244
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
245
付録
付録 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 型へキャストされました。
[ 備考 ]
このメッセージは使用されていません。
246
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
247
付録
付録 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' とで型が矛盾しています。
[ 説明 ]
型の不適合が発生したときの , 不適合となった型の情報です。
248
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
249
付録
付録 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'
[ 説明 ]
初期化の対象となる型と初期値の型が適合しません。初期化の対象となる型に合う
ように初期値を見直してください。
250
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
251
付録
付録 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' の引数の型が合っていません。
[ 説明 ]
プロトタイプ宣言と引数の情報を持たない関数宣言は , プロトタイプの型を実引数
拡張しますが , プロトタイプ宣言の引数を実引数拡張した型と元の型が一致しませ
ん。プロトタイプ宣言の引数の型に実引数拡張後の型を指定してください。
252
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
253
付録
付録 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
異なる浮動小数点型間で型変換が行われました。
[ 説明 ]
サイズの異なる浮動小数点型間で型変換が行われました。
254
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
255
付録
付録 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 バイトを有効にして処理を続行します。
256
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
257
付録
付録 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
[ 説明 ]
符号なし保存則が値保存則に変わったことにより動作が変更された演算です。
258
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
259
付録
付録 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
[ 説明 ]
比較演算に記述された定数が , ビットフィールドの大きさの値域を超えています。
定数値を見直してください。
260
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
261
付録
付録 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'
[ 説明 ]
式の型が未定義のタグを持った構造体または共用体型です。式中では未定義のタグ
を持った構造体または共用体型は指定できません。タグの定義を行ってください。
262
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
263
付録
付録 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
[ 説明 ]
演算のオペランドの型の組み合わせに誤りがあります。
264
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
265
付録
付録 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 が指定されなかったものとして処理を続行します。
266
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
267
付録
付録 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 ラベルに誤りがないかを
確認してください。
268
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
269
付録
付録 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' への変換です。
[ 説明 ]
キャストする型がキャスト演算のオペランドより広い幅をもっています。ポインタ
の値が正しく保持されない可能性があります。
270
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
271
付録
付録 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 型は指定できません。
[ 備考 ]
このメッセージは使用されていません。
272
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
273
付録
付録 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 指令を無視して処理を続行します。
[ 備考 ]
このメッセージは使用されていません。
274
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
275
付録
付録 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 指令がなかったものとして処理を続行します。
276
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
277
付録
付録 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 の引数に文字列リテラルが必要です。
[ 備考 ]
このメッセージは使用されていません。
278
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
279
付録
付録 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 パラメータの設定値に誤りがあります。
[ 備考 ]
このメッセージは使用されていません。
280
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
281
付録
付録 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 の効果がなかったものとして処理を続行しま
す。
282
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
283
付録
付録 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 引数
[ 説明 ]
関数呼び出しの実引数の型と宣言時の仮引数の型が適合しません。仮引数の型に合
うように実引数を見直してください。
284
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
285
付録
付録 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 の指定を無効にして処理を続行します。
286
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
287
付録
付録 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 が存在していません。
翻訳単位の終わりに記述されたものとして処理を続行します。
288
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
289
付録
付録 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 引数
[ 説明 ]
プロトタイプ引数に指定された型と実引数に指定された型の符号が一致しません。
プロトタイプ引数の型に合わせます。
290
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
291
付録
付録 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
整数型を記述してください。
[ 説明 ]
演算子のオペランドに整数型以外の型が指定されています。
292
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
293
付録
付録 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' が二重定義されています。
[ 説明 ]
指定されたラベルは既に関数内に存在します。ラベルは関数内でユニークである必
要があります。
294
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
295
付録
付録 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 つしか指定でき
ません。
296
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
297
付録
付録 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' が多過ぎます。
[ 説明 ]
数値定数の接尾語の指定に誤りがあります。
298
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
299
付録
付録 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
不当な多バイト文字定数です。
[ 説明 ]
ワイド文字定数内に文字コードとして認識できない不当な多バイト文字が記述さ
れています。
300
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
301
付録
付録 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' が使用されました。
[ 説明 ]
メンバとして定義されていないシンボルがメンバ参照されました。
302
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
303
付録
付録 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' は構造体または共用体のメンバになりえません。
[ 説明 ]
構造体または共用体のメンバに関数型を持つシンボルは宣言できません。
304
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
305
付録
付録 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
関数は配列型を返すことはできません。
[ 説明 ]
関数の復帰値の型が配列型になっています。関数は配列を返すことはできません。
306
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
307
付録
付録 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' の型が整数型でありません。
[ 説明 ]
ビットフィールドメンバの型は整数型でなければなりません。
308
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
309
付録
付録 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
[ 説明 ]
加算 , 減算 , 配列参照演算においてポインタ型が許される演算項には , ポインタ型ま
たは配列型を持つ式が指定されている必要があります。
310
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
311
付録
付録 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
[ 説明 ]
構造体または共用体のタグの定義がないためメンバは検索できません。
312
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
313
付録
付録 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 に関数の情報が出力されています。
314
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
315
付録
付録 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 型はサポートされていません。
316
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
317
付録
付録 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 宣言中に複数記述されています。
318
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
319
付録
付録 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
関数への不当な型変換です。
[ 説明 ]
関数型への型変換はできません。
320
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
321
付録
付録 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 文の文字列リテラルの表記が不当です。
322
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
323
付録
付録 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 の関数の情報です。
324
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
325
付録
付録 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 以下である必要があります。
326
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
327
付録
付録 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 のみです。
328
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
329
付録
付録 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
データファイル : ファイルリードエラーです。
[ 説明 ]
データファイル : ファイルリードエラーです。
330
CM42-00328-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
331
付録
付録 F C ライブラリのリエントラント性について
So ft war e
付録 F
S up po r t
M a nu al
C ライブラリのリエントラント性について
C ライブラリのリエントラント性について記述します。
■ C ライブラリのリエントラント性について
● リエントラント可能な関数一覧
表 F-1 リエントラント可能な関数一覧
332
関数名
ヘッダファイル名
関数名
ヘッダファイル名
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-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
関数名
ヘッダファイル名
関数名
ヘッダファイル名
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
----
333
付録
付録 F C ライブラリのリエントラント性について
So ft war e
S up po r t
M a nu al
表 F-2 リエントラント不可な関数一覧 (2 / 2)
334
関数名
ヘッダファイル名
関数名
ヘッダファイル名
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-8, July 1, 2014
付録
付録 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 1, 2014, CM42-00328-8
335
付録
付録 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
336
低消費電力モード制御レジスタ (LPMCR) の RST ビットを 0
に設定します。内部リセットが発生します。
CM42-00328-8, July 1, 2014
付録
付録 H 主な変更内容
S o ft w a r e
付録 H
S u p p o r t
M a n u a l
主な変更内容
ページ
場所
変更箇所
Revision 7.1
-
-
社名変更および記述フォーマットの変換
Revision 8.0
1
第1章
社名部分を削除
9
第2章
設定例の文字列を変更
32
● -V オプション
出力例を削除
38
● -O [level] オプション
[level] に x を追加
40
● -K EOPT オプション
有効動作の最適化レベルを 1 以上と明記
41
● -K LIB オプション
有効動作の最適化レベルを 1 以上と明記
41
● -K NOALIAS オプショ
ン
有効動作の最適化レベルを 1 以上と明記
42
● -x 関数名 1 [, 関数名 2,
...]
有効動作の最適化レベルを 1 以上と明記
42
● -xauto [size] オプション
有効動作の最適化レベルを 1 以上と明記
42
● -K ARRAY オプション
有効動作の最適化レベルを 1 以上と明記
43
● -K ACCOPT オプション
有効動作の最適化レベルを 1 以上と明記
43
● -K BITOPT オプション
有効動作の最適化レベルを 0 以上に変更
July 1, 2014, CM42-00328-8
337
付録
付録 H 主な変更内容
So ft war e
338
S up po r t
M a nu al
CM42-00328-8, July 1, 2014
索引
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 ビットアドレッシングアクセス機能
..........................................................................101
_abort 関数
_abort 関数 .............................................................145
ANSI 規格
ANSI 規格で規定されているマクロ .................. 116
asm 文
asm 文による記述方法 ...........................................94
assert.h
assert.h ....................................................................164
C
c
sbrk.c ソースプログラムリスト .......................... 161
clock 関数
clock 関数 ...............................................................147
close 関数
close 関数 .......................................................138, 160
CPU
CPU 間欠動作制御マクロ .................................... 336
F2MC-16LX CPU の符号付き除算命令の注意事項
について .......................................................... 175
CPU 間欠動作制御
CPU 間欠動作制御マクロ .................................... 336
ctype.h
ctype.h ..................................................................... 164
C コンパイラ
C コンパイラの機能 .................................................2
C ライブラリ
C ライブラリの
リエントラント性について .......................... 332
D
direct 領域アクセス
direct 領域アクセス機能 ........................................ 99
__divu ビルトイン関数
__divu ビルトイン関数 ........................................ 114
__div ビルトイン関数
__div ビルトイン関数 .......................................... 113
E
errno.h
errno.h ..................................................................... 164
_exit 関数
_exit 関数 ...............................................................144
F
F2MC-16LX
F2MC-16LX CPU の符号付き除算命令の注意事項
について .......................................................... 175
July 1, 2014, CM42-00328-8
339
索引
So ft war e
M a nu al
fcc907s コマンド
fcc907s コマンドで定義されている
マクロ ..............................................................116
fcc907s コマンドの基本的な処理 ...........................4
fcntl.h
fcntl.h ......................................................................167
FELANG
FELANG ...................................................................14
FETOOL
FETOOL ...................................................................10
float.h
float.h ......................................................................164
__mul ビルトイン関数
__mul ビルトイン関数 .........................................112
H
read 関数
read 関数 .........................................................139, 159
ROM 化プログラム
ROM 化プログラムの注意事項 .......................... 124
h
assert.h .....................................................................164
ctype.h .....................................................................164
errno.h .....................................................................164
fcntl.h ......................................................................167
float.h ......................................................................164
limits.h .....................................................................165
math.h ......................................................................165
setjmp.h ...................................................................168
stdarg.h ....................................................................165
stddef.h ....................................................................165
stdio.h ......................................................................166
stdlib.h .....................................................................166
string.h .....................................................................167
sys/types.h ...............................................................168
time.h .......................................................................168
unistd.h ....................................................................167
I
I/O ポート
特殊な I/O ポート .................................................159
I/O 領域アクセス
I/O 領域アクセス機能 ............................................98
INC907
INC907 ......................................................................12
isatty 関数
isatty 関数 .......................................................142, 160
L
limits.h
limits.h .....................................................................165
lseek 関数
lseek 関数 .......................................................141, 159
M
math.h
math.h ......................................................................165
__modu ビルトイン関数
__modu ビルトイン関数 ......................................115
__mod ビルトイン関数
__mod ビルトイン関数 ........................................113
__mulu ビルトイン関数
__mulu ビルトイン関数 .......................................114
340
S up po r t
O
open 関数
open 関数 ........................................................137, 159
OPT907
OPT907 ..................................................................... 11
R
S
sbrk.c
sbrk.c ソースプログラムリスト .......................... 161
sbrk 関数
sbrk 関数 .........................................................143, 160
setjmp.h
setjmp.h ................................................................... 168
stdarg.h
stdarg.h ....................................................................165
stddef.h
stddef.h ....................................................................165
stdio.h
stdio.h ......................................................................166
stdlib.h
stdlib.h ..................................................................... 166
string.h
string.h ....................................................................167
sys/types.h
sys/types.h ...............................................................168
T
time.h
time.h ......................................................................168
time 関数
time 関数 ................................................................ 148
TMP
TMP ..........................................................................13
U
unistd.h
unistd.h ....................................................................167
W
__wait_nop ビルトイン関数
__wait_nop ビルトイン関数 ................................112
write 関数
write 関数 .......................................................140, 159
CM42-00328-8, July 1, 2014
索引
S o ft w a r e
S u p p o r t
あ
アドレッシング
16 ビット /24 ビットアドレッシング
アクセス機能 ..................................................101
い
依存関係
排他関係と依存関係 ...............................................19
引数
引数 ( 引数のスタック渡し ) .................................74
引数 ( 引数のレジスタ渡し ) .................................82
引数の拡張形式 ( 引数のスタック渡し ) .............75
引数の拡張形式 ( 引数のレジスタ渡し ) .............84
関数呼び出しインタフェース
( 引数のスタック渡し ) ....................................71
関数呼び出しインタフェース
( 引数のレジスタ渡し ) ....................................79
スタックフレーム
( 引数のスタック渡し ) ....................................72
スタックフレーム
( 引数のレジスタ渡し ) ....................................80
戻り値 ( 引数のレジスタ渡し ) .............................88
呼び出し手続き ( 引数のスタック渡し ) .............76
呼び出し手続き ( 引数のレジスタ渡し ) .............85
レジスタの設定 ( 引数のスタック渡し ) .............77
レジスタの設定 ( 引数のレジスタ渡し ) .............87
レジスタの保証 ( 引数のスタック渡し ) .............77
レジスタの保証 ( 引数のレジスタ渡し ) .............87
インタフェース
新しい関数呼び出しインタフェース .................178
関数呼び出しインタフェース
( 引数のスタック渡し ) ....................................71
関数呼び出しインタフェース
( 引数のレジスタ渡し ) ....................................79
関数呼び出しインタフェースの
変更の詳細 ......................................................179
関数呼び出しインタフェースの
変更の流れ ......................................................179
割込み関数呼び出しインタフェース ...................89
インライン展開指定
インライン展開指定機能 .....................................103
え
エラーメッセージ
エラーメッセージの見方 .....................................187
警告とエラーメッセージ .....................................184
エラーレベル
エラーレベル ...........................................................58
お
オープン
標準入出力と標準エラー出力ファイルの
オープンおよびクローズ ..............................133
大文字
大文字小文字の区別 ...............................................19
オプション
オプションのシンタックス ...................................19
July 1, 2014, CM42-00328-8
M a n u a l
オプションファイル関連オプション ............ 24, 54
言語仕様関連オプション ................................ 24, 35
コマンド関連オプション ................................ 24, 53
コマンドのオプション一覧 ..................................20
コマンドの取り消しオプション一覧 .................. 22
コンパイル処理の過程を制御する
オプション ..........................................................4
最適化関連オプション .................................... 24, 38
出力オブジェクト関連オプション ................ 24, 47
情報出力関連オプション ................................ 24, 30
デバッグ情報関連オプション ........................24, 52
同一オプションの複数指定 ..................................19
プリプロセッサ関連オプション .................... 24, 27
翻訳制御関連オプション ................................ 24, 25
オプションファイル
オプションファイル .............................................. 55
オプションファイルに
記述できるコメント ........................................ 55
オプションファイルの制限 ..................................55
オプションファイル関連オプション
オプションファイル関連オプション ............ 24, 54
オペランド
コマンドのオペランド .......................................... 17
か
拡張形式
引数の拡張形式 ( 引数のスタック渡し ) ............. 75
引数の拡張形式 ( 引数のレジスタ渡し ) ............. 84
加算
浮動小数点数の四則演算
( 加算 , 減算 , 乗算 , 除算 ) ............................153
型変換
整数型から浮動小数点型への型変換 ................ 154
浮動小数点型から整数型への型変換 ................ 154
浮動小数点数から浮動小数点数への
型変換 .............................................................. 154
間欠動作制御
CPU 間欠動作制御マクロ .................................... 336
関数
_abort 関数 .............................................................145
clock 関数 ...............................................................147
close 関数 .......................................................138, 160
__divu ビルトイン関数 ........................................ 114
__div ビルトイン関数 .......................................... 113
_exit 関数 ...............................................................144
isatty 関数 .......................................................142, 160
lseek 関数 .......................................................141, 159
__modu ビルトイン関数 ...................................... 115
__mod ビルトイン関数 ........................................ 113
__mulu ビルトイン関数 .......................................114
__mul ビルトイン関数 .........................................112
open 関数 ........................................................137, 159
read 関数 .........................................................139, 159
sbrk 関数 .........................................................143, 160
time 関数 ................................................................ 148
__wait_nop ビルトイン関数 ................................112
write 関数 .......................................................140, 159
時間関数 ................................................................ 146
時間関数 ( システム依存の処理 ) の種類 ..........129
低水準関数 ............................................................ 136
341
索引
So ft war e
低水準関数
( システム依存の処理 ) の種類 .....................129
低水準関数の種類 .................................................134
低水準関数ライブラリの概略 .............................156
標準ライブラリ関数と必要な処理 /
低水準関数 ......................................................135
ライブラリを使用する際に
必要な処理と関数 ..........................................132
レジスタ退避なしの割込み関数機能 .................111
割込み関数記述機能 ...............................................97
関数呼び出しインタフェース
新しい関数呼び出しインタフェース .................178
関数呼び出しインタフェース
( 引数のスタック渡し ) ....................................71
関数呼び出しインタフェース
( 引数のレジスタ渡し ) ....................................79
関数呼び出しインタフェースの
変更の詳細 ......................................................179
関数呼び出しインタフェースの
変更の流れ ......................................................179
き
規格
ANSI 規格で規定されているマクロ ..................116
境界整合
境界整合 ...................................................................66
共用体
構造体 / 共用体 ........................................................69
く
クローズ
標準入出力と標準エラー出力ファイルの
オープンおよびクローズ ..............................133
け
警告
警告とエラーメッセージ .....................................184
言語仕様
コンパイラに依存した言語仕様の相違点 .........150
言語仕様関連オプション
言語仕様関連オプション .................................24, 35
検索
ヘッダファイルの検索 .............................................6
減算
浮動小数点数の四則演算
( 加算 , 減算 , 乗算 , 除算 ) .............................153
こ
構造体
構造体 / 共用体 ........................................................69
コマンド
fcc907s コマンドで定義されている
マクロ ..............................................................116
fcc907s コマンドの基本的な処理 ...........................4
コマンド行 ...............................................................16
コマンド行での位置 ...............................................19
コマンドのオプション一覧 ...................................20
342
S up po r t
M a nu al
コマンドのオペランド .......................................... 17
コマンドの処理 ......................................................16
コマンドの取り消しオプション一覧 .................. 22
コマンド関連オプション
コマンド関連オプション ................................ 24, 53
コマンド行
コマンド行 .............................................................. 16
コマンド行での位置 .............................................. 19
コメント
オプションファイルに記述できるコメント ...... 55
小文字
大文字小文字の区別 .............................................. 19
固有の動作
ライブラリ固有の動作 ........................................ 169
コンパイラ
C コンパイラの機能 .................................................2
コンパイラで使用する名前の生成規則 ..............65
コンパイラに依存した言語仕様の相違点 ........150
コンパイラの翻訳限界 ........................................ 117
コンパイル
コンパイル処理の過程を
制御するオプション .......................................... 4
さ
最適化
最適化 ........................................................................7
最適化レベルごとに実施する
最適化について ................................................ 44
最適化関連オプション
最適化関連オプション .................................... 24, 38
最適化レベル
最適化レベルごとに実施する
最適化について ................................................ 44
し
時間関数
時間関数 ................................................................ 146
時間関数 ( システム依存の処理 ) の種類 ..........129
識別子
ツール識別子 .......................................................... 57
システム依存
時間関数 ( システム依存の処理 ) の種類 ..........129
システム依存の処理 ............................................ 129
低水準関数
( システム依存の処理 ) の種類 .................... 129
システムスタック
システムスタックの利用指定機能 .................... 109
四則演算
浮動小数点数の四則演算
( 加算 , 減算 , 乗算 , 除算 ) ............................153
実行処理
実行処理の概要 ....................................................120
自動判別
スタックバンクの自動判別機能 ........................ 110
シミュレータデバッガ
シミュレータデバッガの設定 ............................158
終了処理
初期化処理 / 終了処理 .........................................133
出力オブジェクト関連オプション
出力オブジェクト関連オプション ................ 24, 47
CM42-00328-8, July 1, 2014
索引
S o ft w a r e
S u p p o r t
乗算
浮動小数点数の四則演算
( 加算 , 減算 , 乗算 , 除算 ) .............................153
情報出力関連オプション
情報出力関連オプション .................................24, 30
初期化
初期化処理 / 終了処理 .........................................133
ストリーム領域の初期化 .....................................133
初期化処理
初期化処理 .............................................................157
初期化処理 / 終了処理 .........................................133
除算
浮動小数点数の四則演算
( 加算 , 減算 , 乗算 , 除算 ) .............................153
シンタックス
オプションのシンタックス ...................................19
シンボリックデバッガ
シンボリックデバッガとの連携 .............................7
す
スタートアップルーチン
スタートアップルーチンの作成 .........................122
スタックバンク
スタックバンクの自動判別機能 .........................110
スタックフレーム
スタックフレーム
( 引数のスタック渡し ) ....................................72
スタックフレーム
( 引数のレジスタ渡し ) ....................................80
割込みスタックフレーム .......................................90
スタック渡し
引数 ( 引数のスタック渡し ) .................................74
引数の拡張形式 ( 引数のスタック渡し ) .............75
関数呼び出しインタフェース
( 引数のスタック渡し ) ....................................71
スタックフレーム ( 引数のスタック渡し ) .........72
呼び出し手続き ( 引数のスタック渡し ) .............76
レジスタの設定 ( 引数のスタック渡し ) .............77
レジスタの保証 ( 引数のスタック渡し ) .............77
スタンバイ制御
スタンバイ制御マクロ .........................................335
ストリーム領域
ストリーム領域の初期化 .....................................133
せ
整数型
整数型から浮動小数点型への型変換 .................154
浮動小数点型から整数型への型変換 .................154
生成規則
コンパイラで使用する名前の生成規則 ...............65
セクション
セクション構成 .......................................................60
セクション名の変更機能 .....................................104
ライブラリのセクション名 .................................128
セクション名
セクション名の変更機能 .....................................104
ライブラリのセクション名 .................................128
設定
シミュレータデバッガの設定 .............................158
タイムゾーンの設定 .............................................133
July 1, 2014, CM42-00328-8
M a n u a l
レジスタの設定 ( 引数のスタック渡し ) ............. 77
レジスタの設定 ( 引数のレジスタ渡し ) ............. 87
そ
ソースプログラムリスト
sbrk.c ソースプログラムリスト .......................... 161
ソフトウェアリセット
ソフトウェアリセットマクロ ............................336
た
タイムゾーン
タイムゾーンの設定 ............................................ 133
つ
ツール
ツール識別子 .......................................................... 57
て
低水準関数
低水準関数 ............................................................ 136
低水準関数
( システム依存の処理 ) の種類 .................... 129
低水準関数の種類 ................................................134
標準ライブラリ関数と必要な処理 /
低水準関数 ......................................................135
低水準関数ライブラリ
低水準関数ライブラリの概略 ............................156
ディレクトリ名
ファイル名とディレクトリ名 ..............................18
手続き
割込み関数呼び出し手続き ..................................91
デバッグ情報関連オプション
デバッグ情報関連オプション ........................24, 52
デフォルトオプションファイル
デフォルトオプションファイル .......................... 56
と
同一オプション
同一オプションの複数指定 ..................................19
動的確保領域
動的確保領域の変更 ............................................ 161
取り消しオプション
コマンドの取り消しオプション一覧 .................. 22
な
名前の生成規則
コンパイラで使用する名前の生成規則 ..............65
は
排他関係
排他関係と依存関係 .............................................. 19
バンク
レジスタバンク番号の設定機能 ........................ 107
343
索引
So ft war e
M a nu al
ひ
へ
比較
浮動小数点数の比較 .............................................153
ビットフィールド
ビットフィールド ...................................................67
標準エラー出力ファイル
標準入出力と標準エラー出力ファイルの
オープンおよびクローズ ..............................133
標準入出力
標準入出力と標準エラー出力ファイルの
オープンおよびクローズ ..............................133
標準ライブラリ関数
標準ライブラリ関数と必要な処理 /
低水準関数 ......................................................135
ビルトイン関数
__divu ビルトイン関数 ........................................114
__div ビルトイン関数 ..........................................113
__modu ビルトイン関数 ......................................115
__mod ビルトイン関数 ........................................113
__mulu ビルトイン関数 .......................................114
__mul ビルトイン関数 .........................................112
__wait_nop ビルトイン関数 .................................112
ベクタテーブル
割込みベクタテーブル生成機能 .......................... 97
ヘッダファイル
ヘッダファイルの検索 ............................................ 6
ふ
ファイル
標準入出力と標準エラー出力ファイルの
オープンおよびクローズ ..............................133
ファイルシステム
ファイルシステムの概略 .....................................156
ファイルの構成
ファイルの構成 .....................................................126
ファイル名
ファイル名とディレクトリ名 ...............................18
複数指定
同一オプションの複数指定 ...................................19
符号付き除算命令
F2MC-16LX CPU の符号付き除算命令の
注意事項について ..........................................175
浮動小数点
浮動小数点データの形式と
表現できる値の範囲 ......................................152
浮動小数点型
整数型から浮動小数点型への型変換 .................154
浮動小数点型から整数型への型変換 .................154
浮動小数点数
浮動小数点数から浮動小数点数への
型変換 ..............................................................154
浮動小数点数の四則演算
( 加算 , 減算 , 乗算 , 除算 ) .............................153
浮動小数点数の比較 .............................................153
浮動小数点データ
浮動小数点データの形式と
表現できる値の範囲 ......................................152
プラグマ指令
プラグマ指令による記述方法 ...............................95
プリプロセッサ関連オプション
プリプロセッサ関連オプション .....................24, 27
プログラム
ROM 化プログラムの注意事項 ..........................124
344
S up po r t
ほ
保証
レジスタの保証 ( 引数のスタック渡し ) ............. 77
レジスタの保証 ( 引数のレジスタ渡し ) ............. 87
翻訳限界
コンパイラの翻訳限界 ........................................ 117
翻訳時メッセージ
翻訳時メッセージ ..................................................57
翻訳制御関連オプション
翻訳制御関連オプション ................................ 24, 25
ま
マクロ
ANSI 規格で規定されているマクロ .................. 116
CPU 間欠動作制御マクロ .................................... 336
fcc907s コマンドで定義されている
マクロ .............................................................. 116
スタンバイ制御マクロ ........................................ 335
ソフトウェアリセットマクロ ............................336
マスク
割込みマスク解除機能 .......................................... 96
割込みマスク設定機能 .......................................... 96
め
命令
F2MC-16LX CPU の符号付き除算命令の
注意事項について .......................................... 175
メモリ
メモリモデル .......................................................... 63
も
戻り値
戻り値 ......................................................................78
戻り値 ( 引数のレジスタ渡し ) ............................. 88
よ
呼び出し手続き
呼び出し手続き ( 引数のスタック渡し ) ............. 76
呼び出し手続き ( 引数のレジスタ渡し ) ............. 85
ら
ライブラリ
C ライブラリの
リエントラント性について .......................... 332
低水準関数ライブラリの概略 ............................156
標準ライブラリ関数と必要な処理 /
低水準関数 ......................................................135
CM42-00328-8, July 1, 2014
索引
S o ft w a r e
S u p p o r t
ライブラリ固有の動作 .........................................169
ライブラリのセクション名 .................................128
ライブラリを使用する際に必要な
処理と関数 ......................................................132
M a n u a l
ろ
ロードモジュール
ロードモジュールの作成 .................................... 157
り
わ
リエントラント性
C ライブラリの
リエントラント性について ..........................332
リセット
ソフトウェアリセットマクロ .............................336
領域管理
領域管理 .................................................................156
割込み
レジスタ退避なしの割込み関数機能 ................ 111
割込み関数記述機能 .............................................. 97
割込みスタックフレーム ...................................... 90
割込みベクタテーブル生成機能 .......................... 97
割込みマスク解除機能 .......................................... 96
割込みマスク設定機能 .......................................... 96
割込みレベル設定機能 .......................................... 97
割込みレベルの設定機能 .................................... 108
割込み関数
レジスタ退避なしの割込み関数機能 ................ 111
割込み関数記述機能 .............................................. 97
割込み関数呼び出し
割込み関数呼び出しインタフェース .................. 89
割込み関数呼び出し手続き ..................................91
割込み関数呼び出しインタフェース
割込み関数呼び出しインタフェース .................. 89
割込み関数呼び出し手続き
割込み関数呼び出し手続き ..................................91
割込みスタックフレーム
割込みスタックフレーム ...................................... 90
割込みベクタテーブル
割込みベクタテーブル生成機能 .......................... 97
割込みマスク
割込みマスク解除機能 .......................................... 96
割込みマスク設定機能 .......................................... 96
割込みレベル
割込みレベル設定機能 .......................................... 97
割込みレベルの設定機能 .................................... 108
れ
レジスタ
レジスタの設定 ( 引数のスタック渡し ) .............77
レジスタの設定 ( 引数のレジスタ渡し ) .............87
レジスタの保証 ( 引数のスタック渡し ) .............77
レジスタの保証 ( 引数のレジスタ渡し ) .............87
レジスタ退避
レジスタ退避なしの割込み関数機能 .................111
レジスタバンク
レジスタバンク番号の設定機能 .........................107
レジスタ渡し
引数 ( 引数のレジスタ渡し ) .................................82
引数の拡張形式 ( 引数のレジスタ渡し ) .............84
関数呼び出しインタフェース
( 引数のレジスタ渡し ) ....................................79
スタックフレーム ( 引数のレジスタ渡し ) .........80
戻り値 ( 引数のレジスタ渡し ) .............................88
呼び出し手続き ( 引数のレジスタ渡し ) .............85
レジスタの設定 ( 引数のレジスタ渡し ) .............87
レジスタの保証 ( 引数のレジスタ渡し ) .............87
レベル
エラーレベル ...........................................................58
最適化レベルごとに実施する
最適化について ................................................44
割込みレベル設定機能 ...........................................97
割込みレベルの設定機能 .....................................108
July 1, 2014, CM42-00328-8
345
索引
So ft war e
346
S up po r t
M a nu al
CM42-00328-8, July 1, 2014
S o ft w a r e
S u p p o r t
M a n u a l
奥付
CM42-00328-8
Spansion • SOFTWARE SUPPORT MANUAL
F2MC-16 ファミリ
SOFTUNE® C コンパイラマニュアル
2014 年 7 月 Rev. 8.0
発行
Spansion Inc.
編集
マーケティングコミュニケーション部
July 1, 2014, CM42-00328-8
347
So ft war e
S up po r t
M a nu al
免責事項
本資料に記載された製品は、通常の産業用 , 一般事務用 , パーソナル用 , 家庭用などの一般的用途 ( ただし、用途の限定はあ
りません ) に使用されることを意図して設計・製造されています。(1) 極めて高度な安全性が要求され、仮に当該安全性が
確保されない場合、社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途 ( 原子力施設における
核反応制御 , 航空機自動飛行制御 , 航空交通管制 , 大量輸送システムにおける運行制御 , 生命維持のための医療機器 , 兵器シ
ステムにおけるミサイル発射制御等をいう ) 、ならびに (2) 極めて高い信頼性が要求される用途 ( 海底中継器 , 宇宙衛星等を
いう ) に使用されるよう設計・製造されたものではありません。上記の製品の使用法によって惹起されたいかなる請求また
は損害についても、Spansion は、お客様または第三者、あるいはその両方に対して責任を一切負いません。半導体デバイス
はある確率で故障が発生します。当社半導体デバイスが故障しても、結果的に人身事故 , 火災事故 , 社会的な損害を生じさ
せないよう、お客様において、装置の冗長設計 , 延焼対策設計 , 過電流防止対策設計 , 誤動作防止設計などの安全設計をお
願いします。本資料に記載された製品が、外国為替及び外国貿易法、米国輸出管理関連法規などの規制に基づき規制され
ている製品または技術に該当する場合には、本製品の輸出に際して、同法に基づく許可が必要となります。
商標および注記
このドキュメントは、断りなく変更される場合があります。本資料には Spansion が開発中の Spansion 製品に関する情報が
記載されている場合があります。Spansion は、それらの製品に対し、予告なしに仕様を変更したり、開発を中止したりする
権利を有します。このドキュメントに含まれる情報は、現状のまま、保証なしに提供されるものであり、その正確性 , 完全
性 , 実施可能性および特定の目的に対する適合性やその市場性および他者の権利を侵害しない事を保証するものでなく、ま
た、明示 , 黙示または法定されているあらゆる保証をするものでもありません。Spansion は、このドキュメントに含まれる
情報を使用することにより発生したいかなる損害に対しても責任を一切負いません。
Copyright ©2004-2014 Spansion Inc. All rights reserved.
商標:Spansion®, Spansion ロゴ ( 図形マーク ), MirrorBit®, MirrorBit® EclipseTM, ORNANDTM 及びこれらの組合せは、米国・
日本ほか諸外国における Spansion LLC の商標です。第三者の社名・製品名等の記載はここでは情報提供を目的として表記
したものであり、各権利者の商標もしくは登録商標となっている場合があります。
348
CM42-00328-8, July 1, 2014