ページへ戻る

− Links

 印刷 

GUIGUI01​/man0003 のバックアップソース(No.2) :: OSASK計画

osaskwiki:GUIGUI01/man0003 のバックアップソース(No.2)

« Prev[4]  Next »[5]
* 「ぐいぐい01」のアプリフォーマット
-(by [[K]], 2008.11.13)
*** 註
-所詮はOSASK-HB向けなのでまあ暫定的なものです。とりあえず2008.11.13時点で最新のabcdw003での仕様を書きました。
*** 基本構造
-最初の2バイトがシグネチャで、0x47 0x01。
-それ以降はすべてタグ。
-数値はたいてい[[GUIGUI01/memo01]]の(6)の方法でエンコードされている。以下これをeh4エンコードと呼ぶ。
----
-(例)hellok0.g01 (いわゆる27バイトの"hello, world\n")
 47 01 8D 19 4A 2A FF D5 35 01 24 8D 68 65 6C 6C
 6F 2C 20 77 6F 72 6C 64 0A 44 03

 47 01 -- シグネチャ。
 8D 1_ -- [0D] セクション開始タグ, ネスト内タグ数1。
   _9 4_A 2A -- [14] イメージ展開タグ, イメージ長 0x2a = 42。つまり21バイト。
     FF D5 35 01 24 ... 0A 44 03 -- コードセクションの中身。

*** タグのフォーマット
-タグ番号はすべてeh4でエンコード。このルールはネスト内のタグでも有効。
-[00] :
--後続パラメータなし。
-[01]~[0B] :
--何らかの数値を指定。後続パラメータは1つで、eh4でエンコード。
-[0C]~[0F] :
--ネスト構造型タグ。タグの中にタグが複数含まれるタグ(0や1つの場合もあるが)。まず一つのパラメータがeh4で記述され、それがネスト内に含まれるタグの数を表す。
--ネストの中にネストのタグが含まれることも当然ありうるが、その場合はネスト全体でタグ数1と数える。上記の例を参照のこと。
-[10]~[17] :
--バイナリ記述用タグ。eh4ではないエンコードのビット列などを格納するために使われている。まず一つのパラメータがeh4で記述され、それがこのタグ内に含まれるバイナリの長さを表す。ただしこの長さはバイト単位でもビット単位でもなく、4bit単位である。
-[18]~[1f] :
--書きつかれたので詳細は後日。
*** タグのコード(ルート内)
-[00] 何もしない。NOPなタグ。パディングなどで使いたければ使う。
----
-[01] リザーブ。
-[02] リザーブ。
-[03] rjcフラグとファイルアクセスレベルの指定。bit0がrjcフラグ。bit1-2がファイルアクセスレベル。
-[04] スタックサイズの指定(指数部)。
--このタグを見つけると自動的に仮数部のデフォルトが1に設定される。したがって仮数部も指定するときは、先にこのタグで指数部を指定してからにする。0で4KB単位(=スタックサイズ=仮数部×4KB)、1で16KB単位、2で64KB単位、3で256KB単位、以下省略。
--スタックについて全く指定がない場合、デフォルトの設定が使われる。デフォルトでは、指数部=4KB、仮数部=256。つまり1MB。
-[05] スタックサイズの指定(仮数部)。(指定された値+1)が仮数部になる。
-[06] リザーブ。
-[07] リザーブ。
-[08] malloc用領域のサイズ指定(指数部)。指定方法はスタックサイズと同じ。
--デフォルトは、指数部=4KB、仮数部=512。つまり2MB。
-[09] malloc用領域のサイズ指定(仮数部)。指定方法はスタックサイズと同じ。
-[0A] メモリマップトファイル用の領域のサイズ指定(指数部)。指定方法はスタックサイズと同じ。
--デフォルトは、指数部=4KB、仮数部=256。つまり1MB。
-[0B] メモリマップトファイル用の領域のサイズ指定(仮数部)。指定方法はスタックサイズと同じ。
----
-[0C] コメントタグ。このタグ内の記述はすべて無視する。
-[0D] セクション記述タグ。下記参照。
----
-上記以外はリザーブ。
*** タグのコード(セクション記述タグ内)
-[00] 何もしない、NOPなタグ。パディングなどで使いたければ使う。
----
-[01] セクションタイプ指定。
--このタグの指定がない場合、最初に記述されたセクションならセクションタイプ0がデフォルト。以前にセクション記述タグがあった場合は、(直前のセクションタイプ+1)がデフォルト。
-[02] アライン指定タグ。デフォルトのアラインは4KB。
-[04] これはセクションタイプによって意味が異なる。
--コードセクション(セクションタイプ0)の場合は、エントリポイントの指定。デフォルトはゼロ。
--bssセクション(セクションタイプ2)の場合は、セクションサイズ(仮数部)の指定。
---スタックなどとは違って+1はない。デフォルトでは0。指数部のデフォルトは1バイト。
----
-[0C] コメントタグ。このタグ内の記述はすべて無視する。
----
-[14] セクションイメージタグ。バイナリデータをそのまま記述。
----
-[19] コンパクト型リロケーション情報。書きつかれたので詳細は後日。
----
-上記以外はすべてリザーブ。

« Prev[4]  Next »[5]