7: 2008-11-19 (水) 19:51:54 [6] | 現: 2024-01-08 (月) 12:58:41 k-tan[7] [8] | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | * 「ぐいぐい01」のアプリフォーマット | + | TITLE:x |
+ | * 「ぐいぐい01」のアプリフォーマット [#a5e9975a] | ||
-(by [[K]], 2008.11.13) | -(by [[K]], 2008.11.13) | ||
- | *** 註 | + | *** 註 [#g2117a6b] |
//-所詮はOSASK-HB向けなのでまあ暫定的なものです。とりあえず2008.11.13時点で最新のabcdw003での仕様を書きました。 -- commented_out by K, 2008.11.19 | //-所詮はOSASK-HB向けなのでまあ暫定的なものです。とりあえず2008.11.13時点で最新のabcdw003での仕様を書きました。 -- commented_out by K, 2008.11.19 | ||
-所詮はOSASK-HB向けなのでまあ暫定的なものです。とりあえず2008.11.19時点で近日リリース予定のabcdw004での仕様を書きました。 | -所詮はOSASK-HB向けなのでまあ暫定的なものです。とりあえず2008.11.19時点で近日リリース予定のabcdw004での仕様を書きました。 | ||
- | *** 基本構造 | + | -これはCOLOR(#ff0000){''旧仕様''}です。新仕様はこちら。→[[GUIGUI01/man0005]] |
+ | *** 基本構造 [#hc8ff9de] | ||
-最初の2バイトがシグネチャで、0x47 0x01。 | -最初の2バイトがシグネチャで、0x47 0x01。 | ||
+ | --小文字アルファベット+0x00~0x1fの組み合わせは他でも使うかもしれないので、誰かがもし下記に似たフォーマットを独自に設計して利用するつもりなら避けてもらえると個人的にはありがたい。 | ||
-それ以降はすべてタグ。 | -それ以降はすべてタグ。 | ||
//-数値はたいてい[[GUIGUI01/memo01]]の(6)の方法でエンコードされている。以下これをeh4エンコードと呼ぶ。 -- commented_out by K, 2008.11.19 | //-数値はたいてい[[GUIGUI01/memo01]]の(6)の方法でエンコードされている。以下これをeh4エンコードと呼ぶ。 -- commented_out by K, 2008.11.19 | ||
Line 20: | Line 23: | ||
// -- commented_out by K, 2008.11.19 | // -- commented_out by K, 2008.11.19 | ||
-(例)hellok1.g01 (いわゆる27バイトの"hello, world\n") | -(例)hellok1.g01 (いわゆる27バイトの"hello, world\n") | ||
- | 47 01 8D 19 4C 2A FF D5 35 01 24 8D 68 65 6C 6C | + | 47 01 8D 81 94 AA FF D5 35 01 24 8D 68 65 6C 6C |
6F 2C 20 77 6F 72 6C 64 0A 44 03 | 6F 2C 20 77 6F 72 6C 64 0A 44 03 | ||
47 01 -- シグネチャ。 | 47 01 -- シグネチャ。 | ||
- | 8D 1_ -- [0D] セクション開始タグ, ネスト内タグ数1。 | + | 8D 81 -- [0D] セクション開始タグ, ネスト内タグ数1。 |
- | _9 4_C 2A -- [14] イメージ展開タグ, イメージ長 0x2a = 42。つまり21バイト。 | + | 94 AA -- [14] イメージ展開タグ, イメージ長 0x2a = 42。つまり21バイト。 |
FF D5 35 01 24 ... 0A 44 03 -- コードセクションの中身。 | FF D5 35 01 24 ... 0A 44 03 -- コードセクションの中身。 | ||
- | *** タグのフォーマット | + | *** タグのフォーマット [#o315fdd6] |
-タグ番号はすべてgh4でエンコード。このルールはネスト内のタグでも有効。 | -タグ番号はすべてgh4でエンコード。このルールはネスト内のタグでも有効。 | ||
-[00] : | -[00] : | ||
Line 37: | Line 40: | ||
--何らかの数値を指定。後続パラメータは1つで、gh4でエンコード。 | --何らかの数値を指定。後続パラメータは1つで、gh4でエンコード。 | ||
-[0C]~[0F] : | -[0C]~[0F] : | ||
- | --ネスト構造型タグ。タグの中にタグが複数含まれるタグ(0や1つの場合もあるが)。まず一つのパラメータがeh4で記述され、それがネスト内に含まれるタグの数を表す。 | + | //--ネスト構造型タグ。タグの中にタグが複数含まれるタグ(0や1つの場合もあるが)。まず一つのパラメータがeh4で記述され、それがネスト内に含まれるタグの数を表す。 -- commented_out by K, 2008.11.19 |
+ | --ネスト構造型タグ。タグの中にタグが複数含まれるタグ(0や1つの場合もあるが)。まず一つのパラメータがgh4で記述され、それがネスト内に含まれるタグの数を表す。 | ||
--ネストの中にネストのタグが含まれることも当然ありうるが、その場合はネスト全体でタグ数1と数える。上記の例を参照のこと。 | --ネストの中にネストのタグが含まれることも当然ありうるが、その場合はネスト全体でタグ数1と数える。上記の例を参照のこと。 | ||
-[10]~[17] : | -[10]~[17] : | ||
Line 50: | Line 54: | ||
--最初にgh4があって、これが文字列の個数に相当。そしてその個数の回数だけ「各文字列長に相当するgh4と文字列そのものに相当する4bit配列」を繰り返す。 | --最初にgh4があって、これが文字列の個数に相当。そしてその個数の回数だけ「各文字列長に相当するgh4と文字列そのものに相当する4bit配列」を繰り返す。 | ||
-[28]以降のタグ番号については、どんなフォーマットを取るかの規定はまだない。 | -[28]以降のタグ番号については、どんなフォーマットを取るかの規定はまだない。 | ||
- | *** タグのコード(ルート内) | + | *** タグのコード(ルート内) [#pd157e72] |
-[00] 何もしない。NOPなタグ。パディングなどで使いたければ使う。 | -[00] 何もしない。NOPなタグ。パディングなどで使いたければ使う。 | ||
---- | ---- | ||
- | -[01] リザーブ。 | + | -[01] フォーマットタイプ規定。 |
+ | --以降のフォーマットを指定するタグ。しかしたいてい省略される(サイズがもったいないので)。このタグが省略されているときは、「ぐいぐい01」仕様のIA-32アプリ(=フォーマット番号1)。このタグで1以外のパラメータが来た場合は他のフォーマットを指定している可能性があるので以降のタグの解釈をやめて実行をするべきではない。 | ||
+ | --なおタグ番号[03]以上のタグが一度でも表れた後にこのタグが出てくる可能性はない。もし万一そんなことがあればそこから先は解釈する必要がない。 | ||
-[02] リザーブ。 | -[02] リザーブ。 | ||
-[03] rjcフラグとファイルアクセスレベルの指定。bit0がrjcフラグ。bit1-2がファイルアクセスレベル。 | -[03] rjcフラグとファイルアクセスレベルの指定。bit0がrjcフラグ。bit1-2がファイルアクセスレベル。 | ||
Line 62: | Line 68: | ||
-[06] リザーブ。 | -[06] リザーブ。 | ||
-[07] リザーブ。 | -[07] リザーブ。 | ||
- | -[08] malloc用領域のサイズ指定(指数部)。指定方法はスタックサイズと同じ。 | + | -[08] リザーブ(malloc領域はbss内にとればよい)。 |
- | --デフォルトは、指数部=4KB、仮数部=512。つまり2MB。 | + | -[09] リザーブ。 |
- | -[09] malloc用領域のサイズ指定(仮数部)。指定方法はスタックサイズと同じ。 | + | //-[08] malloc用領域のサイズ指定(指数部)。指定方法はスタックサイズと同じ。 |
+ | //--デフォルトは、指数部=4KB、仮数部=512。つまり2MB。 | ||
+ | //-[09] malloc用領域のサイズ指定(仮数部)。指定方法はスタックサイズと同じ。 | ||
+ | // -- commented_out by K, 2008.11.19 | ||
-[0A] メモリマップトファイル用の領域のサイズ指定(指数部)。指定方法はスタックサイズと同じ。 | -[0A] メモリマップトファイル用の領域のサイズ指定(指数部)。指定方法はスタックサイズと同じ。 | ||
--デフォルトは、指数部=4KB、仮数部=256。つまり1MB。 | --デフォルトは、指数部=4KB、仮数部=256。つまり1MB。 | ||
Line 77: | Line 86: | ||
-[18] コメントタグ。このタグ内の記述はすべて無視する。 | -[18] コメントタグ。このタグ内の記述はすべて無視する。 | ||
-上記以外はリザーブ。 | -上記以外はリザーブ。 | ||
- | *** タグのコード(セクション記述タグ内) | + | *** タグのコード(セクション記述タグ内) [#h7398d43] |
-[00] 何もしない、NOPなタグ。パディングなどで使いたければ使う。 | -[00] 何もしない、NOPなタグ。パディングなどで使いたければ使う。 | ||
---- | ---- |
(This host) = http://osask.net