5: 2009-11-17 (火) 12:08:30 [6] | 6: 2009-11-21 (土) 16:49:09 hideyosi[7] [8] | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | * ぐいぐい01に関するメモ-01 | + | TITLE:x |
+ | * ぐいぐい01に関するメモ-01 [#icded939] | ||
-(by [[K]], 2008.04.25) | -(by [[K]], 2008.04.25) | ||
-メモのうち重要な部分をそのうちまとめてまともなページを作る | -メモのうち重要な部分をそのうちまとめてまともなページを作る | ||
- | *** (5) KHBIOSとの関係 | + | *** (5) KHBIOSとの関係 [#mfa77f8c] |
-何かにつけて「ぐいぐい01」はKHBIOSの影響で改良に成功とか言っている気がするので、少し詳しく説明しておく。他の人から見たら、「ぐいぐい01」がKHBIOSの影響を受けているのはちっとも自明ではない気がするので。 | -何かにつけて「ぐいぐい01」はKHBIOSの影響で改良に成功とか言っている気がするので、少し詳しく説明しておく。他の人から見たら、「ぐいぐい01」がKHBIOSの影響を受けているのはちっとも自明ではない気がするので。 | ||
-「ぐいぐい00」では、第一にIA-32にとって最良のAPIとは何かから出発して設計していた。まあこれで本当にIA-32にとって最良の設計に到達できていれば何も問題はなかったのだが、実際はそうではなかった(今になって思えば)。 | -「ぐいぐい00」では、第一にIA-32にとって最良のAPIとは何かから出発して設計していた。まあこれで本当にIA-32にとって最良の設計に到達できていれば何も問題はなかったのだが、実際はそうではなかった(今になって思えば)。 | ||
-KHBIOSを作るにあたり、KHBIOSはIA-32のみならず、どんなCPUにとっても合理的な設計でありたいと強く思った。これはKHBIOSが一つのディスクでAT/TOWNS/PC98のどれでも起動できるような仕様にしたいと思ったのに関連して、PowerPCのMacやそのほかのアーキテクチャのコンピュータも意識し始めて、それで特定のCPUのみならず、過去現在未来のアーキテクチャまで含めてベストを目指そうと、より深いレベルから設計を考えた。 | -KHBIOSを作るにあたり、KHBIOSはIA-32のみならず、どんなCPUにとっても合理的な設計でありたいと強く思った。これはKHBIOSが一つのディスクでAT/TOWNS/PC98のどれでも起動できるような仕様にしたいと思ったのに関連して、PowerPCのMacやそのほかのアーキテクチャのコンピュータも意識し始めて、それで特定のCPUのみならず、過去現在未来のアーキテクチャまで含めてベストを目指そうと、より深いレベルから設計を考えた。 | ||
-そうして目が肥えてくると、「ぐいぐい00」を見たときに、なんとまあ今までいい加減なレベルで満足していたんだと思うくらいに問題点が出てきた。それで、KHBIOSの設計を反映させてAPIを作り直したのである。 | -そうして目が肥えてくると、「ぐいぐい00」を見たときに、なんとまあ今までいい加減なレベルで満足していたんだと思うくらいに問題点が出てきた。それで、KHBIOSの設計を反映させてAPIを作り直したのである。 | ||
- | *** (6) APIの基本構造(1) | + | *** (6) APIの基本構造(1) [#q5a11441] |
-(ここの話はアセンブラでギチギチに最適化されたアプリを読み書きするときしか必要ない知識で、introシリーズ感覚でCでプログラムするときはこんなことを全く理解していなくて問題ない) | -(ここの話はアセンブラでギチギチに最適化されたアプリを読み書きするときしか必要ない知識で、introシリーズ感覚でCでプログラムするときはこんなことを全く理解していなくて問題ない) | ||
-「ぐいぐい00」では基本のデータ型は32bitの整数であった。これに対し「ぐいぐい01」の基本のデータ型はない。ただよく出てくるデータ型というのはある、それは4bit整数である。もちろんすべての数値を4bitで表せるなんて事はめったにないので、4bitで表せない数値は2倍長の8bitや3倍長の12bit、もちろんそれより長い16、20、24、28・・・といくらでも伸ばせる。多倍長の場合、エンディアンはビッグである。インテルでおなじみのリトルではない。これらは何ヶ月(というか1年以上?)どうするのが一番いいのかを考えた末の[[K]]なりの結論である。 | -「ぐいぐい00」では基本のデータ型は32bitの整数であった。これに対し「ぐいぐい01」の基本のデータ型はない。ただよく出てくるデータ型というのはある、それは4bit整数である。もちろんすべての数値を4bitで表せるなんて事はめったにないので、4bitで表せない数値は2倍長の8bitや3倍長の12bit、もちろんそれより長い16、20、24、28・・・といくらでも伸ばせる。多倍長の場合、エンディアンはビッグである。インテルでおなじみのリトルではない。これらは何ヶ月(というか1年以上?)どうするのが一番いいのかを考えた末の[[K]]なりの結論である。 | ||
Line 31: | Line 32: | ||
-しかし「ぐいぐい01」ではパラメータを可変長にしてあるので、こういう問題は生じない。またもし16bit環境用にAPIを用意することになっても、それはそういう短い形式を多用すればいいだけだ。またたとえ32bitや64bit環境でも必要のないゼロ拡張をしなくて済む(たとえばこのファイルは明らかにファイルサイズが16bit以内で表せると分かっているのに、わざわざ64bitで表現しなくてもいい、グラフィックのボックスのサイズが1024x128なのでこれを超える座標を指定することはありえないのに、わざわざ32bitにしなくても済むということ)。これらはアプリを小さく書けることに貢献している。 | -しかし「ぐいぐい01」ではパラメータを可変長にしてあるので、こういう問題は生じない。またもし16bit環境用にAPIを用意することになっても、それはそういう短い形式を多用すればいいだけだ。またたとえ32bitや64bit環境でも必要のないゼロ拡張をしなくて済む(たとえばこのファイルは明らかにファイルサイズが16bit以内で表せると分かっているのに、わざわざ64bitで表現しなくてもいい、グラフィックのボックスのサイズが1024x128なのでこれを超える座標を指定することはありえないのに、わざわざ32bitにしなくても済むということ)。これらはアプリを小さく書けることに貢献している。 | ||
-またフォーマット変更ファンクションを最初に一度だけ使って32bitの整数モードにしてしまえば、後は「ぐいぐい00」感覚で使うことも可能である。これによりアプリのサイズで「ぐいぐい00」よりも悪くなるケースはほぼないと思われる。 | -またフォーマット変更ファンクションを最初に一度だけ使って32bitの整数モードにしてしまえば、後は「ぐいぐい00」感覚で使うことも可能である。これによりアプリのサイズで「ぐいぐい00」よりも悪くなるケースはほぼないと思われる。 | ||
- | *** (7) APIの基本構造(2) | + | *** (7) APIの基本構造(2) [#faeacef4] |
-(ここの話はアセンブラでギチギチに最適化されたアプリを読み書きするときしか必要ない知識で、introシリーズ感覚でCでプログラムするときはこんなことを全く理解していなくて問題ない) | -(ここの話はアセンブラでギチギチに最適化されたアプリを読み書きするときしか必要ない知識で、introシリーズ感覚でCでプログラムするときはこんなことを全く理解していなくて問題ない) | ||
-「ぐいぐい01」のAPIデータ列の仕様は、「ぐいぐい00」の頃のような単純に数値として意味のあるものと数値のエンコード法を記述する部分との混在になっている。たとえば以下はhellok1.g01内で実際に使われているAPI列である。 | -「ぐいぐい01」のAPIデータ列の仕様は、「ぐいぐい00」の頃のような単純に数値として意味のあるものと数値のエンコード法を記述する部分との混在になっている。たとえば以下はhellok1.g01内で実際に使われているAPI列である。 | ||
Line 59: | Line 60: | ||
-これはこうなる。 | -これはこうなる。 | ||
(5) 5 0 1 8A (4) 4 0 3 | (5) 5 0 1 8A (4) 4 0 3 | ||
- | *** (8) APIの基本構造(3) | + | *** (8) APIの基本構造(3) [#y0a97769] |
-(ここの話はアセンブラでギチギチに最適化されたアプリを読み書きするときしか必要ない知識で、introシリーズ感覚でCでプログラムするときはこんなことを全く理解していなくて問題ない) | -(ここの話はアセンブラでギチギチに最適化されたアプリを読み書きするときしか必要ない知識で、introシリーズ感覚でCでプログラムするときはこんなことを全く理解していなくて問題ない) | ||
-以後はフォーマット指定はすべて無視して読むこと。 | -以後はフォーマット指定はすべて無視して読むこと。 | ||
Line 73: | Line 74: | ||
-(つづく) | -(つづく) | ||
- | * こめんと欄 | + | * こめんと欄 [#f9b90650] |
- メモ: (7)で初出のchars0.g01は[OSASK 00102]にある。 -- [[K]] &new{2008-04-28 (月) 08:32:54}; | - メモ: (7)で初出のchars0.g01は[OSASK 00102]にある。 -- [[K]] &new{2008-04-28 (月) 08:32:54}; | ||
#comment | #comment |
(This host) = http://osask.net