Tuesday 7 February 2006

Continuation based C



ここ数年やっている研究ネタ。なんとなく気が向いて、
 http://sourceforge.jp/projects/cbc/
にあげました。って、つまんない理由はあるんだけどさ。いや、つまんないって言ったら怒られるか。

function call を避けてgoto文でプログラミング出来るC言語です。C の拡張なんだけど、funcation callを使わないっていう立場を取るとCの下位言語になります。goto 文で区切られた部分は、code segement といいます。といっても、普通のCは「ほとんど」含んでいるので、部分的にgoto文で書くってのが現実的か。

Smalltalk/Squeak の実装とかを見ると、実は、最初はgoto文中心の発想で作られていていることがわかります。何故か、途中から「method = funcation call」になってしまったらしい。

このコンパイラを書いていてわかったことの一つは「funcion callの実装は複雑で難しい」ってこと。特にCは、可変長引数との互換性っていう問題があって、物事を複雑にしてます。function callを無くすと、機種依存性がほとんどなくなって簡単だってのもわかった。

C-- とか、型付アセンブラとか似たようなものはあるんだけど、つい、うっかり書いちゃったってところもある言語だな。Gcc をmodify しようという説もあり、Gcc にcompile出来るってな説もあり、まぁ、もう少し楽しめそうな題材の一つ。

No comments: