Entries from 2007-10-01 to 1 month
Gauche の pair はヒープに確保されるが、メモリ効率を考えてか他のヒープオブジェクトと扱いが違うみたい。 確かに大量の cons セルが確保されるからこれはありかも。
97/10/06: boys be ambitious自分と重ねてぐっとくる。
id:higeponの水泳と無理矢理競争してみる - id:lopnor二人の退職後のカーブに笑った。
お金も振り込んだ。
itojun氏、逝去この間のOSC Tokyo Fallの会場で Mona のブースに来てくださって、ありがたいことにIPv6のせるときは呼んでくれと声をかけてくださいました。 本当に残念です。
生活パターンを変えてみて効率や体調に変化があるかを見てみよう。今までは朝一でプールに行き、コーディングという流れだった。 メリットは プールが空いていてストレスがたまらない プールで考え事をしてからコーディングに取り組める デメリットは コーデ…
経緯 C++ でVM を書きはじめたところ S式 を統一的に扱う仕組みの必要性を感じたので考える。 前実装の反省点 即値/定数オブジェクトをサポートしなかったので数値計算などが遅い。 処理系内部で使うデータ構造(例:リスト、ベクタ)などを STL 互換のもの…
pair, vector, int, #f, #t, '() などを今回定義した方法で実装した。 マクロを使わず、型情報を保持した inline 関数でアクセサを書くように心がけたよ。 これで inline 展開されなかったら悲惨(w
id:nyaxt さんが template 活用しまくりなのを聞いて考える。 VM を C++ で書くなら template を活用したい、ぱっと活用できそうな部分が浮かばない。 そういえば squirrel で template を使っているのを見たことあるような。 追記 spirit を嗜めとの天の声
コンパイラは 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 が100MB以上の容量を使っていてので調べた。 data/pages/ の下に PageComment2 用のコメントデータディレクトリがあってそこの revision ディレクトリが脹れ上がっていた。 そのディレクトリを消して PageComment2 の使用をやめた…
泳ぎながら考えていたら良いアイデアが! 今日は午後に用事があるので午前中が勝負。
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 - 進化したAppleの新OSを探る Mac OS ユーザーであったことは一度もないのですが説明だけ読んでいるととても楽しそうだ。
もつ鍋→ちゃんぽん→雑炊 うますぎる。
明日。
Music Player が落ちるところから初めて、結局犯人は Mona の共有メモリ API がスレッドセーフでなかったことだった。 しばらくバグの原因が全く分からず困ったが、最終的には CPU のデバッグ機能を使うことに気づく。 デバッグ機能をさくっと実装したら、あ…
これは実験的な機能です。近い将来変更が行われるでしょう。 これは何か? 任意のリニアアドレスにハードウェアブレークポイントを1つセットすることができます。 特定のリニアアドレスの実行/読み書きをトリガにして情報を取得します。 これを利用して例え…
おーう。親スレッドさんが eip=0xA002CF19 でメモリを書き換えているよ。 何の処理だろうか。 ===== debug fault start =========================================================== address=0xA0037844 value=0x900A3000 name=HAPPY.EX5 tid=77 eax=0x900…
経緯 Music Player で変数が書き換わる謎現象が発生。 原因を探るためにCPUの提供するデバッグ機能を実装する。 方針 本格的なデバッグサポートではなく最小サポートにとどめる。 今回のバグを解決するための能力を備えていればよし。 実装する機能 まずは実…
Continuation の実装。 このあたりは以前死ぬほどやったので簡単。 (compile '(call/cc (lambda (c) 1)) '() ()) => (frame () (conti (argument (close (constant 1 (return 2)) (apply))))) conti 命令で closure を作る。 save-stack でまるごとスタック…
いやしかし勉強すればするほど実マシンと仮想マシンで違いがないことが分かってくる。 あたりまえといえばあたりまえなのだけど不思議な感覚。 「あれ?これは仮想レジスタ?実レジスタ?まぁどっちでもいいや。」的な。 今のところ分かっている大きな違いは…
手続き呼出し (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…
dynamic link => 呼出し側の call frame をポイントヒープベースで使われていた stack レジスタはスタック構造ではなく、ヒープ上に alloc されたリンクリストだった。 スタックベースでは本当にスタック構造が使われる。 VM のレジスタの違い accumulator /…
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 …