2.1 概要
2.1.4 リストファイル
リストファイルはアセンブラの出力ファイルで、生成されたコードについての情報が含まれています。情 報の量と形式は、-Lオプションを使用したかどうかにより異なってきます。このファイルの名前は、出力 ファイルのベース名に拡張子.lstを付けたものになります。-lオプションを指定した場合、リストファイ ルは、唯一の生成ファイルになります。-lを指定した場合、アセンブラエラー/警告が発生したときにもリス トファイルが生成されます。この場合、エラー/警告は、エラー/警告を発生させたソース行のすぐ下に出力 されます。
2.1.4.1 絶対リストファイルの生成
アプリケーション全体をロケートした後、アセンブラのアセンブラソース入力ファイルとして絶対リスト ファイルを生成することができます。アセンブラソースから絶対リストファイルを生成するとき、そのア センブラソースが所属するアプリケーションのロケータマップファイルを使用して、アセンブルし直す必 要があります。ロケータマップファイルを生成する方法については、"4.5 ロケータの出力"を参照してくだ さい。
リストファイルオプション-lでリストファイルの生成を有効にした場合、マップファイルがアセンブラの 入力として指定されていれば、絶対リストファイルが生成されます。絶対リストファイルの生成を有効 にしている場合、すでに生成されているオブジェクトファイルは上書きされません。絶対リストファイ ルの生成は、入力としてファイル名拡張子.mapを持つマップファイルが指定されている場合に限り有効 になります。
注: 絶対リストファイルを生成したい場合、オブジェクトファイルを生成したいときと同じオプションを 指定する必要があります。オプションが同じでない場合、不正な絶対リストファイルが生成されます。
例:
最初の起動コマンドが、
as88 -Ms test.src
だった場合、絶対リストファイルを生成するとき、同じオプション(-Ms)と-lオプションを指定する必要 があります。
as88 -Ms -l test.src test.map
このコマンドを使用すると、絶対リストファイル"test.lst"が作成されます。
2.1.4.2 ページヘッダ
ページヘッダは、4行で構成されます。
最初の1行には、次のような情報が含まれます。
- アセンブラ名についての情報 - バージョンとシリアル番号 - 著作についての表記
2行目には、TITLE(最初のページ)またはSTITLE(以降のページ)のコントロールで指定されたタイトルの 他、ページ番号が含まれます。
3行目には、ファイルの名前(最初のページ)が含まれるか、または空になります(以降のページ)。 4行目には、次の節で説明するようなソースリストのヘッダが含まれます。
例:
S1C88 assembler va.b rc SNzzzzzz-zzz (c) year TASKING, Inc.
Title for demo use only page 1 /tmp/hello.asm
ADDR CODE CYCLES LINE SOURCELINE
2.1.4.3 ソースリスト
ページヘッダには、次のような行が記述されます。
ADDR CODE CYCLES LINE SOURCELINE 次にそれぞれのカラムについて説明します。
ADDR
このカラムには、メモリアドレスが入ります。このアドレスは(6桁の)16進数になり、リロケータブル セクションの最初からのオフセット、または絶対セクションの絶対アドレスを示します。
オブジェクトコードを生成する行の場合、この値は行の最初に記述されます。他の行の場合、何も記述 されません。
例:
ADDR CODE LINE SOURCELINE
000000 1 defsect ".text", code 000000 2 sect ".text"
000000 CEC6rr 4 ld xp,#@dpag(data_label) 000003 CEC4rr 7 ld nb,#@cpag(label) 000006 F101 8 jr label
. .
021234 13 defsect ".data", data at 21234h 14 data_label:
021234 16 ds 49 | RESERVED
021264 CODE
このカラムには、アセンブラによってこのソース行のため生成された16進法のオブジェクトコードが入 ります。ここに記述されるコードは、オブジェクトモジュール内に生成されたコードと必ずしも同じで はありません。このコードは、リロケータブルコードの他、リロケータブル部分や外部部分になること もあります。この場合、リストのリロケータブルコード部分に対して文字"r"がプリントされます。
空間を割り当てる行(DS)の場合、コードフィールドには"RESERVED"というテキストが入れられます。
例:
ADDR CODE LINE SOURCELINE .
.
000000 CEC6rr 4 ld xp,#@dpag(data_label) 000003 CEC4rr 7 ld nb,#@cpag(label) 000006 F101 8 jr label
. .
021234 13 defsect ".data", data at 21234h 14 data_label:
021234 16 ds 49 | RESERVED
021264
この例では、"RESERVED"という単語が、ds擬似命令で予約された空間を示しています。
CYCLES
アセンブラでオプション-LYを指定した場合、リストファイルにCYCLESカラムも表示されます。最初 の値は、命令のサイクルカウントを示し、2番目の値は、累積サイクルカウントを示します。
例:
ADDR CODE CYCLES LINE SOURCELINE .
.
000000 CEC6rr 3 3 4 ld xp,#@dpag(data_label) 000003 CEC4rr 4 7 7 ld nb,#@cpag(label) 000006 F101 2 9 8 jr label
. . LINE
このカラムには、行番号が入れられます。行番号は、それぞれの入力行を示す10進数で、それぞれの ソース行に対応する番号が、1から順に入れられます。($LIST OFFなどで)行のリストを抑制した場合、
この値は1ずつ増えていきます。
例:
次のソース部分、
;Line 12
$LIST OFF
;Line 14
$LIST ON
;Line 16
により、次のリストファイル部分が生成されます。
ADDR CODE CYCLES LINE SOURCELINE .
.
12 ;Line 12 16 ;Line 16 SOURCELINE
このカラムには、ソーステキストが入ります。これは、ソースモジュールのソース行のコピーになりま す。リストファイルを読みやすくするため、タブがスペースに展開されています。
リストのソースカラムが狭すぎて、すべてのソース行を表示できない場合、そのソース行は次のリスト 行に続けられます。
エラーや警告は、リストファイルで、エラーや警告の原因になったソース行のすぐ下に出力されます。
例:
ADDR CODE CYCLES LINE SOURCELINE .
.
021271 FF8F 29 dw @coff(@caddr(300,8fffh)) as88 W172: /tmp/t.src line 29 : page number must be between 0 and FF