-

Objtohex

提供: HI-TECH C for CP/M Fan WIKI(JP)
移動先: 案内検索

OBJTOHEX

HI-TECHリンカはシンプルなバイナリファイルやオブジェクトファイルの出力ができます。その他の必要なフォーマットはOBJTOHEXユーティリティプログラムで生成する必要があります。これはリンカが生成したオブジェクトファイルを、様々なhexフォーマットを含む、様々なことなるフォーマットに変換します。このプログラムは以下のようにして呼び出されます。

OBJTOHEX options inputfile outputfile

全ての引数はオプションです。出力ファイルが省略された場合、デフォルトはl.hex、もしくは-bオプションが使われたかにより、l.binになります。入力ファイルのデフォルトはl.objです。

オプションは以下の通りです。

-Baddr
バイナリイメージ出力をします。これはリンカの-Cオプションに類似しています。addrが与えられると、イメージファイルがaddrになります。addrが省略されると、イメージファイルの最初のバイトが最低位バイトに初期化されます。addrは10進数、8進数、16進数が可能です。デフォルトの基数は10進数で、接尾辞のoやOは8進数、Hは16進数を表します。従って-B100Hは.COMフォーマットを生成します。
-I
インテルHEX出力フォーマットでシンボルレコードをインクルードします。どのシンボルレコードもオブジェクトレコードに類似した形式を持っていますが、別のレコードタイプです。レコード内のデータレコードはシンボル名で、アドレスはシンボルの値です。これはROMデバッガをダウンロードする時に便利です。
-C
標準入力からチェックサム指定を読み込みます。チェックサム指定を以下に挙げます。普通、指定はファイルの中にあります。
-Estack
このオプションはMS-DOSの.EXEフォーマットファイルを生成します。プログラムの最大スタックサイズを決定する、オプションのスタック引数は実行時に配置されます。デフォルトでは、プログラムは、64kまでの最大スタックサイズに割り当てられます。スタック引数が与えられた場合スタックサイズは引数まで拡張されません??これはプログラムが使用するメモリ量を限定するために使います。スタック引数は上記の-Bへの引数と同じ形式を取ります。
-8stack
このオプションはCP/M-86の.CMDファイルを生成します。スタック引数は-Eオプションの引数と同じ形式を取ります。
-Astack

これはUNIXシステム(特にVenix-86)のa.out形式を生成する時に使われます。スタック引数がゼロの場合、データセグメントが64kになり、それ以外の場合はスタックはデータセグメントよりも下のアドレス??に置かれ、そのサイズがスタックになります。これはリンクの-pオプションと連動する適切な引数でなければなりません。

-M
This flag will instruct objtohex to produce Motorola 'S' format hex output.
-L

このオプションはlargeモデルのプログラムを生成する時に使用されます。オブジェクトファイル内のリロケーション情報を保持するようにリンカは-LMオプションとともに使われます。objtohexへの-Lオプションを使用するとセグメントリロケーション情報を、プログラムがロードされた時に実行ファイルの中で適切なデータに変換します??オペレーションシステムでもランタイムスタートコードでも、プログラムが実際にロードされるメモリ内のセグメント参照にリロケーションデータを調整します??-Lオプションがシンボル名に続く場合、リロケーション情報は、出力ファイルで表されるアドレスに保存されます。

-L__Bbss
BSS PSECTのベース(__BbssでBSS PSECTのロードアドレスがリンカに定義されている)に格納されるようにします。特別なシンボルDos_hdrが使用されると、リロケーション情報は.EXEのファイルヘッダに格納されます??これは-Eオプションと使用された時にのみ有効です。
-S
この-Sオプションはobjtohexに対してシンボルファイルを書き出すように指示します。シンボルファイル名は-Sの後に-Sxx.symのようにして与えられます

他のフォーマットが特別に要求されない場合、objtohexはインテルHEXフォーマットでファイルを生成します。これはPROMプログラミングなどのダウンラインローディングに向いています。HPフォーマットはHP64000などのコード転送やPROMプログラミングに向いています。

チェックサムの指定はチェックサム計算を自動化します。チェックサム指定は、どの行にも1つのチェックサムがある数行の形式を取ります。チェックサム行の書式は以下の通りです。

addr1-addr2 where1-where2 +offset

addr1, addr2, where1, where2 ,offsetの全てが、H接尾辞を伴わない16進数です。これはaddr1からaddr2まで含むところのチェックサム計算し、where1からwhere2を含むところまでに配置するという指定です。8bitチェックサムの場合、これらの2つのアドレスは同じである必要があります。チェックサムは低バイトが先で、where1はwhere2よりも小さくなくてはなりません。その他の場合、ゼロに初期化されます。以下は例です。

0005-1FFF 3-4 +1FFF

これは5から1FFFHを含むところまでのチェックサム、その後1FFFHから??チェックサムが付加されます??16bitチェックサムのは3と4に置かれ、低位バイトが3になります。全てがゼロのROM、もしくはメモリに誤って配置されたROM用にチェックサムは1FFFで初期化されます。実行時のチェックサムの確認はチェックサムの対象となるROMのアドレスとはの最後に付加されます??この例の場合は1FFFHです。初期化する値は変更できます。