3: 2008-11-13 (木) 21:44:44 |
4: 2008-11-14 (金) 20:11:39 |
| --ネストの中にネストのタグが含まれることも当然ありうるが、その場合はネスト全体でタグ数1と数える。上記の例を参照のこと。 | | --ネストの中にネストのタグが含まれることも当然ありうるが、その場合はネスト全体でタグ数1と数える。上記の例を参照のこと。 |
| -[10]~[17] : | | -[10]~[17] : |
- | --バイナリ記述用タグ。eh4ではないエンコードのビット列などを格納するために使われている。まず一つのパラメータがeh4で記述され、それがこのタグ内に含まれるバイナリの長さを表す。ただしこの長さはバイト単位でもビット単位でもなく、4bit単位である。 | + | --4bit数値による一次元配列記述用タグ。eh4ではないエンコードのビット列などを格納するために使われている。まず一つのパラメータがeh4で記述され、それがこのタグ内に含まれるバイナリの長さを表す。ただしこの長さはバイト単位でもビット単位でもなく、4bit単位である。 |
| -[18]~[1f] : | | -[18]~[1f] : |
- | --書きつかれたので詳細は後日。 | + | --eh4による一次元配列記述用タグ。eh4でエンコードされた数値列を格納するために使われている。まず一つのパラメータがeh4で記述され、それがこのタグ内に含まれるeh4数値の個数を表す。 |
| -[20]以降のタグ番号については、どんなフォーマットを取るかの規定はまだない。 | | -[20]以降のタグ番号については、どんなフォーマットを取るかの規定はまだない。 |
| *** タグのコード(ルート内) | | *** タグのコード(ルート内) |
| ---- | | ---- |
| -[0C] コメントタグ。このタグ内の記述はすべて無視する。 | | -[0C] コメントタグ。このタグ内の記述はすべて無視する。 |
| + | --コメント用タグが何種類もあるのは、バイナリエディタでちょっとタグをコメントアウトしたいときのため。それぞれのフォーマットタイプにコメント形式がある。 |
| + | --[01]~[0B]の形式のコメントは原則として用意しない。これは [00] [00] に書き換えることでコメントアウトできるから。・・・むろん複雑な構造のタグも全部[00]で埋め尽くすことでもコメントアウトはできるが、修正箇所が多くて大変だろうと思うので、それぞれにコメント形式がある。 |
| + | --もちろんコメントアウトのみならず、構造を持ったコメントとして使うこともできる。いずれにせよ、「ぐいぐい01」ローダはこれらを無条件に読み飛ばす。そして[01]~[0B]の形式のコメントはこの用途でも使い道がないと考えているので用意していない(数値一つをただ置けるだけではコメントとして記述力がなさ過ぎる)。 |
| -[0D] セクション記述タグ。下記参照。 | | -[0D] セクション記述タグ。下記参照。 |
| ---- | | ---- |
| + | -[18] コメントタグ。このタグ内の記述はすべて無視する。 |
| -上記以外はリザーブ。 | | -上記以外はリザーブ。 |
| *** タグのコード(セクション記述タグ内) | | *** タグのコード(セクション記述タグ内) |
| -[14] セクションイメージタグ。バイナリデータをそのまま記述。 | | -[14] セクションイメージタグ。バイナリデータをそのまま記述。 |
| ---- | | ---- |
- | -[19] コンパクト型リロケーション情報。書きつかれたので詳細は後日。 | + | -[18] コメントタグ。このタグ内の記述はすべて無視する。 |
| + | -[19] コンパクト型リロケーション情報。これを配置するときは必ず[14]の後になる(直後である必要はない)。 |
| + | --このリロケーションアルゴリズムは、バイナリの指定したオフセットからの4バイトに対して、指定したセクションの開始アドレスの値をリトルエンディアンで加えるというただそれだけのことをする。 |
| + | --[19]ではeh4の配列になっているわけだが、最初の要素は「*どの*セクションの開始アドレスを加算するか」である。残りの要素が、補正の必要なオフセットの羅列になっているのだが、これはコンパクト化のための細工がある。まず補正が必要なオフセットをすべて並べて、これをソートして昇順にする。そしてデータセクションへのリンク情報の場合、オフセットを全部4で割る(つまりデータセクション内のアドレス情報はすべてアラインされていると仮定している・・・これに適合しない場合は[1A]のリロケーション情報を使う)。さらにオフセット列の最初の要素以外は前の値からの増分値のみをeh4にして並べる。 |
| + | --一つのセクションに対して、コードセクションとデータセクションの両方の補正が必要になることももちろんありうる。その場合は、[19]のタグが2回現れることとなる。bssセクションのアドレスも参照する場合は3回現れることもありえるだろう。 |
| + | -[1A] コンパクトではないリロケーション情報。フォーマットの詳細はまだ決めていない。 |
| ---- | | ---- |
| -上記以外はすべてリザーブ。 | | -上記以外はすべてリザーブ。 |