ページへ戻る

− Links

 印刷 

GUIGUI01​/memo02 :: OSASK計画

osaskwiki:GUIGUI01/memo02

ページ内コンテンツ
  • ぐいぐい01に関するメモ-02
      • (9) no-relocation仕様について
      • (10) efg01はもしかしてOS?
      • (11) 暫定版アプリサイズ比較
  • こめんと欄

ぐいぐい01に関するメモ-02 anchor.png[1]

  • (by K[2], 2008.04.27)
  • メモのうち重要な部分をそのうちまとめてまともなページを作る
Page Top

(9) no-relocation仕様について anchor.png[3]

  • 本来の.g01形式にはリロケーション情報というものが存在する。これはアプリケーションプログラム内のプログラムやデータがどのアドレスにロードされるか分からないので(「ぐいぐい00」や「はりぼてOS」のアプリでは0番地にロードされると前もって分かっていた)、.objのような情報を持っているという意味である(プログラムとしては未完成でもある)。efg01やOSがアプリケーションを実行する直前にメモリ上でリンカのような処理をして、通常の状態になる。
  • nr仕様というのは、このリロケーション情報をもたない.g01アプリのことである。これはefg01やOSにとっては処理が減るので楽だが、その分アプリが自前でリンクに相当する処理を行わなければならない。
  • nr仕様はefg01のリロケーションルーチンを書き上げるのを待ちきれないで、適当に考えた仕様であり、過渡期の仕様とも言えるが、しかしこの仕様で書かれたプログラムが将来サポートされなくなって動かなくなるということはない。単に少々効率が悪いだけで、nr仕様のアプリも立派な「ぐいぐい01」アプリであることに変わりはなく、したがって通常の「ぐいぐい01」アプリと同様に、さまざまなOSの上で動作し、タスクセーブなども可能である(予定)。
    • nr仕様だからという理由で問題がおきることはないものの、他の「ぐいぐい01」アプリと同様に互換性が維持できないくらいの仕様変更をした場合は、nr仕様ではないアプリともども見捨てられる可能性はある(OSASK-HB[4]系のAPIとして出発しているので、この手のリスクは避けられない)。
  • nr仕様サンプルアプリのリリースリスト
    • hellonr0.g01 ([OSASK 00103])
    • echonr0.g01 ([OSASK 00103])
    • calcnr0.g01 ([OSASK 00103])
Page Top

(10) efg01はもしかしてOS? anchor.png[5]

  • (ここだけ文調変更)
  • 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上でもこんな小さいアプリが動くようになったら感激です。
Page Top

(11) 暫定版アプリサイズ比較 anchor.png[6]

  • 注釈
    • 旧OSASKは「ぐいぐい00」のこと
    • 新OSASKは「ぐいぐい01」のこと
    • 標準的な書き方というのは、いわゆるANSI-Cな標準関数を使うという意味ではなく、その開発環境において標準的な書き方とされるレベル
    • 参考: http://osask.jp/boyaki04.html[7]

  • K[2]の感想:
  • ライバルは旧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」!
Page Top

こめんと欄 anchor.png[11]

  • efg01でgoogle検索したらトップになってたー。意外にユニーク? -- K[2] 2008-04-27 (日) 23:33:44

Last-modified: 2009-11-21 (土) 00:00:00 (JST) (101d) by ゲスト