2005-07-01から1ヶ月間の記事一覧
完了。ちまちまといきますよ。
結構早くなった。callgrind -> kcachegrindの定番技。まだまだいけるだろうけど、まぁとりあえずこの辺りでいいや。 ubuntu% time ./sscm test/fib.scm 832040 ./sscm test/fib.scm 2.63s user 0.00s system 97% cpu 2.698 total ubuntu% time ./sscm test/l…
ubuntu% cat test/loop.scm (define loop (lambda (i l) (if (< i l) (loop (+ 1 i) l) l))) (print (loop 0 8000)) ubuntu% time ./sscm test/loop.scm 8000 ./sscm test/loop.scm 2.49s user 0.01s system 98% cpu 2.532 total ubuntu% time uim-sh -B < t…
#scheme@irc.freenode.netで、処理系実装に参考になる書籍は無いっすか?と聞いてみたらこれが返ってきたので早速注文。
唐突にベンチマーク取ってみた。 ubuntu% cat test/fib.scm (define (fib n) (if (<= n 2) 1 (+ (fib (- n 1)) (fib (- n 2))))) (print (fib 30)) ubuntu% time ./sscm test/fib.scm 832040 ./sscm test/fib.scm 4.08s user 0.00s system 99% cpu 4.114 tot…
amazon:カッコウはコンピュータに卵を産むがブックオフで105円 * 2で売っていたので衝動買い&衝動読み。ほんとセキュリティに関して考えさせられる本です。GNU Emacsの脆弱性を突いていたというリアルな例が出て来て衝撃を受けた。
force, delayをSICP的に 実装。手抜きです、はい。次はport回りを整理かなぁ。その後はマクロ。
実装完了。Cで書くのだるぃ。
こんなの有るのか。行こう。
char, string系関数を実装。ただし、比較に関しては char=? と string=? しか実装していません。sigscheme/testディレクトリにchar.scmとstring.scmを作り、きちんとマルチバイト処理が出来てる事を試してみました。現在4500行。 char, string系関数 char?. …
「打倒SIOD」。これで行こう。gimpに載ったりしたら楽しいなぁ。
基本的な関数もSchemeで書きたくなってしまいますね。でも、やっぱりCプログラマの方が多いので組込み関数は全部Cで書くというポリシーで行きます。
ふむ。
apply実装。勉強の休憩にちまちまとコーディングするのって実は良いかもしれない。細かい部分をじわじわと埋められる。
vector実装。vector?, make-vector, vector, vector-length, vector-ref, vector-set!, vector->list, list->vector, vector->fill!、完了。
完了。すっきりすっきり。これで vector なんかも加えられるぞ。とりあえず今日はこの辺りで終了して英一の勉強しよう...
sigschemetype.hを変更。現状だと影響が全域に及びそうなのでかなり時間がかかりそう...
本日は相方とテスト勉強。気が重い...
Yamakenさんからアドバイスを頂きました。実に的を得た意見なので非常に参考になります。簡素化した状態で開発ってのはやっぱり経験値が高いなぁと思わされましたよ。しかしtagged pointerを使っている関係上、内部オブジェクトのアドレスの開始値が8の倍数…
これも参考に。
lua user's wikiより。なるほど、luaがそういう目的の言語だったか。ソースコード必読だな。ちなみにIncremental GCは現在開発版の5.1で実装中みたいっす。以下抜粋。 Incremental collectors: the problem of making the stock mark-and-sweep algorithm in…
なんかmuアンテナに流れていた。懐かしいなぁ。高二ぐらいの時にArt of Assembly ProgrammingのDOS版を四章まで読んだ。プログラミングを始めて大体一年ぐらいでCPU&ハードウェアがどう動いているかなんて全くしらなかったので、3. System Organizationに出…
8 byte alignedの場合は次の様にすればよいんじゃないかとどっかで見たのを思い出した。posix_memalignはなんだか怪しげなので... char *handler = (char*)malloc(sizeof(AnyStruct) * num + 7); char *ptr = (char*)((handler + 7) & ~7); ptrをごにょごにょ…
この辺りでとりあえず公開します。肉の日に出そうと思ってたんですけど、gcのバグが取れんかった。makeファイルもまだべた書きです。SIODとの違いとしては、tagged pointerを使っている点とR5RS互換(にしようとしている)点かな。後はincremental Mark&Sweep…