ページへ戻る
印刷
GUIGUI01/man0005
をテンプレートにして作成 ::
OSASK計画
osaskwiki
:GUIGUI01/man0005 をテンプレートにして作成
開始行:
TITLE:x
* 「ぐいぐい01」のアプリフォーマット
-(by [[K]], 2008.12.29)
*** 註
-所詮はOSASK-HB向けなのでまあ暫定的なものです。とりあえず...
-基本的にここに書いてあることを理解する必要はありません。...
-旧仕様については[[GUIGUI01/man0003]]に記述が残してありま...
*** 基本構造
-最初の2バイトがシグネチャで、0x47 0x01。
--大文字小文字アルファベット+0x00~0x1fの組み合わせは他で...
-その次はルート内のタグ総数。
--この値が0だと小プログラム向け簡易形式になる。1以上なら...
-それ以降はすべてタグ。
-数値はたいてい[[GUIGUI01/man0004]]の(1)の方法でエンコー...
----
-(例)helloc.g01 (いわゆるC言語で書いた69バイトの"hello, ...
47 01 28 D3 09 4C 54 89 35 10 00 00 00 E9 15 00
00 00 31 FF 8B 35 10 00 00 00 FF 26 55 BA 00 00
00 00 89 E5 57 56 E8 0B 00 00 00 50 32 30 5E 5F
5D 99 41 28 94 8D 20 94 98 68 65 6C 6C 6F 2C 20
77 6F 72 6C 64
47 01 -- シグネチャ。
2_ -- ルート内タグ数2(この場合は[0D]が2個)。
_8 D3 -- [0D] セクション開始タグ、ネスト内タグ数3。
0_ -- [00] NOPなタグ。
_9 4C 54 -- [14] イメージ展開タグ、イメージ長 0x54 = 8...
89 35 10 ... 5E 5F 5D -- コードセクションの中身。実...
99 4_ -- [19] コンパクト型リロケーション情報。要素...
_1 28 94 -- リロケーション情報の中身。10進数で書けば...
これを翻訳すれば、コードセクションのオ...
からの4バイトの値に実際のデータセクシ...
8D 2_ -- [0D] セクション開始タグ、ネスト内タグ数2。
_0 -- [00] NOPなタグ。
94 98 -- [14] イメージ展開タグ、イメージ長 0x18 = 2...
68 65 6C ... 72 6C 64 -- データセクションの中身。実...
-(例)hello.g01 (いわゆる18バイトの"hello, world\n")
47 01 01 50 13 68 65 6C 6C 6F 2C 20 77 6F 72 6C
64 00
47 01 -- シグネチャ。
0_ -- ルート内タグ数0。つまり簡易形式。
_1 -- フラグ1。つまり、CALL([ESI]);の自動挿入あり、自...
50 13 68 ... 6C 64 00 -- コードセクションの中身。実際...
末尾にC3の1バイトも足される。
*** タグのフォーマット
-タグ番号はすべてgh4でエンコード。このルールはネスト内の...
-[00] :
--後続パラメータなし。
-[01]~[0B] :
--何らかの数値を指定。後続パラメータは1つで、gh4でエンコ...
-[0C]~[0F] :
--ネスト構造型タグ。タグの中にタグが複数含まれるタグ(0や...
--ネストの中にネストのタグが含まれることも当然ありうるが...
-[10]~[17] :
--4bit数値による一次元配列記述用タグ。gh4ではないエンコー...
-[18]~[1F] :
--gh4による一次元配列記述用タグ。gh4でエンコードされた数...
-[20]~[27] :
--[10]~[17]の形式の配列記述用タグ。たとえば可変長文字列...
--最初にgh4があって、これが文字列の個数に相当。そしてその...
-[28]以降のタグ番号については、どんなフォーマットを取るか...
*** タグのコード(ルート内)
-[00] 何もしない。NOPなタグ。パディングなどで使いたければ...
----
-[01] フォーマットタイプ規定。
--以降のフォーマットを指定するタグ。しかしたいてい省略さ...
--なおタグ番号[03]以上のタグが一度でも表れた後にこのタグ...
-[02] リザーブ。
-[03] 各種フラグ類の指定。
--bit0がCALL([ESI]);の自動挿入フラグ(これが1だとコードセ...
--bit1が自動改行禁止(これが1だとアプリ終了時にコンソール...
--bit2がrjcなし(これが1だとrjcがかかっていないことを示す...
--bit3-4が初期値テーブル。0なら初期値テーブルなし。1ならE...
--このタグを省略すると0を指定したものと見なされる。
-[04] スタックサイズの指定(指数部)。
--このタグを見つけると自動的に仮数部のデフォルトが1に設定...
--スタックについて全く指定がない場合、デフォルトの設定が...
-[05] スタックサイズの指定(仮数部)。(指定された値+1)...
-[06] リザーブ。
-[07] リザーブ。
-[08] リザーブ(malloc領域はbss内にとればよい)。
-[09] リザーブ。
-[0A] メモリマップトファイル用の領域のサイズ指定(指数部...
--デフォルトは、指数部=4KB、仮数部=256。つまり1MB。
-[0B] メモリマップトファイル用の領域のサイズ指定(仮数部...
----
-[0C] コメントタグ。このタグ内の記述はすべて無視する。
--コメント用タグが何種類もあるのは、バイナリエディタでち...
--[01]~[0B]の形式のコメントは原則として用意しない。これ...
--もちろんコメントアウトのみならず、構造を持ったコメント...
-[0D] セクション記述タグ。下記参照。
----
-[18] コメントタグ。このタグ内の記述はすべて無視する。
-上記以外はリザーブ。
*** タグのコード(セクション記述タグ内)
-[00] 何もしない、NOPなタグ。パディングなどで使いたければ...
----
-[01] セクションタイプ指定。
--このタグの指定がない場合、最初に記述されたセクションな...
-[02] アライン指定タグ。デフォルトのアラインは4KB。
-[04] これはセクションタイプによって意味が異なる。
--コードセクション(セクションタイプ0)の場合は、エントリ...
--bssセクション(セクションタイプ2)の場合は、セクション...
---スタックなどとは違って+1はない。デフォルトでは0。指数...
----
-[0C] コメントタグ。このタグ内の記述はすべて無視する。
----
-[14] セクションイメージタグ。バイナリデータをそのまま記...
----
-[18] コメントタグ。このタグ内の記述はすべて無視する。
-[19] コンパクト型リロケーション情報。これを配置するとき...
--このリロケーションアルゴリズムは、バイナリの指定したオ...
//--[19]ではeh4の配列になっているわけだが、最初の要素は「...
--[19]ではgh4の配列になっているわけだが、最初の要素は「*...
--一つのセクションに対して、コードセクションとデータセク...
-[1A] コンパクトではないリロケーション情報。フォーマット...
----
-上記以外はすべてリザーブ。
終了行:
TITLE:x
* 「ぐいぐい01」のアプリフォーマット
-(by [[K]], 2008.12.29)
*** 註
-所詮はOSASK-HB向けなのでまあ暫定的なものです。とりあえず...
-基本的にここに書いてあることを理解する必要はありません。...
-旧仕様については[[GUIGUI01/man0003]]に記述が残してありま...
*** 基本構造
-最初の2バイトがシグネチャで、0x47 0x01。
--大文字小文字アルファベット+0x00~0x1fの組み合わせは他で...
-その次はルート内のタグ総数。
--この値が0だと小プログラム向け簡易形式になる。1以上なら...
-それ以降はすべてタグ。
-数値はたいてい[[GUIGUI01/man0004]]の(1)の方法でエンコー...
----
-(例)helloc.g01 (いわゆるC言語で書いた69バイトの"hello, ...
47 01 28 D3 09 4C 54 89 35 10 00 00 00 E9 15 00
00 00 31 FF 8B 35 10 00 00 00 FF 26 55 BA 00 00
00 00 89 E5 57 56 E8 0B 00 00 00 50 32 30 5E 5F
5D 99 41 28 94 8D 20 94 98 68 65 6C 6C 6F 2C 20
77 6F 72 6C 64
47 01 -- シグネチャ。
2_ -- ルート内タグ数2(この場合は[0D]が2個)。
_8 D3 -- [0D] セクション開始タグ、ネスト内タグ数3。
0_ -- [00] NOPなタグ。
_9 4C 54 -- [14] イメージ展開タグ、イメージ長 0x54 = 8...
89 35 10 ... 5E 5F 5D -- コードセクションの中身。実...
99 4_ -- [19] コンパクト型リロケーション情報。要素...
_1 28 94 -- リロケーション情報の中身。10進数で書けば...
これを翻訳すれば、コードセクションのオ...
からの4バイトの値に実際のデータセクシ...
8D 2_ -- [0D] セクション開始タグ、ネスト内タグ数2。
_0 -- [00] NOPなタグ。
94 98 -- [14] イメージ展開タグ、イメージ長 0x18 = 2...
68 65 6C ... 72 6C 64 -- データセクションの中身。実...
-(例)hello.g01 (いわゆる18バイトの"hello, world\n")
47 01 01 50 13 68 65 6C 6C 6F 2C 20 77 6F 72 6C
64 00
47 01 -- シグネチャ。
0_ -- ルート内タグ数0。つまり簡易形式。
_1 -- フラグ1。つまり、CALL([ESI]);の自動挿入あり、自...
50 13 68 ... 6C 64 00 -- コードセクションの中身。実際...
末尾にC3の1バイトも足される。
*** タグのフォーマット
-タグ番号はすべてgh4でエンコード。このルールはネスト内の...
-[00] :
--後続パラメータなし。
-[01]~[0B] :
--何らかの数値を指定。後続パラメータは1つで、gh4でエンコ...
-[0C]~[0F] :
--ネスト構造型タグ。タグの中にタグが複数含まれるタグ(0や...
--ネストの中にネストのタグが含まれることも当然ありうるが...
-[10]~[17] :
--4bit数値による一次元配列記述用タグ。gh4ではないエンコー...
-[18]~[1F] :
--gh4による一次元配列記述用タグ。gh4でエンコードされた数...
-[20]~[27] :
--[10]~[17]の形式の配列記述用タグ。たとえば可変長文字列...
--最初にgh4があって、これが文字列の個数に相当。そしてその...
-[28]以降のタグ番号については、どんなフォーマットを取るか...
*** タグのコード(ルート内)
-[00] 何もしない。NOPなタグ。パディングなどで使いたければ...
----
-[01] フォーマットタイプ規定。
--以降のフォーマットを指定するタグ。しかしたいてい省略さ...
--なおタグ番号[03]以上のタグが一度でも表れた後にこのタグ...
-[02] リザーブ。
-[03] 各種フラグ類の指定。
--bit0がCALL([ESI]);の自動挿入フラグ(これが1だとコードセ...
--bit1が自動改行禁止(これが1だとアプリ終了時にコンソール...
--bit2がrjcなし(これが1だとrjcがかかっていないことを示す...
--bit3-4が初期値テーブル。0なら初期値テーブルなし。1ならE...
--このタグを省略すると0を指定したものと見なされる。
-[04] スタックサイズの指定(指数部)。
--このタグを見つけると自動的に仮数部のデフォルトが1に設定...
--スタックについて全く指定がない場合、デフォルトの設定が...
-[05] スタックサイズの指定(仮数部)。(指定された値+1)...
-[06] リザーブ。
-[07] リザーブ。
-[08] リザーブ(malloc領域はbss内にとればよい)。
-[09] リザーブ。
-[0A] メモリマップトファイル用の領域のサイズ指定(指数部...
--デフォルトは、指数部=4KB、仮数部=256。つまり1MB。
-[0B] メモリマップトファイル用の領域のサイズ指定(仮数部...
----
-[0C] コメントタグ。このタグ内の記述はすべて無視する。
--コメント用タグが何種類もあるのは、バイナリエディタでち...
--[01]~[0B]の形式のコメントは原則として用意しない。これ...
--もちろんコメントアウトのみならず、構造を持ったコメント...
-[0D] セクション記述タグ。下記参照。
----
-[18] コメントタグ。このタグ内の記述はすべて無視する。
-上記以外はリザーブ。
*** タグのコード(セクション記述タグ内)
-[00] 何もしない、NOPなタグ。パディングなどで使いたければ...
----
-[01] セクションタイプ指定。
--このタグの指定がない場合、最初に記述されたセクションな...
-[02] アライン指定タグ。デフォルトのアラインは4KB。
-[04] これはセクションタイプによって意味が異なる。
--コードセクション(セクションタイプ0)の場合は、エントリ...
--bssセクション(セクションタイプ2)の場合は、セクション...
---スタックなどとは違って+1はない。デフォルトでは0。指数...
----
-[0C] コメントタグ。このタグ内の記述はすべて無視する。
----
-[14] セクションイメージタグ。バイナリデータをそのまま記...
----
-[18] コメントタグ。このタグ内の記述はすべて無視する。
-[19] コンパクト型リロケーション情報。これを配置するとき...
--このリロケーションアルゴリズムは、バイナリの指定したオ...
//--[19]ではeh4の配列になっているわけだが、最初の要素は「...
--[19]ではgh4の配列になっているわけだが、最初の要素は「*...
--一つのセクションに対して、コードセクションとデータセク...
-[1A] コンパクトではないリロケーション情報。フォーマット...
----
-上記以外はすべてリザーブ。
ページ名: