トップ «前の日記(2003-11-06) 最新 次の日記(2003-11-09)» 月表示 編集

日々の流転


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) より

Tags: ruby

λ. 知識ベース論

やべー、レポートの提出って今日だったのか。うわー、やってもうた。欝だ。何が最悪かって、わたしゃ昨日日付を確認して来週だなと思っていたのですよ。何を確認してたんだろね俺は。あー、気分最悪。

λ. OBJは等式論理を使ってるらしい。

subtree が有限であるような木を rational tree というそうだ。

λ. 借りた本

『経済学を知らないエコノミストたち』
野口 旭 [著]
Tags:
本日のツッコミ(全5件) [ツッコミを入れる]
ψ たむら (2003-11-08 22:19)

げ。やろうと思ったら先越された(藁

ψ 青木 (2003-11-09 01:29)

面白いですね。これを使ってJITコンパイラ作れるかな。

ψ さかい (2003-11-09 03:22)

JITいいっすねー<br><br>そういえば、rubyjitやrb2cというのもありましたね。<br>http://easter.kuee.kyoto-u.ac.jp/~hiwada/ruby/

ψ やいざわ@清木研 (2003-11-10 01:06)

先日はお世話になりますた。<br>清木先生の授業は期限を多少遅れても見てくれるのである程度は大丈夫という説がありますので。

ψ さかい (2003-11-10 22:36)

どうもありがとうございます。<br>何とか出してみます。