3impメモ

Schemeのコンパイラで効率のいいループの実現方法、そして3impとの決別

3impを参考に作っている自作のLispコンパイラで効率のいいループの実現方法を考えてたんだけど、どうもインチキ感が拭えない。と思っていたところ、4.7節「できそうな改善」の4.7.3項「末尾再帰最適化」に、方法は書いてないけど案としては書いてあった(ここの「末尾再帰最適化」というのは末尾呼び出し最適化でスタックを消費しない、というのとは違くて、再帰というところがポイントになっている。)

Read more »

Schemeでの効率のいいループの方法を考える

Schemeはご承知の通りループの構文がなくて、末尾再帰でループを実現する。

Read more »

Ruby on Railsを再び学ぶ

昔に勉強したけど、その後全然使ってないのでさっぱり忘れたのでまたやり直し。ちょっとまともなウェブアプリを作ってみたい。

Read more »

Xbyakで動的に生成するコードからCの関数を呼び出す

Xbyakを使ったJITの続き。前回と同様、gcc4.2.1 (x86-64)でのみ動作確認。

Read more »

TexturePackerを自作した

OpenGLなどでスプライトの描画をするとき、絵のパターンごとにテクスチャが分かれていると、スプライト1つ1つに対してテクスチャをセットして四角形を描画、次のテクスチャをセットして四角形を描画、というのを繰り返すことになる。しかしそのようなステート変更が増えると非常に負荷がかかる。そこでスプライトシートという方法を使う。

Read more »

mrubyでvoidpの値を扱うと死ぬ

mrubyにはCのデータポインタをmruby側に持ち込む方法としてDATA型とVOIDP型というものがある。公式のドキュメントがないのでなんともわからないけどソースや動作から推測すると、DATA型はポインタの所有権を持つ型で、VOIDPは持たない型になる。

Read more »

mrubyでエラー発生時にバックトレースを表示する

mrubyのスクリプト内でエラーが起きたときにエラーの起きた行番号が表示されなくて不便だなーと思っていたのだけど、出し方がわかったのでメモ。

Read more »