4: 2009-11-17 (火) 12:06:28 [4] | 現: 2024-01-08 (月) 12:58:49 k-tan[5] [6] | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | * OSASKアプリのフォーマット | + | TITLE:x |
+ | * OSASKアプリのフォーマット [#xe0b9702] | ||
-[[OsaTech]]より | -[[OsaTech]]より | ||
-(by [[K]], 2009.07.16) | -(by [[K]], 2009.07.16) | ||
- | *** (1) | + | *** (1) [#e2b2ed9a] |
-第一世代OSASKの実行ファイルのフォーマットは、ヘッダなどが多少あるものの、結局は.textそのものだった。ヘッダも.textの一部として扱った。エントリポイントはオフセット0からで、ファイルはそのままコードセグメントのイメージになっている。これは「はりぼてOS」よりも単純な構造といっていいだろう。 | -第一世代OSASKの実行ファイルのフォーマットは、ヘッダなどが多少あるものの、結局は.textそのものだった。ヘッダも.textの一部として扱った。エントリポイントはオフセット0からで、ファイルはそのままコードセグメントのイメージになっている。これは「はりぼてOS」よりも単純な構造といっていいだろう。 | ||
-こういう仕様にしたのは理由がある。こうすればページ例外がおきるたびにそのページをロードすればいい。もしこれが何らかの構造を持つファイルで、その内容もメモリに展開するには多少の加工が必要、なんてものだったら、起動時に一度全部加工して、その後ページングによってスワップアウトされなければいけない(メモリが足りない場合)。 | -こういう仕様にしたのは理由がある。こうすればページ例外がおきるたびにそのページをロードすればいい。もしこれが何らかの構造を持つファイルで、その内容もメモリに展開するには多少の加工が必要、なんてものだったら、起動時に一度全部加工して、その後ページングによってスワップアウトされなければいけない(メモリが足りない場合)。 | ||
Line 10: | Line 11: | ||
-シグネチャは8バイトあった(オフセット+8~+15:GUIGUI00)。 | -シグネチャは8バイトあった(オフセット+8~+15:GUIGUI00)。 | ||
- | *** (2) | + | *** (2) [#x074330e] |
-これに対し第二世代OSASKアプリのフォーマットは複雑である。COFFやELFほどではないが、しかしこれらと同じように複数のセクションを持ち、リロケーションのための情報を持ち、ファイル内のセクションイメージはメモリイメージとは必ずしも一致しない(一致しないのはもちろんリロケーション加工の差異のため)。 | -これに対し第二世代OSASKアプリのフォーマットは複雑である。COFFやELFほどではないが、しかしこれらと同じように複数のセクションを持ち、リロケーションのための情報を持ち、ファイル内のセクションイメージはメモリイメージとは必ずしも一致しない(一致しないのはもちろんリロケーション加工の差異のため)。 | ||
-ヘッダやシグネチャもあるが、これらは.textセクションの一部ではない。というのは、ファイル全体が単純なコードセグメントのイメージではなくなった以上、よけいなヘッダやシグネチャをコードセグメントに含めておく意味が無くなったためである。 | -ヘッダやシグネチャもあるが、これらは.textセクションの一部ではない。というのは、ファイル全体が単純なコードセグメントのイメージではなくなった以上、よけいなヘッダやシグネチャをコードセグメントに含めておく意味が無くなったためである。 | ||
- | *** (3) | + | *** (3) [#f1a53d03] |
-さらに第二世代OSASKアプリのフォーマットには、ファイルサイズを小さく保つ工夫がある。 | -さらに第二世代OSASKアプリのフォーマットには、ファイルサイズを小さく保つ工夫がある。 | ||
-簡易モード。 | -簡易モード。 | ||
Line 35: | Line 36: | ||
--ほぼ同等の仕様はCOM64plusにもある。 | --ほぼ同等の仕様はCOM64plusにもある。 | ||
- | *** (4) | + | *** (4) [#bbc0c160] |
-hello1.g01 (17バイトのhello) | -hello1.g01 (17バイトのhello) | ||
47 01 05 51 "hello, world\0" | 47 01 05 51 "hello, world\0" | ||
Line 48: | Line 49: | ||
--APIの引数については、[[OT/0004]]の例を参照のこと。 | --APIの引数については、[[OT/0004]]の例を参照のこと。 | ||
- | * こめんと欄 | + | * こめんと欄 [#r46afe8b] |
#comment | #comment |
(This host) = http://osask.net