つづいてZ8k-COFF
COFFの資料はネット上にいくらでも転がっているので、理解は楽だろうと踏んでいたのですが、x86のものや、WidowsのPEフォーマットのものばかりで、Z8000のCPU依存に関する情報はほとんどありません。
それでも基本構造は同じなので、機種依存はGNUのBFDライブラリのソースコードを参照しながら進めています。
参考にした情報のリンクを上げておきます。
DJGPP COFF Spec
逆アセのスス乂
BFDソースコード
gccとasでテスト用のオブジェクトファイルを作り、バイナリエディタとobjdumpで変化を確認していく地道な作業を続けており、Z8000依存で判明した部分や忘れてしまいそうな事などをメモ代わりに書いていきます。変数名は、DJGPPのドキュメントに合わせてあります。
COFFの資料はネット上にいくらでも転がっているので、理解は楽だろうと踏んでいたのですが、x86のものや、WidowsのPEフォーマットのものばかりで、Z8000のCPU依存に関する情報はほとんどありません。
それでも基本構造は同じなので、機種依存はGNUのBFDライブラリのソースコードを参照しながら進めています。
参考にした情報のリンクを上げておきます。
DJGPP COFF Spec
逆アセのスス乂
BFDソースコード
gccとasでテスト用のオブジェクトファイルを作り、バイナリエディタとobjdumpで変化を確認していく地道な作業を続けており、Z8000依存で判明した部分や忘れてしまいそうな事などをメモ代わりに書いていきます。変数名は、DJGPPのドキュメントに合わせてあります。
Z8k-COFF フォーマット
次の7パートからなっている。
・ ファイルヘッダ
・ オプショナルヘッダ
・ セクションテーブル
・ セクションデータ
・ リロケーション情報
・ シンボルテーブル
・ 文字列テーブル
・ ファイルヘッダ
・ オプショナルヘッダ
・ セクションテーブル
・ セクションデータ
・ リロケーション情報
・ シンボルテーブル
・ 文字列テーブル
ファイルヘッダ
ファイルの全体的な構造が記されている
f_magic
0x8000 - Z8001/2の識別はflagsによる。
f_flags
0x1000 - Z8001 セグメンテッドコード
0x2000 - Z8002 非セグメンテッドコード
0x0200 - 不明 (ビッグエンディアンかも)
0x0008 - ローカルシンボル情報なし
0x0004 - ライン番号情報なし
0x0002 - 実行形式
0x0001 - リロケーション情報なし
オプショナルヘッダ
実行ファイルの場合のみ付き、実行ファイルに必要な付加情報が入っている。
下の2つは詳細不明。
magic
0x0000
vstamp
0x0000
セクションテーブル
セクションの情報が記されたセクションヘッダの配列。
s_flags
0x80 - 初期地を持たないデータ(BSS)
0x40 - 初期値をもつデータ
0x20 - 実行コード
0 件のコメント:
コメントを投稿