2009-02-01から1ヶ月間の記事一覧

VM

眺めているだけではやっぱりよく分からないので、手を動かそう。要はスタックマシン ScmVM を真似してスタックマシンを作ってみれば基本的な部分は理解できると思う。 (define-class <toy-vm> () ((val0 :accessor val0-of :init-value #f) (pc :accessor pc-of :ini</toy-vm>…

メモ

時間を作れない。情けない。2、3月はほぼ泥のようだ。 Shibuya.lisp はそもそも出遅れた時点でアウト。無念。 LLVM 勉強会第2回は申し込み。仕事が片付いていることを祈って。

ボトムアップ(2)

compile.scm を追いかける前の準備。shiro さんに教えてもらったVMへのフラグを使うと、最適化前の命令列が手に入る。これはとてもいい。 gosh> (vm-dump-code (compile-pass3 (compile-pass1 '(+ 1 2)))) main_code (name=%toplevel, code=0x5cd590, size=3…

メモ2

VM インストラクション。 http://wiki.monaos.org/index.php?Reading%20Gauche%2Fvm%2Finsn これと vm-dump-code を眺める。

SBCL backend

SBCL ML から検索。 http://sourceforge.net/mailarchive/message.php?msg_id=28b25c50702130600p75423b37kc9c550014b8b060a%40mail.gmail.com

ボトムアップ

compile.scm を読むための準備として、少しずつ compile - disassemble を繰り返して、 Gauche VM の挙動を外から把握しよう。最終的に Gauche の VM への命令列が手で作れて、実行できると嬉しい。 http://www.practical-scheme.net/wiliki/wiliki.cgi?Gauc…

「マンマ・ミーア!」感想

全力で歌って踊るメリルストリープがとても魅力的です。絶賛。 素晴らしい海、空、ABBA の(私ですら耳が覚えているほど有名な)ヒットナンバー。なにより生き生きとしている人物達がとても素晴らしい。 ミュージカル映画、つまりいきなり登場人物が歌いだす…

LLVM コマンドのオプション

今頃知ったのだけど、LLVM のコマンド(opt, lli, etc) に --help-hidden をあたえると、山ほどオプションが出てくる。 Note that these pages do not describe all of the options available for all tools. To get a complete listing, pass the --help (ge…

購入検討

X86-64(自作) iMac MacPro 価格 ○ ◎ × CPU ◎ ○ ◎ OS? CentOS/Win MacOS X MacOS X 懸念事項 作れるか不安 新製品はいつ? Mac 環境はちゃんとしておきたい。 X86-64 なら gauche, mosh, ypsilon, maeve が遊べるはず。

フィボナッチ数列再考

似たようなことを既に書いた気もするけど、あらためて fib をコンパイルしたときの挙動を書いておく。わたしのコンパイラもどきでは、以下のようになっている。 fixnum は下位2ビットは 11 。 LLVM なので SSA 形式、代入は一回限り。 %ret は %eax レジス…

Scheme Compiler の勉強(41) - string 実装

特に問題無い、はず。 gosh> (let ((s (make-string 5))) (string-set! s 0 #\H) (string-set! s 1 #\e) (string-set! s 2 #\l) (string-set! s 3 #\l) (string-set! s 4 #\o) s) "Hello" gosh> (run-program '(let ((s (make-string 5))) (string-set! s 0 …

メモ2

util.match で、先頭じゃなくて末尾をマッチさせたい。続く。

メモ

(if #f 1) => <undef> (cond (#f 1)) => <undef> Scheme は「式の結果が未規定」なのがあまりに多すぎると何度も思う。#fとかに決めてしまえば良いのに。</undef></undef>

Register Vairables

メモ。 http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-February/020001.html

メモ

make-string, string-length, setring-ref, string-set! を実装予定。これがないと、3.11 Complex Constants が実装できない。ほとんど vector と同じ? あと印字用の $display-obj の拡張か。まだ機能が少なすぎてろくにベンチマークを走らせて他と比較する…

"ClojureがSTMとLISPをJVMにもたらす"

http://www.infoq.com/jp/news/2009/02/clojure-interview-halloway 日本語訳 http://www.infoq.com/news/2009/01/clojure-interview-halloway 原文 http://groups.google.com/group/clojure/browse_thread/thread/affb08d66c048c7f "Got a Clojure library?…

LLVM ML より

http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-February/019961.html "IR in XML" という質問に対して、 http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-February/019965.html John Clements さんのコメント。 To wit: I'm manipulating IR in Scheme…

Elisp for scheme, etc

既存のを調べるの忘れてた。そして当然のように幾つも scheme/gauche 関連の elisp があるのだった。しまった。 http://swik.net/gauche-mode gauche-mode.el - http://d.hatena.ne.jp/leque/20081012/p4 http://www.katch.ne.jp/~leque/software/repos/gauc…

Elisp 続き

Emacs Lisp 側に select-module で指定されているモジュール名を渡す方法を考えよう。一度 Emacs 側でモジュール名が分かれば後はバッファローカル変数に設定すればいい。マクロ展開後に select-module が出てくる場合や、1ファイルに複数回 select-module …

scheme-macro-expand-command for Gauche

Emacs 上で Inferior Scheme モードを使って開発している場合、以下の設定を行うと、Emacs のキー操作のみでマクロ展開された結果を簡単に参照できて便利です。設定も簡単ですが何故かGoogle で一切検索にヒットしないので、メモしておきます。 設定 Scheme …

elisp 準備

Gauche の define-module は Special-form であり、引数はシンボルでなくてはならない。(http://practical-scheme.net/gauche/man/gauche-refj_32.html) (define-module "foo") ;; error (define-module (string->symbol "foo")) ;; error (define-module (f…

scheme-mode と Gauche の module について

Gauche + Emacs で対話的にモジュールを使った開発しているときに、以下のような問題にあたります。 elisp を書いてみましたがそもそも同じような環境で開発されている皆様はどうされてるのでしょう?私の開発方法がそもそもずれている可能性もあるので、識…