[osask 6992] bim2bin4n.

  こんにちは、川合です。

  先日確定したstk1に加えて、stk2、stk5を確定しました。どちらも内
容は[OSASK 6989]から変わっていません。

    http://k.hideyosi.com/bim2bi4n.lzh  (166KB)

今回はこれに加えて、LGPLのものを集めたリリースもあります。

    http://k.hideyosi.com/tk5lgpl0.lzh  (154KB)

---

  まず、ライセンスについてです。tek5はLGPLが適用されたLZMAのソー
スを利用して作られているため、全てをKL-01だけにすることはできて
いません。

・tek5の圧縮ルーチン:            ほとんどLGPL
・tek5の展開ルーチン(C版):     半分以上がLGPL
・tek5の展開ルーチン(ASKA版):  完全にKL-01

で、LGPLの及ぶ範囲を最小限にするために、LGPLのものを集めたパッケ
ージとKL-01のものを集めたパッケージに分けました。

  LGPLについてGPLと同じようなものだと思っている人がいるようなの
で、簡単に違いを説明しておきます。LGPLはGPLとKL-01の中間のような
性質を持ちます。

  LGPLの頭のLは、かつてはLibraryの略であったことからも分かるよう
に、LGPLはライブラリによく適用されるライセンスで、たとえばgccに
付属する標準関数ライブラリなどがLGPLになっています(今はLibrary
の略ではないとされている)。

  たとえば僕が適当にprintfを使ったプログラムを書いてgccでビルド
したら、実行ファイルには当然のことながらLGPLが適用されたprintfル
ーチンを含むことになります。しかし、これも当然のことながら、gcc
でprintfを使ったら、そのプログラムのライセンスにLGPLを加えなけれ
ばいけない、ということはありません。好きなライセンス、たとえば
KL-01などを自由に適用できます。つまり、LGPLでかかれたものをライ
ブラリとして自分のプログラムの一部にそのまま取り込む分には、ライ
センスに対する注文は何もないのです。・・・このへんはとてもKL-01
っぽくていいです。

  しかし一方、LGPLのものを改良したり改造したりした場合、それは
GPLと同様に公開義務が生じます。今回はLZMAのソースをそのまま使わ
ずに、一部に改造を入れています。もしこれを一つのパッケージでリ
リースすると、どこまでがLZMAルーチンに対する改造なのかという問
題が出るかもしれないので(このへんがあやふやだと、bim2binや関連
ライブラリをすべてLGPLにしなければいけなくなる恐れがあります)
、改造は改造でtk5lgplにまとめて、それを改変なしで組み込んだ
bim2binをべつにリリースしました。これにより、bim2binはKL-01にな
ります。

---

  簡単な使いかたです。詳しい使い方は、bim2bin4nのreadme.txtに書
いてあります。

  このバージョンからrjcという機能が入っていて、OSASKのアプリの
圧縮率が(たとえtek0であっても)改善しています。しかしrjcはOSASK
 ver.4.6以降でしかサポートされないので、今のOSASKでも使うのなら、
オプションにrjc:0を加えるようにしてください(もちろん-tek0も必要
です)。

  ちなみにrjcというのはx86の32bit相対ジャンプ命令をあえて絶対ア
ドレスジャンプに書き換えるという圧縮前コンバータで、展開時には
展開直後に逆変換します。変換・逆変換負荷は非常に小さくて、これ
によりスライド辞書法が効果的に効くようになって、展開速度や圧縮
率が上がるわけです。

  僕が推奨している圧縮形式はtek5です。

[普通の圧縮]

prompt>bim2bin -osacmp -tek1 in:data.bin out:data.tk

prompt>bim2bin -osacmp -tek2 in:data.bin out:data.tk

prompt>bim2bin -osacmp -tek5 in:data.bin out:data.tk

面倒なオプションを書かなくても、最初からstk互換になっています。
デフォルトはclv:4です。圧縮率を上げたいときはclv:5にしてくださ
い。

[OSASKアプリ生成]

prompt>bim2bin in:helloc4.bim out:helloc4.org malloc:1k mmarea:0 -tek2

prompt>bim2bin in:helloc4.bim out:helloc4.org malloc:1k mmarea:0 -tek5

下の例には注意が必要です。tek5を指定する場合は、obj2bimで指定す
るスタックの大きさが最低でも36k必要です。

---

  これからOSASKをstk1〜stk5に対応させ、edimgやGO系ツールもstk1〜
stk5に対応させて、さらにosa_dirもバージョンアップさせる予定です。
それが済み次第、KHBIOSの開発にも着手する予定です。

  参考までに、bim→org、org→binの両方でtek5を指定したinvader5は
1186バイトでした。tek0が1258だったので、5.7%も改善することになり
ます。

  なお、先日paqar 1.3という驚異的な圧縮ソフトを見つけたので(な
んとあのrkを超える!)、それに基づいてOSASK-Wikiの圧縮比較表も更
新しました。

  それでは。

--
    川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! osask.jp
Homepage http://osask.jp/

ML番号でジャンプ
ML単語検索