20: 2008-12-28 (日) 11:43:57 |
現: 2024-01-08 (月) 12:58:42 lina |
- | * ぐいぐい01に関するメモ-14 | + | TITLE:x |
| + | * ぐいぐい01に関するメモ-14 [#j68ff7f1] |
| -(by [[K]], 2008.12.20) | | -(by [[K]], 2008.12.20) |
| -メモのうち重要な部分をそのうちまとめてまともなページを作る | | -メモのうち重要な部分をそのうちまとめてまともなページを作る |
- | *** (29) 2008.12.20近況 | + | *** (29) 2008.12.20近況 [#e218b448] |
| -ここ1週間ほどの開発がここ数年で最高に充実していてかつ面白かったので記念でメモ。 | | -ここ1週間ほどの開発がここ数年で最高に充実していてかつ面白かったので記念でメモ。 |
| -少し前からOSASK-IRCにneriさんが常駐してくれていて、それでCOM64-GREの改良の話をしました。いろいろと改良してアーカイブ風になったあと、もっとコンパクトの役に立つ仕様にしたいということで、二人でどうしたらいいかを話し合いました。長すぎるシグネチャを短くするべきか、みたいなところが出発点だったと思います。こうしてCOM64plusの開発が始まりました。シグネチャを4バイトにするべきか2バイトにするべきか、そこも悩ましいところでした。 | | -少し前からOSASK-IRCにneriさんが常駐してくれていて、それでCOM64-GREの改良の話をしました。いろいろと改良してアーカイブ風になったあと、もっとコンパクトの役に立つ仕様にしたいということで、二人でどうしたらいいかを話し合いました。長すぎるシグネチャを短くするべきか、みたいなところが出発点だったと思います。こうしてCOM64plusの開発が始まりました。シグネチャを4バイトにするべきか2バイトにするべきか、そこも悩ましいところでした。 |
| -(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.27更新] | + | -以下にここまでの成果(多分これが限界でもあると思う)を書いておきます。[2009.01.02更新] |
| | |hello |hello-c |chars |echo |echo-c |cpy |cpy-c |makefont-c |sjisconv-c| | | | |hello |hello-c |chars |echo |echo-c |cpy |cpy-c |makefont-c |sjisconv-c| |
| |abcdw006用 |RIGHT:27 |RIGHT:86 |RIGHT:33 |RIGHT:? |RIGHT:156 |RIGHT:? |RIGHT:612 |RIGHT:691 |RIGHT:912| | | |abcdw006用 |RIGHT:27 |RIGHT:86 |RIGHT:33 |RIGHT:? |RIGHT:156 |RIGHT:? |RIGHT:612 |RIGHT:691 |RIGHT:912| |
- | |abcdw007用 |RIGHT:''18''|RIGHT:''69''|RIGHT:''14''|RIGHT:13 |RIGHT:71 |RIGHT:? |RIGHT:342 |RIGHT:347 |RIGHT:507| | + | |abcdw007用 |RIGHT:18 |RIGHT:69 |RIGHT:14 |RIGHT:13 |RIGHT:71 |RIGHT:? |RIGHT:342 |RIGHT:347 |RIGHT:507| |
- | |abcdw008用 |RIGHT:''18''|RIGHT:''69''|RIGHT:''14''|RIGHT:''9''|RIGHT:''69''|RIGHT:''45''|RIGHT:''140''|RIGHT:''207''|RIGHT:''395''| | + | |abcdw008用 |RIGHT:18 |RIGHT:69 |RIGHT:14 |RIGHT:''6''|RIGHT:51 |RIGHT:''45''|RIGHT:138 |RIGHT:207 |RIGHT:395| |
- | |COM64plus用|RIGHT:18? |検討中? |RIGHT:''14''|RIGHT:? |RIGHT:? |RIGHT:? |RIGHT:? |RIGHT:? |RIGHT:?| | + | |abcdw009用 |RIGHT:''17''|RIGHT:''68''|RIGHT:''13''|RIGHT:''6''|RIGHT:''50''|RIGHT:''45''|RIGHT:''134''|RIGHT:''203''|RIGHT:''389''| |
| + | |COM64plus用|RIGHT:18? |検討中? |RIGHT:14 |RIGHT:? |RIGHT:? |RIGHT:? |RIGHT:? |RIGHT:? |RIGHT:?| |
| |DOS用 |RIGHT:22 |RIGHT:? |RIGHT:17 |RIGHT:19 |RIGHT:? |RIGHT:? |RIGHT:? |RIGHT:? |RIGHT:?| | | |DOS用 |RIGHT:22 |RIGHT:? |RIGHT:17 |RIGHT:19 |RIGHT:? |RIGHT:? |RIGHT:? |RIGHT:? |RIGHT:?| |
| --(註)echoはargv[0]が見えても見えなくてもよい。 | | --(註)echoはargv[0]が見えても見えなくてもよい。 |
| |改良版 |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追記)コマンドライン周りの設計中(本仕様級)。以前は数ヶ月かけてもできなかったのに、今だと数日でこんなにはかどる。でも時間がないので比較的ゆっくり。 | + | -(12.27追記)コマンドライン周りの設計中(本仕様級)。以前は数ヶ月かけてもできなかったのに、今だと数日でこんなにはかどる。でも時間がないので比較的ゆっくり。ちなみに昨日のcpyのASKA版は更に見直しで45バイトになり、echoも9バイトになりました。 |
- | -(12.28追記)abcdw008向けのmakefont-c(現在207バイト)をASKAで書いたら75バイトになった。やっぱりアセンブラは偉大だー。 | + | -(12.28追記)abcdw008向けのmakefont-c(現在207バイト)をASKAで書いたら72バイトになった。やっぱりアセンブラは偉大だー。 |
- | * こめんと欄 | + | -(01.02追記)アイデアを思いついた!ので現在効果を見積もり中(abcdw009)。とりあえずバイナリ互換はなくなります。・・・アプリを丁寧に作るとそれだけ小さくなってくれるので、すごく気持ちがいいです。やりがい一杯、手ごたえ一杯。やっぱりこうでないと! |
| + | * こめんと欄 [#fa2e7236] |
| - 現在abcdw007の今週中のリリースを目指してがんばり中。 -- [[K]] &new{2008-12-22 (月) 20:33:28}; | | - 現在abcdw007の今週中のリリースを目指してがんばり中。 -- [[K]] &new{2008-12-22 (月) 20:33:28}; |
| - とりあえずリリースしました。MLへは後日投稿します。 -- ''K'' &new{2008-12-24 (水) 20:10:07}; | | - とりあえずリリースしました。MLへは後日投稿します。 -- ''K'' &new{2008-12-24 (水) 20:10:07}; |
| + | - abcdw008ができましたー。 http://osask.jp/files/ 6バイトのechoや45バイトのcpyなど、こんなので本当にちゃんと動くの?といいたくなるサイズのアプリが一杯です。MLへは後日投稿します。 -- ''K'' &new{2009-01-01 (木) 21:14:50}; |
| + | - abcdw009ができましたー。 http://osask.jp/files/ abcdw009があればabcdw008はいらないようになっています(というか以前のバージョンは全部なくても大丈夫)。MLへは後日投稿します。 -- ''K'' &new{2009-01-03 (土) 19:39:07}; |
| | | |
| #comment | | #comment |