Entries from 2007-12-01 to 1 month
Bignum の実装が一段落した。 やっとプロファイラを動かしてコンパイラの実効速度が著しく遅い件を調べることができる。 事実 Wiki のコンパイルに 0.4 sec。 Wiki の実行に 0.6 sec。 Wiki の実行の 2/3 はコンパイル。 VM on Gauche が VM on C++ よりも速…
次はコンパイル時の最適化かな。 代表的で効果のありそうな最適化を実装したい。 特に let/named let/letrec/let* などあらゆるところで使われる lambda 式の最適化が必要だ。 Three Imp にヒントだけ書いてあったような気がする。 あとは Gauche の compile…
VM の構造を変えない限りはアルゴリズム的に改善する余地はあまりない。 そこで C++ 実装面での最適化を行う。 Wiki のコードのコンパイルにかかる時間を基準に計測しつつ最適化。 対応 sec 元の状態 0.650 -fomit-frame-pointerをつける 0.400 always inlin…
村上春樹のパン屋再襲撃を公園のベンチで読む。 遅れてきた紅葉が美しい。 短編集。 「ファミリー・アフェア」という話が気に入った。 同居している兄妹が、妹の婚約とその婚約者の登場で関係を変化させるという話。 自分には妹がいないので説得力がないが、…
今日は調子が良く実装ががっつり進んだ。 こんなことが出来るようになりました。 (display (* 12345689123456789123456789 123456789)) => 1524159137174199765432099750190521 明日には終わりそう。 todo [ok]absolute な add/sub を実装 [ok]符号を加味し…
今日は珍しくいつも起きないような早い(相対的に)時間に目が覚めた。 ここ1週間毎日のように目覚しをかけず、10時間以上コンスタントに寝た。 おかげで体調が素晴らしく良かったのだけどそれの影響だと思う。開店と同時に近い形でスタバに行き、集中力を保…
gdb用のexceptionHandler()を実装。 Guache Readingの補助ツールを書いた。(Scheme版 www-mechanizeが欲しいね。) 新しくおいしいパン屋を発見。以前つぶれたパン屋と同じ場所。(オーブン/窯つき物件?) Bignumは libtommathを使ったらとアドバイスをもらう
Bignum を実装中。 実装は Gauche の実装のほぼそのままなのだけど、理解しながらゆっくり移植(or 最実装)していて大変勉強になる。 足し算、 引き算、比較などは想像通りの実現方法。 かけ算が面白い。 小学校で習った、筆算のかけ算のそのままなんですよ…
GDBスタブのexceptionHandlerを調べているはずが、やる夫の小説家スレ読んでた。。
人にすすめられて、世界の日本人ジョーク集を読んだ。 毛色の違う本を読むのもいいね。 日本は世界からどう見えているのか?という視点で様々なジョークが紹介されていて面白いです。 経済大国や独創性の国と良くとらえたものもあれば、アジア諸国との比較で…
以前と call/cc の実装方法が違うのでコンストラクタデストラクタが2回走ることはほぼない。 つまり STL 使える。 気づくの遅い。。
The LispOS Archives 「different alternatives for lispOS」と題する thread には Scheme が出てきたり、最低限のLinux を使ってGCを載せてLisp or Scheme にしようなんて話が。 Layer a scheme distribution on top of a minimal Linux distribution. Stri…
デジイチデビュー、一年後 - bkブログ 日中シンクロ PLフィルタ ミニ三脚 シャッター速度 僕もカメラ買ってから外に出かける機会が多くなったなあ。
最近 Gaim で入力を受け付けなかったり、CPU100%で固まったりするんですがなぜだろう。 apt 上は最新なのだけども。 追記 id:YasuyukiMiura さんから情報がありがとうございます。 プロジェクト名が Gaim から Pidgin(http://www.pidgin.im/) という名称に変…
dynamic cast が使えない環境で Scheme VM の内部オブジェクト(Integer, UCS4Char,String, Regexp,Pair)を C++ のテンプレートを駆使してうまく(パフォーマンス良く、安全に)構築できないか考えたが思い浮かばない。 関数テンプレートもクラステンプレー…
profiler の結果の整数が overflow した。 まさかこんな理由で Bignum が必要になるとは。 EoPLにBignum実装があった記憶がある。
VM 側に profiler っぽいものを仕込み、Gauche で整形ツールを書いたが、VMの構造上正確に計測するのが難しいことが分かった。 手続き名と、手続きの最後まで実行されたという目印を見つけるのが難しいのだ。 3時間くらいかけたことを捨てなくてはいけないが…
knolにMonaのページを作りたい。一番詳しく書くよ。
前職を辞めてから最初にやりたかったことは、コードを思いっきり書くこと、プールで泳ぎまくること。 これらが叶った後にやってきたのは本を読むことだった。 自分の人生に何がぷかぷかと浮いてくるかを知れた。 最近はしばらくたまっていた、森博嗣の未読を…
compiler.scmc (コンパイル済みコード)を VM で eval する。 evaluteFile("./compiler.scmc"); compiler.scmc 中で定義された compile 手続きを C++ コード中から呼び出しコンパイル時に使う。 おお!動いた。 コンパイラは Scheme で書くという大きなメリ…
実装に向けて勉強中。 add の桁あふれを portable に書く方法とか。 この方面は初めてで刺激的だな。 明日は忙しいので実装は明後日かな。
こういうのってどうしているんだろうな。 その1 Cのテクニックで構造体の最後のメンバを ポインタ or 配列 にして、それを経由して配列のサイズ以上にアクセスするってやつがあるじゃないですか。 固定長ヘッダを持つ、可変長のデータ構造とか(他にもあるけ…
言語処理系を作っている人と実装の雑談がしたいよ。 どこまでコンパイル時に展開されるようにしているか 最適化どこまでがんばっているの? 内部エンコーディングの話とか プロファイリングとか
ひたすらテストが通るようにがんばるぜよ。 正規表現リテラルの出力がおかしい。#が抜けている => ok 文字列ライブラリが GC 前提なのにマクロを定義していなくて delete[] されてた (string-split "12\n34\n56" #\newline) のコンパイルがおかしい 文字列の…
妻との会話。 ひげ「腹筋割りたいんだよね。どうにかならいかな。ジム通う?」 妻「自衛隊に入ったら?絶対腹筋割れるよ。」 ひげ「えー。でもさあ。訓練で亡くなったりする人も年間何人かいるんじゃない?」 妻「そんなこといったらIT業界で過労死する人だ…
Reddit で見つけたネタ。 programming: First Class Functions in C int main() { returns_int_f *times2 = returns_int_lambda("int f(x) { return x * 2; }"); int answer = (*times2)(55); printf("answer is %d\n", answer); } C言語で lambda 式が作れ…
5〜6年前に Mona を始めたころ doxygen を使っていました。 最近の流行りは何でしょうか?まだ doxygen は使われています?勢力伸びてます? 教えて詳しい人!
kaz さんに教えてもらった方法で QEMU の COM1/COM2 に対する read/write が動きました。 Uart* com2 = new Uart(Uart::COM2); g_console->printf("read=%c", com2->readChar()); こう使います。うっし!
「退屈を人に押しつけたり」。 BONNIE PINK の歌にこのような歌詞があった。 いいね。
(HALT) の const compile がうまくいっていない => ok #t\0 と出力がおかしい => ok UCS-4 文字列長の扱いが間違っていた コンパイル結果から (CONSTANT () が消えてしまう 正しく read できているか? => できてない read.cpp で #define SCM_SYM_QUOTE Sym…