2003-11-07 [長年日記]
λ. Ruby/TCC
Ruby/FFCall 0.0.2 をリリースしたら、Mitchell N Charity さんという方が Tiny C Compiler というコンパイラがライブラリとしても使えると教えてくれたので、ちょっと試しに拡張ライブラリにしてみた。以下は Tiny C Compiler の付属サンプルをRubyに移植したもの。
require 'tcc' tcc = TCC.new tcc.set_output_type(TCC::OUTPUT_MEMORY) tcc.compile_string <<END int fib(int n) { if (n <= 2) return 1; else return fib(n-1) + fib(n-2); } int foo(int n) { printf("Hello World!\n"); printf("fib(%d) = %d\n", n, fib(n)); printf("add(%d, %d) = %d\n", n, 2 * n, add(n, 2 * n)); return 0; }; END tcc.add_symbol("add", DL.callback("III"){|a,b| a + b }) tcc.relocate foo = tcc.get_symbol("foo", "II") foo.call(32)
このスクリプトを実行すると以下のような出力が得られる。
Hello World! fib(32) = 2178309 add(32, 64) = 96
結構面白いかも。
それから、TinyCCはTinyCC-Win32というWin32移植版もあるそうだ。えとせとら(2003-11-03)とシュッ・シュッ(2003-10-29) より
λ. 知識ベース論
やべー、レポートの提出って今日だったのか。うわー、やってもうた。欝だ。何が最悪かって、わたしゃ昨日日付を確認して来週だなと思っていたのですよ。何を確認してたんだろね俺は。あー、気分最悪。
λ. OBJは等式論理を使ってるらしい。
subtree が有限であるような木を rational tree というそうだ。
λ. 借りた本
- 『経済学を知らないエコノミストたち』
- 野口 旭 [著]
げ。やろうと思ったら先越された(藁
面白いですね。これを使ってJITコンパイラ作れるかな。
JITいいっすねー<br><br>そういえば、rubyjitやrb2cというのもありましたね。<br>http://easter.kuee.kyoto-u.ac.jp/~hiwada/ruby/
先日はお世話になりますた。<br>清木先生の授業は期限を多少遅れても見てくれるのである程度は大丈夫という説がありますので。
どうもありがとうございます。<br>何とか出してみます。