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; は R00 = R01 + 55; になるとか。
- R01 = R02 * 0; が R01 = 0; になるとか。
- パターン方式なので、複雑な書き方をするとあきらめてしまいます。まあアセンブラなのでその程度で十分かなーと。
- 現在のサイズ:
- osecpu.exe : 10.0KB
- osectols.exe : 14.0KB
- osectolsが大きくなっていますが、osecpu.exeのデバッグ用のツールまで内包したので、大きくなるのは気にしないことにしました。どうせこれはバイトコードに移植してしまうので、大きくなってもOSECPUの移植性に影響しません。
- 今日の成果:
2013.04.24 Wed
- 時間がなくてなかなかif文に取り掛かれません・・・。
- 今日の成果:
2013.04.25 Thu
- よしif文ができた!
- 「&&とか||がなくて、&と|で代用しなければいけない」ってあたりは正直微妙だけど、x86用のASKAは&とか|すら全部できなかったわけで、あの頃と比べればこれでも格段に便利だ!
- そろそろアプリを作って、このサイトをもうちょっととっつきやすくしないとなあ・・・。
- 今日の成果:
2013.04.26 Fri
2013.04.30 Tue
- 昨日作ってしまったosectolsのバグをやっつけた。
- 現在はosecpu.exeの一部をOSECPU-ASKAで書くという、おもしろいことをやっているところ。
- 機種依存しない部分は、osecpu.exeから追い出したいと思っているので。
- というか昨日はこれをやろうとしてosectolsにバグを作ってしまったのだ。
- やっとapp0000だけならフロントエンドコードでも実行できるようになった。これからサポートできるフロントエンドコードを増やしていく予定。
- 実際にosecpu.exeの下請けとして実用コードを書いてみると、OSECPU-ASKAの微妙なバグとか、osecpu.exeのJITコンパイラのバグとかがぽろぽろと見つかる。今はバグを取らずに回避して書いているけど、そのうち直したい。
2013.05.01 Wed
- とりあえずapp0002まではフロントエンドコード対応した。もう少しいじって、いったんリリースするつもり。不安定リリースだけど。
- さっきふと気づいたこと。OSECPUでは機械語が三項形式になっているけど、これだと単純な代入命令(CP命令)はあまり使わないということが判明。まあ自分の体験談でしかないけど。
2013.05.02 Thu
- テストアプリは全部フロントエンドコード対応した。
- APIのレジスタの使い方を元に戻したので、コードリビジョンをさらに増やした。
- 今日の成果:
2013.05.03 Fri
- 関数呼び出しの仕様を整理していたら、不満が爆発。OSECPUがいろいろと気に入らない。
- Pxxはどうして32本しかないんだ。やっぱり64本必要だ。
- プログラムカウンタはP00じゃなくてP3Fであるべきだ。
- R00~R0Fがテンポラリレジスタなのは使いにくい。R30~R3Eがテンポラリになるべきだ。
- 今ならいくらでも修正できるのだから、何度でも修正して考察して、納得いく仕様を探すべきだ。
こめんと欄