Entries from 2007-10-27 to 1 day

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 …

QEMUのDR6のステップ実行パッチ

[qemu-discuss] [PATCH] target-i386: DR6 single step exception status bitkqemu を使えばデバッグレジスタはそのまま使えそうな雰囲気だよな。 逆に kqemu を有効にしないと使えない? 別件 再聊 CPUState、qemu 的 gdbserver何やら面白そうな事が書いて…

水泳

雨の日に水泳にいくのはほんの少しつらい。 いつもより水量の多い目黒川を見れたので良いか。 Everybody's flying and no one leaves the ground