つづき
シンボル値。セグメント番号とタイプによって、値の意味が変わる。
セグメント番号 : 0-127, タイプが1, 3, 4の場合は、セグメント内でのオフセットアドレス
シンボルテーブル 12 byte
参照されるシンボルの情報(x_sym) の配列。
x_sy_sg (1 byte)
シンボルが含まれるセグメント番号(セグメント情報のインデックス)
255の場合は、即値か外部参照を示している。
x_sy_fl (1byte)
シンボルのタイプ
1 - ローカルシンボル (デバッグ用)
2 - 未定義の外部シンボル (参照先が外部)
3 - グルーバルシンボル (外部から参照可能なシンボル)
4 - セグメント名
1 - ローカルシンボル (デバッグ用)
2 - 未定義の外部シンボル (参照先が外部)
3 - グルーバルシンボル (外部から参照可能なシンボル)
4 - セグメント名
x_sy_val (2 byte)
シンボル値。セグメント番号とタイプによって、値の意味が変わる。
セグメント番号 : 0-127, タイプが1, 3, 4の場合は、セグメント内でのオフセットアドレス
セグメント番号 : 255, タイプ : 1 の場合は、16bit即値
セグメント番号 : 255, タイプ : 2, 値 : 0 の場合は外部シンボル
セグメント番号 : 255, タイプ : 2, 値 : 0 の場合は外部シンボル
セグメント番号 : 255, タイプ : 2, 値 : 0 以外の場合は、BSSに確保するメモリースペース
x_sy_name (8 byte)
8文字のシンボル名
8文字に満たない場合は、0で埋められる。8文字の場合は、0で終端されないので注意。
補足
コンスタントプール内のシンボルはローカルで、必ずしもシンボルテーブルに登録されない。
引数の文字列などはラベルがないので、リロケーション情報があるだけ。
補足
コンスタントプール内のシンボルはローカルで、必ずしもシンボルテーブルに登録されない。
引数の文字列などはラベルがないので、リロケーション情報があるだけ。
セグメント番号がBSSを指すのは、明示的にBSSセクションを指定した場合のみらしい。
初期値のないグローバル変数は、セグメント番号 : 255, タイプ : 2 になっており、
複数のオブジェクトで定義されている場合は、その中から最大値がBSSに確保される。
0 件のコメント:
コメントを投稿