yaoのページ
- (by yao, since 2013-09-21)
- OSECPU-Lispの作者です。
- ご意見・質問などありましたら、下のコメント欄などにお気軽にどうぞ。
- このwikiのページは更新があるたびにひととおり読んでいます。
目次
OSECPU-Lisp
- OSECPU-VM上で動作するPure Lispのインタプリタです。
- 今後OSECPU-Lispに関することはここに書いていきます。
- 2013-09-21現在、OSECPU-Lispのチュートリアルを書いています。
数日中に第1版を公開する見込みです。
2013-09-23、第1版(コミットID: f5fde0d688)を公開しました。
- 2013-10-19、第2版(コミットID: de4e847063)を公開しました。
- リポジトリをクローンして( git clone https://github.com/yuta-aoyagi/osecpu-lisp.git )、「git diff (AのコミットID) (BのコミットID)」を実行するとAとBの変更点を読めます。
OSECPU-compilers
- 自己記述できるコンパイラを作ろうというプロジェクトです。
- 最初のリリースは1024バイトコンテストには何とか間に合った(はず)。
- 先に「リリース」とだけ書いたこのページの編集は、このwikiの時刻で10/23 23:59:56になっています。
- (近い時刻の編集はPukiWikiのバックアップに残らなかったような気がするので一応主張しておきます。)
リリース. http://www16.atpages.jp/aoyagi/data/c000.tgz
- この最初のリリースはドキュメントもなしにtgzで固めただけなので、後でちゃんとしたリリースをやり直します。
- c000は、普通に考えられる中でもっとも低級なアセンブラです。
- 入力からコメントを取り除きオペコードを変換して、16進ダンプを生成します。
- この出力をapp0031.oseに渡すことで任意のバイナリを生成することができます。
- リンクしたアーカイブを展開して「make BINTRANS=(app0031.oseへのパス) build」で自身のコンパイルを行います。
- ブートストラップのため、1段目を手で実行したものがアーカイブに同梱されています。
- コンパイルに成功したら(diffにPATHが通った状態で)「make check」を実行すると自己生成に成功したかどうかがテストされます。
- さて、1024バイトコンテストに応募するための要件ですが、出力されるバイナリはバックエンドコードで840バイト、これにappackをかけてフロントエンドコードを得ると212バイト、さらにappack flags:8をかけて最終サイズが211バイトです!
- (「当初は512バイト切ればいいなー」と思ってたのに半分未満とは……さすがOSECPU-VM、常識が通用しない。)
- というわけで、QRコードの271バイトの部に応募できますね。よろしくお願いいたします>Kさん
進捗報告
2013-11-29
- ずいぶん久しぶりなので進捗を書いておきたいと思います。
- (1)Linuxの導入
- 1024コンテストの後、開発に使っているWindows機にLinux(Damn Small Linux)をQEMUとともに導入、OSECPU-VMのLinux版ビルドを試みる。
- 名前のとおり小さいディストリビューションなのでGTKはなく、フレームバッファ版のblikeをビルド(このあたりがよくわかっていない)。
- うまく動かなかったので、osecpu.cからウィンドウを扱っているコードをコメントアウトしてビルドし、コンソールアプリだけは動くことを確認。
- 番号つけたのはいいけど、進捗に書けることは(1)しかなかった。今はOSECPU-VMと関係のないプログラムを開発している。今年中に最初のリリースを行う予定。
- その後はOSECPU-VMに戻って、
- OSECPU-Lispのチュートリアル拡充
- OSECPU-Lispにquote構文を導入
- OSECPU-compilersのちゃんとしたリリース
- まだ構想段階の(ため明言はしたくない)プロジェクト2つ
- などをやりたい。
2014-03-15
- 「ずいぶん久しぶり」から3か月半も経ってしまいました。何やら新しいプロジェクトが動き始めたようなので、こちらも進捗報告の時間です。
- 「進捗どうですか?」「進捗ダメです」
- (1)VPS契約(2月上旬)
- 前回の報告にあったWindows機がお亡くなりになりマシンが1台減ったので、どうせならLinux使えるところで何か経験しようということで。
- ちなみにこのWindows機に仮想Linux機を置いていたので、今は使えない状態になっている。(ディスクは無事だったのでその気になれば取り出せるが)
- まだOSECPU-VM関係でなにかやろうという環境にはなっていない。
- (2)新規プロジェクト「JSECPU-VM」始動(2月下旬)
- (先に、前回の報告にあった「OSECPU-VMと関係のないプログラムを開発」のところ。開発する動機がなくなってしまったのでリリースともども破棄した(2月上旬))
- 名前だけで察していただけると思うけど、OSECPU-VMのJava実装である。
- 標準のosecpu.exeを可能な限り再現すること、VMに統合されたデバッガとプロファイラを実現、可能な限り高い自動テストカバレッジ、前の3項目を犠牲にしない範囲で高速な実行、前の4項目を犠牲にしない範囲で読みやすいコードベース。以上の5項目を並べた順に目標としている。
- 現在のところ、バックエンドコード記述のapp0000とapp0001が実行できる。(というかそれしか実行できない。さっさとラベルの対応をまともにするべし、と)
- (1月下旬に書いたメモより)
- OSECPU-VMプロジェクトへの貢献は、周りへの影響が大きい順に次の5種類があるように思われる。
- VM仕様自体の改善。
- 標準の実装osecpu.exeの改善。
- VMを他のプラットフォームに移植。
- バックエンドとして使う(典型的には言語処理系)。
- アプリを作る。
- 単にアプリを作る(e.)よりは、VMを移植すれば(c.)すでに存在するすべてのアプリの移植が済んだことになり、影響が大きい。VM仕様自体を改善すれば(a.)、またさらに影響が大きい。上のリストはそのような観点で並べられている。
- これまでの活動は、osecpu.exeのバグ報告(b.)、OSECPU-Lisp(アプリなのでe.だが、言語処理系なので同時にd.でもある)、OSECPU-compilers-0(同様にd.とe.に該当)といったところである。
- バグ報告はバグを見つけられないとできないので、a.やb.にあたる貢献は私の力ではそろそろ難しくなってきている。
- 以前のプロジェクトはd.やe.だが、ある程度規模が大きいアプリを開発しようとするとデバッガの支援がないと辛い。
- したがって、デバッガを含むVMを新たに開発することにした。
- 標準のosecpu.exeにデバッガを実装するというb.の貢献も考えたが、Javaプラットフォームに載せられればさまざまな携帯機器も視野に入ってくるので、あえてc.の活動を始めた。
2014-07-30
- 「「ずいぶん久しぶり」から3か月半も経って」からさらに4か月半です。
- なんといっても最大の変化はrev2のリリースでしょう。
- rev1時代にセキュリティにかかわる重大なバグを見つけて(2014-04-02)修正されるまで活動を中断しようと思っていましたが、修正されなかったのでずいぶんと長いお休みになってしまいました。
- rev2がリリースされあれよあれよと機能面でrev1に追いつき、面白いことができそうになってきたので活動再開です。
- ここ2週間ほどちまちまコードを書いてはいますが、しばらく忙しいのでいつ公開できるかは全く未定です。
コメント欄
- うわあああ!す、すまん…すまん…(・_; じつはblikeのlinuxフレームバッファー版はずいぶん前から壊れてまして… -- けめっぽ 2013-11-30 (土) 17:33:12
- すまん…すまん…(・_; というかOSECPUのドライバー部分、私と違ってもっと優秀な誰かが(blikeを介さずにもっと誰でもメンテできるように一般的なライブラリーで)書き直してくれると、いいな…と思っております。 ちら…ちら… -- けめっぽ 2013-11-30 (土) 17:37:07
- おお!yaoさんが帰ってきた!! -- K 2014-07-31 (木) 06:51:06