memo0004
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* Kの開発メモ #0004
-(by [[K]], 2013.04.23)
-ここは川合の開発の進捗などをレポートするところです。
** 2013.04.23 Tue
-今日は定数同士ではない演算の最適化パターンをいくつか登録...
--!(R10 < 100) が R10 >= 100 に変換されるとか(→これはif...
--R00 = R01 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10; は ...
--R01 = R02 * 0; が R01 = 0; になるとか。
--パターン方式なので、複雑な書き方をするとあきらめてしま...
-現在のサイズ:
--osecpu.exe : 10.0KB
--osectols.exe : 14.0KB
-osectolsが大きくなっていますが、osecpu.exeのデバッグ用の...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu031a.zip
** 2013.04.24 Wed
-時間がなくてなかなかif文に取り掛かれません・・・。
-今日の成果:
--(少しバグ取りした程度です。)
--http://osecpu.osask.jp/download/osecpu032a.zip
** 2013.04.25 Thu
-よしif文ができた!
--「&&とか||がなくて、&と|で代用しなければいけない」って...
-そろそろアプリを作って、このサイトをもうちょっととっつき...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu033a.zip
** 2013.04.26 Fri
-アプリを少し整理しました。
-今日の成果:
--http://osecpu.osask.jp/download/osecpu034a.zip
//-app0016.askですが、これをまじめにフロントエンドエンコ...
//--ちなみに現状は106バイトというとんでもないことになって...
// OSECPU_HEADER();
//
// for (R02 = 1000000; R02 != 0; R02--) { // j:R02
// R01 = 0;
// for (R00 = 10000; R00 != 0; R00--) { // sum:R01, i...
// R01 += R00;
// }
// }
//--これで30バイトってことは、シグネチャ以外の正味の部分...
** 2013.04.30 Tue
-昨日作ってしまったosectolsのバグをやっつけた。
-現在はosecpu.exeの一部をOSECPU-ASKAで書くという、おもし...
--機種依存しない部分は、osecpu.exeから追い出したいと思っ...
--というか昨日はこれをやろうとしてosectolsにバグを作って...
-やっとapp0000だけならフロントエンドコードでも実行できる...
--実際にosecpu.exeの下請けとして実用コードを書いてみると...
** 2013.05.01 Wed
-とりあえずapp0002まではフロントエンドコード対応した。も...
-さっきふと気づいたこと。OSECPUでは機械語が三項形式になっ...
--http://www.mztn.org/lxasm64/freq64_32.html これとは大違...
--レジスタがたくさんあることも関係しているかもしれない。
** 2013.05.02 Thu
-テストアプリは全部フロントエンドコード対応した。
-APIのレジスタの使い方を元に戻したので、コードリビジョン...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu035a.zip
--アプリのサイズがまともになっています。まあ今までがひど...
--osecpu.exeから機種依存しない部分を切り離す改造を入れて...
** 2013.05.03 Fri
-関数呼び出しの仕様を整理していたら、不満が爆発。OSECPUが...
--Pxxはどうして32本しかないんだ。やっぱり64本必要だ。
--プログラムカウンタはP00じゃなくてP3Fであるべきだ。
--R00~R0Fがテンポラリレジスタなのは使いにくい。R30~R3E...
-今ならいくらでも修正できるのだから、何度でも修正して考察...
** 2013.05.07 Tue
-現在ちまちまと上記改良を適応中。
-やっとバグが取れて動くようになった。
-このレジスタの使い方には満足しているので、当分変えない予...
** 2013.05.08 Wed
-ちょっと時間ができたので、いろいろ書いておく。
-まず、OSECPUはJavaよりもセキュアかどうかという点に関して...
--まあほぼ同程度には追いつけるかもしれない。
-Javaと違うところといえば、レジスタマシンであることと、ガ...
--これが機能的な特徴かな。
--だからOSECPUは、Javaもどきを作ったというよりは、C言語も...
--C言語のプログラミングスタイルの延長で、相応のセキュアさ...
-性能面での特徴としては、Javaよりも実行開始までが高速で、...
--これはベンチマークしないと比較できないなあ。
-あとはosecpu.exeもアプリも極端に小さい。
-移植は容易だと思う。
** 2013.05.10 Fri
-昨日はループのフロントエンドバイトコードを改良した。
-あとは関数呼び出しのフロントエンドバイトコードを改良した...
-そこまでできたら一区切り。
-OSECPUを機能密度の高さでアピールするとしたら、何で示すの...
--hello対決:予定18バイト(シグネチャが4バイトなので)
--chars対決:予定13バイト(シグネチャが4バイトなので)
--カラーグラデーション対決(app0006のこと):
--bball対決:
--invader対決:
** 2013.05.14 Tue
-カラーグラデーションは、28バイトで書けそうなことが分かっ...
--と思ったら24バイトになってしまった。われながらすごい。A...
-いろいろできた。でもまだテストが終わってないのでリリース...
** 2013.05.15 Wed
-さらにもう少し改良して、リリースできるところまで来た。
-今回のバージョンアップポイントは、機能密度を追求したこと。
--カラーグラデーションは22バイトになった。APIの仕様を詰め...
-今日の成果:
--(今夜アップロード予定)
--http://osecpu.osask.jp/download/osecpu036a.zip
** 2013.05.16 Thu
-長い間サポートしてこなかった(整数)除算命令をついにサポ...
-OSECPUにラインを引くAPIを追加して、bball対決をしました。...
~
http://osecpu.osask.jp/download/bball.png
第一世代OSASK 199バイト
TownsOS 185バイト
MS-DOS/NEC PC-9801 114バイト
Human68k+IOCS 116バイト
MSX-DOS/MSX2 140バイト
「はりぼてOS」 350バイト(改良の余地あり、参考記録)
OSECPU 92バイト
--OSECPUは2位と1.24倍もの差をつけて圧勝しています!
-他にもアプリを書いたのですが、とにかく何を書いても小さく...
~
http://osecpu.osask.jp/download/app0022.png
--これを表示するためのプログラムは27バイトです。
-今日の成果:
--http://osecpu.osask.jp/download/osecpu037a.zip
** 2013.05.17 Fri
-あれこれ言い訳をして、中途半端になるのはきっとよくない。...
--シグネチャを2バイトにする。
--API番号をまともにする。
-まともにしたらこうなった。
--グラデーション(app0006): 28→23
--グラデーション(枠なし、app0020): 22→19
--XORのlines(app0022): 27→22
--bball(app0023): 92→86
--app0019: 2254→334
-今日の成果:
--http://osecpu.osask.jp/download/osecpu038a.zip
-おっと、app0019は簡単に313バイトに減らせることが分かった...
** 2013.05.19 Sun
-改良方法を複数思いついた。これをやればいずれのアプリもさ...
--グラデーション(app0006): 23→18?
--グラデーション(枠なし、app0020): 19→13?
--XORのlines(app0022): 22→21?
--bball(app0023): 86→71??
--app0019: 313→???
-時間ができたらこの改良を適用したい。
** 2013.05.20 Mon
-上記の数字はほぼ達成。でもフロントエンドからバックエンド...
--グラデーション(app0006): 18
--グラデーション(枠なし、app0020): 13
--XORのlines(app0022): 20
--bball(app0023): 71
--app0019: 313→???
-自分で言うのもなんだけど、これ以上の改善は不可能なんじゃ...
--そしてレンジコーダを入れたら、メモリダンプから中身を読...
--ちなみにapp0019以外は、tek5するとかえって増えてしまう。...
** 2013.05.21 Tue
-app0019はtek5しなくても702バイトで書けるようになり、tek5...
--というか無圧縮でも702バイトって、それは結構すごいんじゃ...
-僕は学生の時に雑誌に載っているバイナリダンプをせっせと入...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu039a.zip
** 2013.05.22 Wed
-(1) そうかー、03/19から作ってきたわけだから、約2ヶ月でこ...
-2ヶ月の間に、CPUの仕様の設計と改良、JITコンパイラの開発...
-しかもOSECPUは僕の今までの集大成みたいなところもある。第...
-(2) app0024(旧app0019)は、273までは減らせそう。無圧縮...
--256に行けたらすごいと思ったけど、さすがにそれは無理っぽ...
** 2013.05.24 Fri
-ver.0.40へのtodoをまとめて、詳細を設計した。
--PADDLMEM, PADDSMEMという複合命令のサポート
--関数記述支援
--文字列表示APIをまともにする(9バイトでcharsが書けるよう...
** 2013.05.27 Mon
-関数記述支援のためにENTER/LEAVE命令を作ってみたものの、...
** 2013.05.28 Tue
-昨日のバグ: JITコンパイラが生成するx86コードでスタック...
-app0024が273まで減らせそうとか書いたけどそれは無理っぽい...
--なんかくやしくて小さくする方法を探したけど、そう簡単に...
-charsの9バイトと、helloの16バイト版を実装。まあいろいろ...
--helloは末尾に!を付けています(efg01版では付けていなかっ...
--charsの世界一記録をついに奪還。
-システムライブラリが大きくなりすぎだよな・・・。どうした...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu040a.zip
** 2013.05.29 Wed
-1週間くらい前から、Livaさんという人に開発を手伝ってもら...
-charsとhelloをさらに小さくしたので、今夜リリース予定です。
-LivaさんがMacOSへの移植を開始した模様。とりあえずコンソ...
-MacOSのgccで、Cの関数をアセンブラ(というか機械語)から...
--末尾=最初にPUSH。
--https://developer.apple.com/library/mac/#documentation/...
--ここにはEBXを勝手に使うなみたいなことは書いているけど(...
--しかしLivaさんが偶然EBXを積んでみたら通ったと教えてくれ...
--今上記ドキュメントを読み直したら、スタックのアラインが...
--結局アラインだけの問題でした。めでたしめでたし。・・・...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu041a.zip
--http://osecpu.osask.jp/download/osecpu042a.zip
--http://osecpu.osask.jp/download/osecpu043a.zip
** こめんと欄
-CLEではC言語ルーチンを呼び出す直前にスタックアラインして...
-途中でエンター押してしまった。。ちなみにCLEはOSX版が最初...
-おお!さすが!!・・・やっぱり先人は違うなあ。 -- ''K'' ...
#comment
終了行:
* Kの開発メモ #0004
-(by [[K]], 2013.04.23)
-ここは川合の開発の進捗などをレポートするところです。
** 2013.04.23 Tue
-今日は定数同士ではない演算の最適化パターンをいくつか登録...
--!(R10 < 100) が R10 >= 100 に変換されるとか(→これはif...
--R00 = R01 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10; は ...
--R01 = R02 * 0; が R01 = 0; になるとか。
--パターン方式なので、複雑な書き方をするとあきらめてしま...
-現在のサイズ:
--osecpu.exe : 10.0KB
--osectols.exe : 14.0KB
-osectolsが大きくなっていますが、osecpu.exeのデバッグ用の...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu031a.zip
** 2013.04.24 Wed
-時間がなくてなかなかif文に取り掛かれません・・・。
-今日の成果:
--(少しバグ取りした程度です。)
--http://osecpu.osask.jp/download/osecpu032a.zip
** 2013.04.25 Thu
-よしif文ができた!
--「&&とか||がなくて、&と|で代用しなければいけない」って...
-そろそろアプリを作って、このサイトをもうちょっととっつき...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu033a.zip
** 2013.04.26 Fri
-アプリを少し整理しました。
-今日の成果:
--http://osecpu.osask.jp/download/osecpu034a.zip
//-app0016.askですが、これをまじめにフロントエンドエンコ...
//--ちなみに現状は106バイトというとんでもないことになって...
// OSECPU_HEADER();
//
// for (R02 = 1000000; R02 != 0; R02--) { // j:R02
// R01 = 0;
// for (R00 = 10000; R00 != 0; R00--) { // sum:R01, i...
// R01 += R00;
// }
// }
//--これで30バイトってことは、シグネチャ以外の正味の部分...
** 2013.04.30 Tue
-昨日作ってしまったosectolsのバグをやっつけた。
-現在はosecpu.exeの一部をOSECPU-ASKAで書くという、おもし...
--機種依存しない部分は、osecpu.exeから追い出したいと思っ...
--というか昨日はこれをやろうとしてosectolsにバグを作って...
-やっとapp0000だけならフロントエンドコードでも実行できる...
--実際にosecpu.exeの下請けとして実用コードを書いてみると...
** 2013.05.01 Wed
-とりあえずapp0002まではフロントエンドコード対応した。も...
-さっきふと気づいたこと。OSECPUでは機械語が三項形式になっ...
--http://www.mztn.org/lxasm64/freq64_32.html これとは大違...
--レジスタがたくさんあることも関係しているかもしれない。
** 2013.05.02 Thu
-テストアプリは全部フロントエンドコード対応した。
-APIのレジスタの使い方を元に戻したので、コードリビジョン...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu035a.zip
--アプリのサイズがまともになっています。まあ今までがひど...
--osecpu.exeから機種依存しない部分を切り離す改造を入れて...
** 2013.05.03 Fri
-関数呼び出しの仕様を整理していたら、不満が爆発。OSECPUが...
--Pxxはどうして32本しかないんだ。やっぱり64本必要だ。
--プログラムカウンタはP00じゃなくてP3Fであるべきだ。
--R00~R0Fがテンポラリレジスタなのは使いにくい。R30~R3E...
-今ならいくらでも修正できるのだから、何度でも修正して考察...
** 2013.05.07 Tue
-現在ちまちまと上記改良を適応中。
-やっとバグが取れて動くようになった。
-このレジスタの使い方には満足しているので、当分変えない予...
** 2013.05.08 Wed
-ちょっと時間ができたので、いろいろ書いておく。
-まず、OSECPUはJavaよりもセキュアかどうかという点に関して...
--まあほぼ同程度には追いつけるかもしれない。
-Javaと違うところといえば、レジスタマシンであることと、ガ...
--これが機能的な特徴かな。
--だからOSECPUは、Javaもどきを作ったというよりは、C言語も...
--C言語のプログラミングスタイルの延長で、相応のセキュアさ...
-性能面での特徴としては、Javaよりも実行開始までが高速で、...
--これはベンチマークしないと比較できないなあ。
-あとはosecpu.exeもアプリも極端に小さい。
-移植は容易だと思う。
** 2013.05.10 Fri
-昨日はループのフロントエンドバイトコードを改良した。
-あとは関数呼び出しのフロントエンドバイトコードを改良した...
-そこまでできたら一区切り。
-OSECPUを機能密度の高さでアピールするとしたら、何で示すの...
--hello対決:予定18バイト(シグネチャが4バイトなので)
--chars対決:予定13バイト(シグネチャが4バイトなので)
--カラーグラデーション対決(app0006のこと):
--bball対決:
--invader対決:
** 2013.05.14 Tue
-カラーグラデーションは、28バイトで書けそうなことが分かっ...
--と思ったら24バイトになってしまった。われながらすごい。A...
-いろいろできた。でもまだテストが終わってないのでリリース...
** 2013.05.15 Wed
-さらにもう少し改良して、リリースできるところまで来た。
-今回のバージョンアップポイントは、機能密度を追求したこと。
--カラーグラデーションは22バイトになった。APIの仕様を詰め...
-今日の成果:
--(今夜アップロード予定)
--http://osecpu.osask.jp/download/osecpu036a.zip
** 2013.05.16 Thu
-長い間サポートしてこなかった(整数)除算命令をついにサポ...
-OSECPUにラインを引くAPIを追加して、bball対決をしました。...
~
http://osecpu.osask.jp/download/bball.png
第一世代OSASK 199バイト
TownsOS 185バイト
MS-DOS/NEC PC-9801 114バイト
Human68k+IOCS 116バイト
MSX-DOS/MSX2 140バイト
「はりぼてOS」 350バイト(改良の余地あり、参考記録)
OSECPU 92バイト
--OSECPUは2位と1.24倍もの差をつけて圧勝しています!
-他にもアプリを書いたのですが、とにかく何を書いても小さく...
~
http://osecpu.osask.jp/download/app0022.png
--これを表示するためのプログラムは27バイトです。
-今日の成果:
--http://osecpu.osask.jp/download/osecpu037a.zip
** 2013.05.17 Fri
-あれこれ言い訳をして、中途半端になるのはきっとよくない。...
--シグネチャを2バイトにする。
--API番号をまともにする。
-まともにしたらこうなった。
--グラデーション(app0006): 28→23
--グラデーション(枠なし、app0020): 22→19
--XORのlines(app0022): 27→22
--bball(app0023): 92→86
--app0019: 2254→334
-今日の成果:
--http://osecpu.osask.jp/download/osecpu038a.zip
-おっと、app0019は簡単に313バイトに減らせることが分かった...
** 2013.05.19 Sun
-改良方法を複数思いついた。これをやればいずれのアプリもさ...
--グラデーション(app0006): 23→18?
--グラデーション(枠なし、app0020): 19→13?
--XORのlines(app0022): 22→21?
--bball(app0023): 86→71??
--app0019: 313→???
-時間ができたらこの改良を適用したい。
** 2013.05.20 Mon
-上記の数字はほぼ達成。でもフロントエンドからバックエンド...
--グラデーション(app0006): 18
--グラデーション(枠なし、app0020): 13
--XORのlines(app0022): 20
--bball(app0023): 71
--app0019: 313→???
-自分で言うのもなんだけど、これ以上の改善は不可能なんじゃ...
--そしてレンジコーダを入れたら、メモリダンプから中身を読...
--ちなみにapp0019以外は、tek5するとかえって増えてしまう。...
** 2013.05.21 Tue
-app0019はtek5しなくても702バイトで書けるようになり、tek5...
--というか無圧縮でも702バイトって、それは結構すごいんじゃ...
-僕は学生の時に雑誌に載っているバイナリダンプをせっせと入...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu039a.zip
** 2013.05.22 Wed
-(1) そうかー、03/19から作ってきたわけだから、約2ヶ月でこ...
-2ヶ月の間に、CPUの仕様の設計と改良、JITコンパイラの開発...
-しかもOSECPUは僕の今までの集大成みたいなところもある。第...
-(2) app0024(旧app0019)は、273までは減らせそう。無圧縮...
--256に行けたらすごいと思ったけど、さすがにそれは無理っぽ...
** 2013.05.24 Fri
-ver.0.40へのtodoをまとめて、詳細を設計した。
--PADDLMEM, PADDSMEMという複合命令のサポート
--関数記述支援
--文字列表示APIをまともにする(9バイトでcharsが書けるよう...
** 2013.05.27 Mon
-関数記述支援のためにENTER/LEAVE命令を作ってみたものの、...
** 2013.05.28 Tue
-昨日のバグ: JITコンパイラが生成するx86コードでスタック...
-app0024が273まで減らせそうとか書いたけどそれは無理っぽい...
--なんかくやしくて小さくする方法を探したけど、そう簡単に...
-charsの9バイトと、helloの16バイト版を実装。まあいろいろ...
--helloは末尾に!を付けています(efg01版では付けていなかっ...
--charsの世界一記録をついに奪還。
-システムライブラリが大きくなりすぎだよな・・・。どうした...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu040a.zip
** 2013.05.29 Wed
-1週間くらい前から、Livaさんという人に開発を手伝ってもら...
-charsとhelloをさらに小さくしたので、今夜リリース予定です。
-LivaさんがMacOSへの移植を開始した模様。とりあえずコンソ...
-MacOSのgccで、Cの関数をアセンブラ(というか機械語)から...
--末尾=最初にPUSH。
--https://developer.apple.com/library/mac/#documentation/...
--ここにはEBXを勝手に使うなみたいなことは書いているけど(...
--しかしLivaさんが偶然EBXを積んでみたら通ったと教えてくれ...
--今上記ドキュメントを読み直したら、スタックのアラインが...
--結局アラインだけの問題でした。めでたしめでたし。・・・...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu041a.zip
--http://osecpu.osask.jp/download/osecpu042a.zip
--http://osecpu.osask.jp/download/osecpu043a.zip
** こめんと欄
-CLEではC言語ルーチンを呼び出す直前にスタックアラインして...
-途中でエンター押してしまった。。ちなみにCLEはOSX版が最初...
-おお!さすが!!・・・やっぱり先人は違うなあ。 -- ''K'' ...
#comment
ページ名: