1.4 コンパイラの使用
1.4.1 コントロールプログラム
コントロールプログラムcc88には、1行のコマンド行から、S1C88ツールチェーンのいくつかの異なるコン ポーネントを起動する機能があります。コントロールプログラムは、コマンド行に記述されたソースファ イルとオプションを任意の順序で受け付けます。
コントロールプログラムの起動書式は、次のようになります。
cc88 [[option]...[control]...[file]...] ...
オプションの前には、"-"(マイナス記号)を付けます。入力ファイルfileには、以下で説明する拡張子を付け ることができます。
コントロールプログラムは、次の引数タイプを認識します。
● "-"文字で始まる引数はオプションです。オプションによっては、コントロールプログラム自身によって 解釈されるものもありますが、多くのオプションは、そのオプションを受け付けるツールチェーンのプ ログラムに渡されます。
● .c接尾辞が付いた引数は、Cソースプログラムと見なされ、コンパイラに渡されます。
● .asm接尾辞が付いた引数は、アセンブラソースファイルと見なされ、前処理されてアセンブラに渡さ
れます。
● .src接尾辞が付いた引数は、コンパイルされたアセンブラソースファイルと見なされ、直接アセンブ
ラに渡されます。
● .a接尾辞が付いた引数は、ライブラリファイルと見なされ、リンカに渡されます。
● .obj接尾辞が付いた引数は、オブジェクトファイルと見なされ、リンカに渡されます。
● .out接尾辞が付いた引数は、リンクされるオブジェクトファイルと見なされ、ロケータに渡されます。
ロケータは、起動時に1つの.outファイルだけを受け付けます。
● .dsc接尾辞が付いた引数は、ロケータコマンドファイルとして処理されます。コマンド行に拡張子
.dscを持つファイルがある場合、コントロールプログラムは、ロケートフェーズを追加する必要があ ると見なします。.dsc接尾辞を持つファイルがない場合、コントロールプログラムは、リンクが終わっ たら停止します(ただし前のフェーズで停止するよう指示されていない場合)。
● 他のファイルは、すべてオブジェクトファイルと見なされ、リンカに渡されます。
通常、コントロールプログラムは、リンクロケートフェーズで絶対出力ファイルを生成した後、すべての ソースファイルをコンパイルおよびアセンブルしてオブジェクトファイルを生成します。ただし、アセン ブラ、リンカ、ロケータのそれぞれの段階を抑制するためのオプションもあります。コントロールプログ ラムは、コンパイルプロセスの中間段階として固有のファイル名を生成します(後で削除される)。コンパ イラとアセンブラが連続して呼び出される場合、コントロールプログラムはコンパイラの前処理によって アセンブラファイルが生成されないようにします。通常アセンブラ入力ファイルが最初に前処理されます。
次のオプションが、コントロールプログラムによって解釈されます。
コントロールプログラムのオプション
オプション -Mc -Md -Ml -Ms -Ta arg -Tc arg -Tlk arg -Tlc arg -V -al -c -cl -cs -f file -ieee -nolib -o file -srec -tmp -v -v0
説 明 コンパクトコードメモリモデル
コンパクトデータメモリモデル ラージメモリモデル
スモールメモリモデル
引数を直接アセンブラに渡します。
引数を直接Cコンパイラに渡します。
引数を直接リンカに渡します。
引数を直接ロケータに渡します。
バージョンヘッダのみを表示します。
絶対リストファイルを生成します。
リンクしません。.objの段階で停止します。
ロケートしません。.outの段階で停止します。
アセンブルしません。Cファイルをコンパイルし.srcファイルを出力して停止します。
fileから引数を読み込みます("-"は標準入力を表す)。
ロケータの出力ファイルフォーマットをIEEE-695に設定します(デフォルト)。
標準ライブラリとリンクしません。
出力ファイルを指定します。
ロケータの出力ファイルフォーマットをMotorola Sレコードに設定します。
中間ファイルを削除しません。
コマンドの起動状況を表示します。
コマンドの起動状況を表示しますが、実際には起動しません。
1.4.1.1 コントロールプログラムのオプションについての詳細な説明
-M{s|c|d|l} 使用するメモリモデルを指定します。
スモール (s)
コンパクトデータ (d)
コンパクトコード (c)
ラージ (l)
-Taarg -Tcarg -Tlkarg -Tlcarg
これらのオプションを使用すると、コマンド行引数を直接アセンブラ(-Ta)、Cコンパイラ
(-Tc)、リンカ(-Tlk)、ロケータ(-Tlc)に渡すことができます。これらのオプションは、コ ントロールプログラムが認識できないオプションを、適切なプログラムに渡すときに使用 することができます。引数は、これらのオプションに直接追加するか、コントロールプロ グラムの独立した引数としてオプションの後に続けます。
-V コントロールプログラムが終了する直前に、バージョン番号を含む著作権ヘッダが表示され ます。
-al アプリケーションのそれぞれのモジュールで絶対リストファイルを生成します。
-c -cl -cs
通常、コントロールプログラムは、すべての段階を起動して、指定された入力ファイルから 絶対ファイルを構築します。これらのオプションを付けると、Cコンパイラ、アセンブラ、
リンカ、ロケータのそれぞれの段階をスキップすることができます。-csオプションを付ける と、コントロールプログラムは、Cソースファイル(.c)のコンパイルの後、およびアセンブ ラソースファイル(.asm)の前処理の後停止して、生成される.srcファイルをそのまま保持 します。-cオプションを付けると、コントロールプログラムは、アセンブラの後停止し、1つ または複数のオブジェクトファイル(.obj)を出力します。-clオプションを付けると、コント ロールプログラムは、リンク段階の後停止し、1つまたは複数のリンカオブジェクトファイル
(.out)を出力します。
-f file コマンド行引数をfileから読み込みます。標準出力を示すときは、ファイル名に"-"を使用する ことができます。コマンド行のサイズの制限を回避するために、コマンドファイルを使用す ることができます。これらのコマンドファイルには、実際のコマンド行で使用できないオプ ションを入れます。コマンドファイルは、makeユーティリティなどを使用して簡単に作成で きます。コマンドファイルには、次のような簡単な規則があります。
1. コマンドファイルの同じ行に複数の引数を指定することができます。
2. 引数にスペースを入れるときは、その引数を一重引用符または二重引用符で囲みます。
3. 引用符の付いた引数の中で一重引用符または二重引用符を使用する場合、次の規則に従 います。
a. 中に入っている引用符が、一重引用符のみまたは二重引用符のみの場合、引数を囲む ときもう一方の引用符を使用します。つまり、引数に二重引用符が含まれる場合、引 数を一重引用符で囲みます。
b. 両方の引用符が使用されている場合、それぞれの引用符がもう一方の引用符で囲まれ るような形で、引数を分割する必要があります。
例:
"This has a single quote ' embedded"
または
'This has a double quote " embedded' または
'This has a double quote " and a single quote '"' embedded"
4. オペレーティングシステムによっては、テキストファイル内の行の長さに制限がある場 合があります。この制限を回避するため、継続行を使用することができます。これらの 行は、最後にバックスラッシュと改行が付きます。引用符の付いた引数の場合、継続行 は、次の行のスペースを取らないでそのままつなげられます。引用符が付いていない引 数の場合、次の行にあるすべてのスペースは削除されます。
例:
"This is a continuation ¥ line"
→ "This is a continuation line"
control(file1(mode,type),¥
file2(type))
→ control(file1(mode,type),file2(type)) 5. コマンド行ファイルは、最高で25レベルまでネストすることができます。
-ieee -srec
これらのオプションを使用すると、絶対ファイルのロケータ出力フォーマットを指定するこ とができます。出力ファイルは、IEEE-695ファイル(.abs)、Motorola Sレコードファイル
(.sre)のいずれかにすることができます。デフォルト出力は、IEEE-695ファイル(.abs)に なります。
-nolib このオプションを使用すると、コントロールプログラムが標準ライブラリをリンカに提供し
なくなります。通常の場合、コントロールプログラムは、リンカにデフォルトCライブラリ とランタイムライブラリを提供します。必要なライブラリは、コンパイラのオプションに よって決まります。
-o file 通常、このオプションは、出力ファイル名を指定するためにロケータに渡されます。-clオプ
ションを使用してロケートフェーズを抑制する場合、-oオプションがリンカに渡されます。
-cオプションを使用してリンクフェーズを抑制すると、ソースファイルが1つだけ指定されて いる場合に限り、-oオプションがアセンブラに渡されます。-csオプションを使用してアセン ブラフェーズを抑制すると、-oオプションがコンパイラに渡されます。引数は、これらのオ プションに直接追加するか、コントロールプログラムの独立した引数としてオプションの後 に続けます。