ページへ戻る
印刷
OT/0005
をテンプレートにして作成 ::
OSASK計画
osaskwiki
:OT/0005 をテンプレートにして作成
開始行:
TITLE:x
* OSASKアプリのフォーマット
-[[OsaTech]]より
-(by [[K]], 2009.07.16)
*** (1)
-第一世代OSASKの実行ファイルのフォーマットは、ヘッダなど...
-こういう仕様にしたのは理由がある。こうすればページ例外が...
-.dataの初期イメージは、.textには直接は入っていない。ただ...
-.textは必ずセグメントのオフセット0からに配置されるので、...
-シグネチャは8バイトあった(オフセット+8~+15:GUIGUI00)。
*** (2)
-これに対し第二世代OSASKアプリのフォーマットは複雑である...
-ヘッダやシグネチャもあるが、これらは.textセクションの一...
*** (3)
-さらに第二世代OSASKアプリのフォーマットには、ファイルサ...
-簡易モード。
--セクションは.textのみで、スタックは1MB、ヒープサイズ2MB...
--簡易モードでは、ヘッダ等が終わって.textのイメージが始ま...
--ほぼ同等の仕様はCOM64plusにもある。
-.textの末尾にC3を自動付加。
--これはreturn;のコードである。実際多くのアプリを書いて実...
--ほぼ同等の仕様はCOM64plusにもある。
-.dataの末尾に32バイトの00を自動付加。
--これも上記と同じように多くのアプリを書いて実験した。そ...
--ほぼ同等の仕様はCOM64plusにもたぶんある。
-.textの先頭に、CALL([ESI]);のコードを付加可能。
--これはオプションビットで付加するかどうかを指定する。や...
--類似の仕様はCOM64plusにもある。
-レジスタ初期値指定フィールドを設定。
--アプリの起動時のレジスタ値に付いて、これをカスタマイズ...
-終了時の'\n'補完出力。
--これもオプショナルで、実行ファイル内のフラグで有効・無...
--ほぼ同等の仕様はCOM64plusにもある。
*** (4)
-hello1.g01 (17バイトのhello)
47 01 05 51 "hello, world\0"
--最初の 47 01 はシグネチャ。次の4bitの0が「簡易モード」...
CALL([ESI]); DB(0x51, "hello, world\0"); return;
--APIの引数については、[[OT/0004]]の例を参照のこと。
--16バイトのhelloは、この12バイトのメッセージを7bitエンコ...
-chars.g01 (13バイト)
47 01 08 9a 00 55 16 00 40 3C 7F 72 F6
--最初の 47 01 はシグネチャ。次の4bitの0が「簡易モード」...
do { CALL([ESI]); DB(0x55, 0x16, 0x00); EAX++; } while (...
--APIの引数については、[[OT/0004]]の例を参照のこと。
* こめんと欄
#comment
終了行:
TITLE:x
* OSASKアプリのフォーマット
-[[OsaTech]]より
-(by [[K]], 2009.07.16)
*** (1)
-第一世代OSASKの実行ファイルのフォーマットは、ヘッダなど...
-こういう仕様にしたのは理由がある。こうすればページ例外が...
-.dataの初期イメージは、.textには直接は入っていない。ただ...
-.textは必ずセグメントのオフセット0からに配置されるので、...
-シグネチャは8バイトあった(オフセット+8~+15:GUIGUI00)。
*** (2)
-これに対し第二世代OSASKアプリのフォーマットは複雑である...
-ヘッダやシグネチャもあるが、これらは.textセクションの一...
*** (3)
-さらに第二世代OSASKアプリのフォーマットには、ファイルサ...
-簡易モード。
--セクションは.textのみで、スタックは1MB、ヒープサイズ2MB...
--簡易モードでは、ヘッダ等が終わって.textのイメージが始ま...
--ほぼ同等の仕様はCOM64plusにもある。
-.textの末尾にC3を自動付加。
--これはreturn;のコードである。実際多くのアプリを書いて実...
--ほぼ同等の仕様はCOM64plusにもある。
-.dataの末尾に32バイトの00を自動付加。
--これも上記と同じように多くのアプリを書いて実験した。そ...
--ほぼ同等の仕様はCOM64plusにもたぶんある。
-.textの先頭に、CALL([ESI]);のコードを付加可能。
--これはオプションビットで付加するかどうかを指定する。や...
--類似の仕様はCOM64plusにもある。
-レジスタ初期値指定フィールドを設定。
--アプリの起動時のレジスタ値に付いて、これをカスタマイズ...
-終了時の'\n'補完出力。
--これもオプショナルで、実行ファイル内のフラグで有効・無...
--ほぼ同等の仕様はCOM64plusにもある。
*** (4)
-hello1.g01 (17バイトのhello)
47 01 05 51 "hello, world\0"
--最初の 47 01 はシグネチャ。次の4bitの0が「簡易モード」...
CALL([ESI]); DB(0x51, "hello, world\0"); return;
--APIの引数については、[[OT/0004]]の例を参照のこと。
--16バイトのhelloは、この12バイトのメッセージを7bitエンコ...
-chars.g01 (13バイト)
47 01 08 9a 00 55 16 00 40 3C 7F 72 F6
--最初の 47 01 はシグネチャ。次の4bitの0が「簡易モード」...
do { CALL([ESI]); DB(0x55, 0x16, 0x00); EAX++; } while (...
--APIの引数については、[[OT/0004]]の例を参照のこと。
* こめんと欄
#comment
ページ名: