サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
17: 2008-12-26 (金) 19:47:34 ソース 18: 2008-12-27 (土) 16:04:43 ソース
Line 12: Line 12:
-(12.22追記)昨日neriさんがオプションでCALL(EBP);をコードに追加する機能を付けるべきなんじゃないかと提案しました。この機能を付けるべきかいろいろ試行錯誤した結果、確かに付けたほうがいいと僕は判断しました(.g01の場合は先頭に付ける、COM64plusの場合は末尾に付ける)。またコマンドライン取得APIの仕様が勘違いで間違っていたことに気付いて修正したところ、このAPIが更に使いやすくなりました。これでまたサイズがかなり減っています。なおneriさん自身はまだCALL(EBP);の自動付加オプションをやるという決断にはいたっていないようです(でもきっとあとでやるとは思う)。helloが18バイトで書けるということは、ついにバッチファイルともタイだということです。ちなみにechoの13バイトはバッチファイルで"@echo %1 %2 %3"って書くだけで14バイトなので、すでにバッチファイルにも十分に勝っていると思います。 -(12.22追記)昨日neriさんがオプションでCALL(EBP);をコードに追加する機能を付けるべきなんじゃないかと提案しました。この機能を付けるべきかいろいろ試行錯誤した結果、確かに付けたほうがいいと僕は判断しました(.g01の場合は先頭に付ける、COM64plusの場合は末尾に付ける)。またコマンドライン取得APIの仕様が勘違いで間違っていたことに気付いて修正したところ、このAPIが更に使いやすくなりました。これでまたサイズがかなり減っています。なおneriさん自身はまだCALL(EBP);の自動付加オプションをやるという決断にはいたっていないようです(でもきっとあとでやるとは思う)。helloが18バイトで書けるということは、ついにバッチファイルともタイだということです。ちなみにechoの13バイトはバッチファイルで"@echo %1 %2 %3"って書くだけで14バイトなので、すでにバッチファイルにも十分に勝っていると思います。
-(12.24追記)CALL(EBP);をやめてCALL([ESI]);にすることにしました。これだとEBPがあくので好きなことができます。アセンブラ版のバイト数は変わりません。でもC言語版のバイト数は1バイトくらい減らせそうです。・・・さらにCOM64plusのマネをしてレジスタの初期値ロード機能をオプションでつけました。これでcharsが16から14になりました。COM64plusに追いついた! -(12.24追記)CALL(EBP);をやめてCALL([ESI]);にすることにしました。これだとEBPがあくので好きなことができます。アセンブラ版のバイト数は変わりません。でもC言語版のバイト数は1バイトくらい減らせそうです。・・・さらにCOM64plusのマネをしてレジスタの初期値ロード機能をオプションでつけました。これでcharsが16から14になりました。COM64plusに追いついた!
--以下にここまでの成果(多分これが限界でもあると思う)を書いておきます。[2008.12.24更新+-以下にここまでの成果(多分これが限界でもあると思う)を書いておきます。[2008.12.27更新
-|          |hello      |hello-c    |chars      |echo       |echo-c      | +|          |hello      |hello-c    |chars      |echo       |echo-c      |cpy        |cpy-c        |makefont-c
-|abcdw006用 |RIGHT:27    |RIGHT:86    |RIGHT:33    |RIGHT:?   |RIGHT:156  | +|abcdw006用 |RIGHT:27    |RIGHT:86    |RIGHT:33    |RIGHT:?   |RIGHT:156  |RIGHT:?    |RIGHT:612    |RIGHT:691
-|abcdw007用 |RIGHT:''18''|RIGHT:''69''|RIGHT:''14''|RIGHT:''13''|RIGHT:''71''| +|abcdw007用 |RIGHT:''18''|RIGHT:''69''|RIGHT:''14''|RIGHT:13  |RIGHT:71    |RIGHT:?    |RIGHT:342    |RIGHT:347| 
-|COM64plus用|RIGHT:20    |検討中?    |RIGHT:''14''|RIGHT:?    |RIGHT:?    | +|abcdw008用 |RIGHT:''18''|RIGHT:''69''|RIGHT:''14''|RIGHT:''9''|RIGHT:''69''|RIGHT:''45''|RIGHT:''138''|RIGHT:''207''| 
-|DOS用      |RIGHT:22    |RIGHT:?    |RIGHT:17    |RIGHT:19    |RIGHT:?    |+|COM64plus用|RIGHT:18?  |検討中?    |RIGHT:''14''|RIGHT:?  |RIGHT:?    |RIGHT:?    |RIGHT:?    |RIGHT:?
 +|DOS用      |RIGHT:22    |RIGHT:?    |RIGHT:17    |RIGHT:19   |RIGHT:?   |RIGHT:?    |RIGHT:?    |RIGHT:?|
--(註)echoはargv[0]が見えても見えなくてもよい。 --(註)echoはargv[0]が見えても見えなくてもよい。
---echoはもちろんジャンクAPIで実現しているが、ジャンクAPIはジャンクであるというマークがついている分だけ実行ファイルが長くなる傾向がある。もし他の部分は一切変えずに本仕様に昇格させれば、それだけでechoもecho-cも2バイトは縮むだろう。+--echoはもちろんジャンクAPIで実現しているが、ジャンクAPIはジャンクであるというマークがついている分だけ実行ファイルが長くなる傾向がある。もし他の部分は一切変えずに本仕様に昇格させれば、それだけでechoもecho-cも2バイトは縮むだろう。・・・というのはabcdw007までの仕様でのことで、abcdw008以降については本仕様級の仕様なので、ここから減ることはない。
-abcdw006→abcdw007の仕様変更はかなり大きなもので、基本的にバイナリ互換はありません。ソース互換すらほどほどしかありません。大規模改造なので僕も非常に苦労しています(アプリの移植はそれほどでもないけど、efg01の改造が大変)。 -abcdw006→abcdw007の仕様変更はかなり大きなもので、基本的にバイナリ互換はありません。ソース互換すらほどほどしかありません。大規模改造なので僕も非常に苦労しています(アプリの移植はそれほどでもないけど、efg01の改造が大変)。
-これはまさに「乾いた雑巾を絞る」レベルの改良で、その中にあってcharsが半減したり、echo-cが半減したりと、ちょっとありえない劇的な進歩になっています。それもこれもみんなneriさんの協力のおかげです。・・・neriさんなしで一人でやっていたらこの設計に到達するまでに1年間はかかったと思います(その後の改良のペースもすごいのでトータルで2年分くらいは進んでいる気がする)。あとやっぱりabcdw006までで小さいアプリをたくさん作ってきて、ボトルネックというか、「こんな仕様だったらいいのに」を実感していたのもあると思います。 -これはまさに「乾いた雑巾を絞る」レベルの改良で、その中にあってcharsが半減したり、echo-cが半減したりと、ちょっとありえない劇的な進歩になっています。それもこれもみんなneriさんの協力のおかげです。・・・neriさんなしで一人でやっていたらこの設計に到達するまでに1年間はかかったと思います(その後の改良のペースもすごいのでトータルで2年分くらいは進んでいる気がする)。あとやっぱりabcdw006までで小さいアプリをたくさん作ってきて、ボトルネックというか、「こんな仕様だったらいいのに」を実感していたのもあると思います。
Line 40: Line 41:
|改良版    |RIGHT:507|RIGHT:342|RIGHT:347| |改良版    |RIGHT:507|RIGHT:342|RIGHT:347|
-(12.26追記)しばらく開発しないといっておきながら、突発的にcpyをnaskで書いたら何バイトになるのかが気になって(たぶん禁断症状)、それで作ってみました(実際はASKAで書きました)。abcdw008で実装予定の(つまりまだ未実装の)APIを勝手に使って書いたところ、cpyは51バイトで書けることが分かりました。うおおおぉー。これはすごい。やっぱりアセンブラは偉大だー。あとはこの51バイトを使いたくてしょうがなくなったらabcdw008を作ることにします(笑)。ちなみにこのAPIを使うとechoは11バイトになります。他のアプリもみんな100バイトくらいは減るんじゃないかなあ。もちろん上記で減量に成功したsjisconvやmakefontも。 -(12.26追記)しばらく開発しないといっておきながら、突発的にcpyをnaskで書いたら何バイトになるのかが気になって(たぶん禁断症状)、それで作ってみました(実際はASKAで書きました)。abcdw008で実装予定の(つまりまだ未実装の)APIを勝手に使って書いたところ、cpyは51バイトで書けることが分かりました。うおおおぉー。これはすごい。やっぱりアセンブラは偉大だー。あとはこの51バイトを使いたくてしょうがなくなったらabcdw008を作ることにします(笑)。ちなみにこのAPIを使うとechoは11バイトになります。他のアプリもみんな100バイトくらいは減るんじゃないかなあ。もちろん上記で減量に成功したsjisconvやmakefontも。
 +-(12.27追記)コマンドライン周りの設計中(本仕様級)。以前は数ヶ月かけてもできなかったのに、今だと数日でこんなにはかどる。でも時間がないので比較的ゆっくり。
* こめんと欄 * こめんと欄
- 現在abcdw007の今週中のリリースを目指してがんばり中。 -- [[K]] &new{2008-12-22 (月) 20:33:28}; - 現在abcdw007の今週中のリリースを目指してがんばり中。 -- [[K]] &new{2008-12-22 (月) 20:33:28};

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。