[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[OSASK 00104] abcdw002.
- From: Hidemi KAWAI <kawai !Atmark! osask.jp>
- Date: Sun, 27 Apr 2008 23:13:27 +0900
こんばんは、川合です。
今日もリリースです。abcdw002です。
http://osask.jp/files/
ここしばらく連日のリリースになっているわけですが、これは異常な
ことで、たぶん今日でおしまいです。というのは寝不足がひどくなって
きた上、開発以外の事をほとんどしてこなかったので(開発に熱中して
しまった)、他の雑事の状況がとんでもないことになっていて、しばら
く開発はできそうにないです。数週間後にまたがんばります。とりあえ
ずたくさん寝ないと病気になりそう・・・。
さて、今回のバージョンアップ点は・・・やっぱりめんどうなので、
例によってドキュメントを写しておきます。
-------------------------------------------------------------------------------
・abcdw002アーカイブについて 2008.04.27 川合秀実
このソフトウェアはバイナリもソースもドキュメントもすべて川合に著作権があり、
ライセンスはKL-01です。
この中には6つのソフトウェアが入っています。
---
・abcdw002について
abcdwというのは開発コードネームで、本当の名前はefg01といいます。これは「
Executer For Guigui01」の略で、要するに「ぐいぐい01」のアプリを実行するため
のソフトウェアです。「ぐいぐい01」はOSASK-HBおよびOSASK ver.4.9以降でサポ
ートされる予定の、OSASKの新アプリ形式です。
abcdwはefg01のwin32版で、つまりWindows上でOSASKアプリを実行できるのです。
エミュレータなしで。abcdというコードネームはefg01という名前から連想して決めま
した。深い意味はありません。
使い方は、 efg01 helloc0.g01 とするだけです。これでhelloc0.g01というアプリが
実行されます。
ソース内のDEBUG_MODEを1にしてmakeし直すと、いろいろ表示されるようになります
。「ぐいぐい01」について早く知りたい人はどうぞ。なおまだまだ未完成なので、ほと
んどのAPIが未実装になっています。
前バージョンのabcdw001からの変更点は次の通りです。リロケーション機能のサポー
トをつけて、あとバグをいくつかつぶしました。
---
・bim2g01bについて
そろそろC言語でアプリを書いてみたいと思い、そのためのリンカを即席で作りまし
た。本当に即席で作ったせいで、リロケーション情報の生成をサポートできていません
。obj2bimの出力した.bimファイルから.g01をでっち上げます。
ただ本当にリロケーション情報なしだとあまりにみっともないので、.rlmというテキ
ストファイルにリロケーション情報を書いてbim2g01に読ませることで、リロケーショ
ン情報を付与できるようにしました(前バージョンではできませんでした)。といって
も、.rlmを書くには.mapや.lstを慎重に参照しなければならず、まだまだといった感じ
です。普通に自動生成できるようにしたいです。
---
・helloc0について
とにかくリロケーション情報をつけられるようになったので、テストを兼ねて、
hellonr0を書き直してみました。うん、このソースは(hellonr0.cよりは)まともです
。
nr版では127バイトでしたが、今回は122バイトです。おお、やっぱり不自然なことを
してリロケーション情報分だけ実行ファイルサイズを小さくしたつもりになっていても
、実際は素直に書いたほうが5バイトも小さいんですねえ。・・・あとはこの.rlmを書
かなくて済むようになればなあ・・・。
---
・helloc1について
my_putstr()なんていう関数を別に作らないで、全部cmain()の中でやったら少しは小
さくなるのかなーと試してみました。小さくなりました。なんと102バイトです。
これでとりあえず満足してそろそろリリースしようかと思ったんですが、そういえば
「はりぼてOS」以来、naskばかり使っていてASKAはあまり使ってないなあ、さみしいな
あ、なんて思いました。naskfuncをASKAで書き換えようと思いました。しかし情けない
ことに、ASKAの文法を少し忘れてしまってうまく書けません。それで、OSASKのソース
(というか「ぐいぐい00」関係のソースを引っ張り出して、復習しました。
・・・ということで、helloc2に続きます。
---
・helloc2について
naskfunc.nasをASKAで書き直した程度のhelloのはずだったのですが、「ぐいぐい00
」のテクニックを完全に思い出したので、それを活用することにしました。ということ
で、アセンブラ度はさらに下がって、C言語率が上がっています。またかつての
guigui00.hのようにguigui01.hを用意して、見た目と柔軟性を上げました。・・・そん
なこんなで、結局helloc1と比べるとサイズでは退化してしまい、107バイトです。
---
・helloc3について
このままではなんだかくやしいので、g01_execcmd()関数を利用してC言語での小ささ
の限界に挑戦してみました。可読性は最悪ですが、やりました88バイトです。そういえ
ばかつて「ぐいぐい00」でも同じような挑戦をしていました。そしてそのときはこのや
り方で176バイトが限界でした。それと比べるとちょうど半分になったことになります
。
---
・リンク
http://osask.jp/boyaki04.html
http://wiki.osask.jp/?GUIGUI01/memo00
http://wiki.osask.jp/?GUIGUI01/memo01
http://wiki.osask.jp/?GUIGUI01/memo02
-------------------------------------------------------------------------------
それでは。
--
川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! osask.jp
Homepage http://osask.jp/