* ぐいぐい01に関するメモ-02 -(by [[K]], 2008.04.27) -メモのうち重要な部分をそのうちまとめてまともなページを作る *** (9) no-relocation仕様について -本来の.g01形式にはリロケーション情報というものが存在する。これはアプリケーションプログラム内のプログラムやデータがどのアドレスにロードされるか分からないので(「ぐいぐい00」や「はりぼてOS」のアプリでは0番地にロードされると前もって分かっていた)、.objのような情報を持っているという意味である(プログラムとしては未完成でもある)。efg01やOSがアプリケーションを実行する直前にメモリ上でリンカのような処理をして、通常の状態になる。 -nr仕様というのは、このリロケーション情報をもたない.g01アプリのことである。これはefg01やOSにとっては処理が減るので楽だが、その分アプリが自前でリンクに相当する処理を行わなければならない。 -nr仕様はefg01のリロケーションルーチンを書き上げるのを待ちきれないで、適当に考えた仕様であり、過渡期の仕様とも言えるが、しかしこの仕様で書かれたプログラムが将来サポートされなくなって動かなくなるということはない。単に少々効率が悪いだけで、nr仕様のアプリも立派な「ぐいぐい01」アプリであることに変わりはなく、したがって通常の「ぐいぐい01」アプリと同様に、さまざまなOSの上で動作し、タスクセーブなども可能である(予定)。 --nr仕様だからという理由で問題がおきることはないものの、他の「ぐいぐい01」アプリと同様に互換性が維持できないくらいの仕様変更をした場合は、nr仕様ではないアプリともども見捨てられる可能性はある([[OSASK-HB]]系のAPIとして出発しているので、この手のリスクは避けられない)。 -nr仕様サンプルアプリのリリースリスト --hellonr0.g01 ([OSASK 00103]) --echonr0.g01 ([OSASK 00103]) --calcnr0.g01 ([OSASK 00103]) *** (10) efg01はもしかしてOS? -(ここだけ文調変更) -Windows上で超小さいアプリたちがせっせと動いて、ひとりでわくわくしています。僕から見るとWindowsはやたらと大きくてムダの多いアプリしかない印象なので、もはや別のOSのようです。・・・とそんなことを思っていたら、もしかしてefg01はOSであると言い張れば、そうかもしれない気がしてきました(まあOSだと言い張るにはもうちょっと規模が大きくならないと説得力不足ですが)。 -たとえばWindows3.1はMS-DOSのアプリでもあったけれど、やっぱりOSなわけです。TownsOSもMS-DOSのRUN386.EXEというアプリの上に構築されたものでしたが、やっぱりOSなわけです。だからもしefg01上で動作するシェルもどきができたりしたら、efg01もOSといえなくはない日が来るかもしれません。 -もちろんOSASK-HBやOSASK ver.4.9以降を使えば「ぐいぐい01」アプリは問題なく動くわけですが、これらはハードウェア向けに実装されたefg01だということもできます。いっぽうabcdwはwin32という仮想マシン(環境?)用に実装されたefg01だということもできると思うんです。つまりefg01をOSだと見る視点では、Windowsはドライバマネージャーくらいの存在でしかないわけです。そしてこの視点では、事実上ドライバ不足もアプリ不足も解消していて(だってWindowsのドライバやアプリが全部使えるわけだから)、しいて欠点を挙げれば起動時間が長すぎることくらいです(あと電力も食いすぎる・・・)。 -今のところabcdwは標準関数ばかり使って実装されているので、Linux版も簡単に作れそうです。そのうちやってみたいです。Linux上でもこんな小さいアプリが動くようになったら感激です。 *** (11) 暫定版アプリサイズ比較 -(多分たまに更新する -- 「ぐいぐい01」の実装状況が改善したら) ~ ~ -hello対決 --アセンブラでも何でもあり部門: |新OSASK|RIGHT:27|hellok0.g01 [OSASK 00101]| |DOS-Extender|RIGHT:44|579.zipより http://osask.jp/boyaki04.html| |「はりぼてOS」|RIGHT:52|hello6.hrb [OSASK 00105]| |Linux|RIGHT:59|http://www.muppetlabs.com/~breadbox/software/tiny/ の hello-2.2.17.asm| |旧OSASK|RIGHT:128|hellok1.bin http://osask.jp/boyaki04.html| |win32|RIGHT:157|http://blog.livedoor.jp/blackwingcat/archives/62262.html| |DOS(非IA-32)|RIGHT:22|http://osask.jp/boyaki04.html| |Human68k(非IA-32)|RIGHT:23|http://osask.jp/boyaki04.html| |MSX-DOS(非IA-32)|RIGHT:23|http://osask.jp/boyaki04.html| ~ --C言語限定標準的な書き方部門: |新OSASK|RIGHT:89|helloc4.g01 [OSASK 00105]| |「はりぼてOS」|RIGHT:102|hello4.hrb| |旧OSASK|RIGHT:231|helloc7.bin http://osask.jp/boyaki04.html| |win32|RIGHT:3104|lcc-win32 http://osask.jp/boyaki04.html| ~ --C言語限定何でもあり部門: |新OSASK|RIGHT:87|helloc5.g01 [OSASK 00105]| |「はりぼてOS」|RIGHT:102|hello4.hrb| |旧OSASK|RIGHT:176|helloc9.bin http://osask.jp/boyaki04.html| |win32|RIGHT:1024|http://osask.jp/boyaki04.html| ~ --アセンブラでも何でもありだけどウィンドウ内表示に限定部門: |新OSASK||たぶん1位(予定)| |「はりぼてOS」|RIGHT:81|winhelo4.hrb改 [OSASK 00105] ( MOV EBX,EAX を XCHG EAX,EBX に)| |旧OSASK|RIGHT:128|hellok1.bin http://osask.jp/boyaki04.html| |win32|RIGHT:157|http://maglog.jp/bwc/Article260141.html| ~ -bball対決 -invader対決 -その他サイズ比較として代表的なもの --旧OSASK --新OSASK -tolset対決 | |bim2g01 |obj2bim |gas2nask |naskcnv0 |sjisconv | golib00 |bim2hrb |makefont |bin2obj | |win32 |RIGHT:4,608|RIGHT:12,800|RIGHT:11,155|RIGHT:3,584|RIGHT:2,560|RIGHT:4,608|RIGHT:4,096|RIGHT:3,072|RIGHT:4,096| |新OSASK|RIGHT:2,138|RIGHT:7,240 |RIGHT:5,114 |RIGHT:2,072|RIGHT:940 |RIGHT:2,778|RIGHT:1,011|RIGHT:691 |RIGHT:1,000| //--(註)bim2g01の比較としては新OSASK版は2,138なのだが、これは双方にバグがあり、新OSASK版のみ修正してサイズが増えた。 -注釈 --旧OSASKは「ぐいぐい00」のこと --新OSASKは「ぐいぐい01」のこと --標準的な書き方というのは、いわゆるANSI-Cな標準関数を使うという意味ではなく、その開発環境において標準的な書き方とされるレベル --参考: http://osask.jp/boyaki04.html ---- -[[K]]の感想: -ライバルは旧OSASKとかDOS-Extenderくらいしかないだろうと高をくくっていたら、なんと「はりぼてOS」が大健闘。シンプルゆえの強さだろうか。特にhello4.hrbとhelloc2.g01の対決はまいった。差はわずかに5バイトなのだが、将来「ぐいぐい01」用のライブラリを充実させても勝てる気がしない・・・(註:このときは107vs102で負けていた)。 --というのは「ぐいぐい01」用のサイズ増加の原因はスタートアップルーチンやAPI呼び出し部分なのだが、ここは「ぐいぐい01」の特徴である「どのOS上でも実行可能にする」のせいでアドレス決めうちCALLやソフトウェア割り込みなどが利用できないため、どうしても減らせる気がしない。 --helloc2.g01では107バイトで上記の通り負けていたのだが、必死に考えてうまい方法を発見。helloc4.g01で89バイトになり、「はりぼてOS」に勝てた。 -winhelo4.hrbがhellok1.binに圧倒的に勝ってしまったのもなんかくやしい。いくらなんでも「ぐいぐい00」はこんなに負けていいのか?・・・まあでも「ぐいぐい01」なら負けないはず、たぶん、きっと。 --よくよく見てみれば、hello対決では「ぐいぐい00」は「はりぼてOS」に全敗じゃないか・・・。恐るべし「はりぼてOS」! * こめんと欄 - efg01でgoogle検索したらトップになってたー。意外にユニーク? -- [[K]] &new{2008-04-27 (日) 23:33:44}; #comment
(This host) = http://osask.net