Entries from 2007-10-01 to 1 month

Gauche の pair

Gauche の pair はヒープに確保されるが、メモリ効率を考えてか他のヒープオブジェクトと扱いが違うみたい。 確かに大量の cons セルが確保されるからこれはありかも。

itojunさんの「少年(?)は荒野を目指す」

97/10/06: boys be ambitious自分と重ねてぐっとくる。

id:lopnor と勝負

id:higeponの水泳と無理矢理競争してみる - id:lopnor二人の退職後のカーブに笑った。

横顔やばい

保険証来た

お金も振り込んだ。

itojun氏、逝去

itojun氏、逝去この間のOSC Tokyo Fallの会場で Mona のブースに来てくださって、ありがたいことにIPv6のせるときは呼んでくれと声をかけてくださいました。 本当に残念です。

今日のプールは午後から

生活パターンを変えてみて効率や体調に変化があるかを見てみよう。今までは朝一でプールに行き、コーディングという流れだった。 メリットは プールが空いていてストレスがたまらない プールで考え事をしてからコーディングに取り組める デメリットは コーデ…

S式の要素の実装方法を考える - Scheme VM を書く

経緯 C++ でVM を書きはじめたところ S式 を統一的に扱う仕組みの必要性を感じたので考える。 前実装の反省点 即値/定数オブジェクトをサポートしなかったので数値計算などが遅い。 処理系内部で使うデータ構造(例:リスト、ベクタ)などを STL 互換のもの…

うしっ

pair, vector, int, #f, #t, '() などを今回定義した方法で実装した。 マクロを使わず、型情報を保持した inline 関数でアクセサを書くように心がけたよ。 これで inline 展開されなかったら悲惨(w

VM を C++ で書くなら template を活用したいな

id:nyaxt さんが template 活用しまくりなのを聞いて考える。 VM を C++ で書くなら template を活用したい、ぱっと活用できそうな部分が浮かばない。 そういえば squirrel で template を使っているのを見たことあるような。 追記 spirit を嗜めとの天の声

中間コードをC言語用に変換 - Scheme VM を書く

コンパイラは Scheme で書いたものを当分使用し、VMの開発から始める。 1234 => コンパイル (constant 1234 (halt)) => C言語用に変換 SCM_CONS(SCM_MAKE_INT(VM::CONSTANT), SCM_CONS(SCM_MAKE_INT(1234), SCM_CONS(SCM_CONS(SCM_MAKE_INT(VM::HALT), SCM_N…

「ウェブ時代をこう生きてみたい」

5年後、10年後に Mona OS が一人でも多くの人に幸せをもたらしていることを目指して、ウェブで出会った仲間達と開発を継続して行きたい。 この文章を書いているときに考えたのだけど、ウェブの事を分かっている OS 開発者というのは本当に少ないだろうからそ…

MoinMoinの PageComment2のログのサイズ

レンタルサーバで MoinMoin が100MB以上の容量を使っていてので調べた。 data/pages/ の下に PageComment2 用のコメントデータディレクトリがあってそこの revision ディレクトリが脹れ上がっていた。 そのディレクトリを消して PageComment2 の使用をやめた…

プールプール

泳ぎながら考えていたら良いアイデアが! 今日は午後に用事があるので午前中が勝負。

migration の create table で options を渡す

InnoDB じゃなくて MyISAM にしたかったので options で指定した。 def self.up options = { :options => "ENGINE=MyISAM DEFAULT CHARSET=utf8" } create_table :hoge, options do |t| t.column :hige, :string あえてMyISAM にしたのは海よりも深い理由が…

名刺

名刺をゲット。 さて配り歩くか。

雑務をこなす

ChangeLogメモに放りこんでおいた ToDo をこなす PCデスクの掃除 振込み 写真の整理 メールを出す

何かを忘れていると思ったら

コードリーディングをやってなかった。 これはまずい。

Mac OS X Leopard

【特集】全解説 Mac OS X Leopard - 進化したAppleの新OSを探る Mac OS ユーザーであったことは一度もないのですが説明だけ読んでいるととても楽しそうだ。

もつ鍋

もつ鍋→ちゃんぽん→雑炊 うますぎる。

温泉的

明日。

デバッグの感想的

Music Player が落ちるところから初めて、結局犯人は Mona の共有メモリ API がスレッドセーフでなかったことだった。 しばらくバグの原因が全く分からず困ったが、最終的には CPU のデバッグ機能を使うことに気づく。 デバッグ機能をさくっと実装したら、あ…

Mona デバッグ用に syscall_set_watch_point を追加しました

これは実験的な機能です。近い将来変更が行われるでしょう。 これは何か? 任意のリニアアドレスにハードウェアブレークポイントを1つセットすることができます。 特定のリニアアドレスの実行/読み書きをトリガにして情報を取得します。 これを利用して例え…

Mona Music Player 変数書き換え犯人探し

おーう。親スレッドさんが eip=0xA002CF19 でメモリを書き換えているよ。 何の処理だろうか。 ===== debug fault start =========================================================== address=0xA0037844 value=0x900A3000 name=HAPPY.EX5 tid=77 eax=0x900…

Mona に簡易デバッグサポートを実装しよう

経緯 Music Player で変数が書き換わる謎現象が発生。 原因を探るためにCPUの提供するデバッグ機能を実装する。 方針 本格的なデバッグサポートではなく最小サポートにとどめる。 今回のバグを解決するための能力を備えていればよし。 実装する機能 まずは実…

スタックベースVMで継続 - Scheme VM のお勉強

Continuation の実装。 このあたりは以前死ぬほどやったので簡単。 (compile '(call/cc (lambda (c) 1)) '() ()) => (frame () (conti (argument (close (constant 1 (return 2)) (apply))))) conti 命令で closure を作る。 save-stack でまるごとスタック…

雑談 - Scheme VM のお勉強

いやしかし勉強すればするほど実マシンと仮想マシンで違いがないことが分かってくる。 あたりまえといえばあたりまえなのだけど不思議な感覚。 「あれ?これは仮想レジスタ?実レジスタ?まぁどっちでもいいや。」的な。 今のところ分かっている大きな違いは…

スタックベースVMの詳細 - Scheme VM のお勉強

手続き呼出し (compile '((lambda (a) a) 4) '() '()) => (frame () (constant 4 (argument (close (refer 0 0 (return 2)) (apply))))) 1.(frame (ret x)) は environment をスタックに push し、ret をスタックにプッシュする。 そして x を next expressi…

スタックベースVMの概要 - Scheme VM のお勉強

dynamic link => 呼出し側の call frame をポイントヒープベースで使われていた stack レジスタはスタック構造ではなく、ヒープ上に alloc されたリンクリストだった。 スタックベースでは本当にスタック構造が使われる。 VM のレジスタの違い accumulator /…

QEMUは kqemu を使わないとデバッグレジスタが使えない

QEMUは kqemu を使わないとデバッグレジスタが使えないっぽい。 Ubuntuに kqemu を入れた。 wget http://fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre11.tar.gz tar zvxf kqemu-1.3.0pre11.tar.gz cd kqemu-1.3.0pre11 ./configure make sudo make install …