switchの最適化

昨日の朝の話をまとめようとしたら、すでにまとめられた上にお役立ち情報まで付加されていて俺歓喜

東大さんで今,mini-pythonインタプリタを作るという演習をやっているそうな.

んで,今 twitter の柱の hayamizu 氏を筆頭に,空前の VM (仮想マシン) ブームが起きている感じ.

(中略)

毎朝 5 時から朝 hack しているらしい hayamizu 氏も,GCC が switch をジャンプに展開するのを期待していたようですが,僕が寝ている間にいろいろ一悶着あったみたいです (twitter のログをテキトーに加工して tac で逆順にしたもの).GCC の最適化はそんなにがんばってないので有名ですが,馬鹿の子呼ばわりはひどい!

http://alohakun.blog7.fc2.com/blog-entry-878.html

馬鹿は俺でしたサーセンwww

リンクされているYARVの命令ディスパッチは、うおーそんなところまでできるのか、と感動しながら読みました。読みながら、Gauchevm.cで同じような手法が使われていたことに気がついて、理解できなかった部分が氷解してすっきり。

VMが流行しているのはおそらく自分の中だけなんですけど、コードを書いて公開するとこうやって反応が返ってきて新たな情報源を得られるのはありがたいことです。対価はコードを書いて公開することでペイしてゆきたい。


関係ないけど、そろそろPEGのほうも妄想から一度コードに落としたくなってきた。次の日曜(25日)に、都内某所にてPEGの意見交換会があるので、興味のある人は声をかけてください。(俺以外)豪華メンバーが参加予定。


Twitterid:masa_edwに、Gauchevm.cのメインループでは、switchではなくGNU C拡張のラベル名を変数に格納してジャンプする機能を使っていることを教えてもらった。これなら命令の種類がどんだけあっても定数時間で処理をスイッチできる。