むとうです。
おおしまさま、詳細な解説ありがとうございます。
At Thu, 16 Mar 2006 10:13:48 -0800,
Yoshiki Ohshima <
[hidden email]> wrote:
> Squeak VMの成り立ちは、VMのほとんどの部分をSqueakで書いて、それを
> ANSI Cに変換して、それをコンパイルしています。マシンおよびOSに期待され
> ている部分は32ビットの演算ができることと32ビットアドレス空間が取れるこ
> とだけで、endianの違いなどはCのヘッダファイルに書かれたマクロで吸収し
> ています。つまり、VM記述のCへの変換そのものは完全に機種非依存です。
確かに、Squeak自体もSqueakで書かれているというのはあちこちで目にしてい
たはずなんですが、このレベルまで大丈夫なように記述されているのですね。
> というわけで、Cに変換したコードをコンパイルしてVMを作り、そのVMでイ
> メージが立ち上がるところまで行ったとすれば、それはVMのほとんどの箇所は
> 期待したとおりに動いている、ということになります。
とりあえず、このレベルの確認は毎回やっているので、少し安心しました。
> コードでテストできるのは、Pluginに入っているプリミティブがちゃんと呼
> べたかどうか、もし返り値などに意味があるなら正しい値が帰ってきたかどう
> か、というところまでかもしれません。これは、primitiveのバックアップコー
> ド(primitive呼び出しが失敗したときに自動的に実行されるコード)を適切に
> 書き換えてやることになるでしょうか。
Squeakで書かれたバックアップコードもあるので、primitiveとバックアップ
コードの両方がダメでないと顕在化しないのですね。
プラグイン回りのチェックの時には気を付けるようにします。
というか、
> Squeak 2.4のころも、Dan Ingallsがいつのまにかtext scanningのprimitive
> に渡す定義を変えたために、通常のtext scanningがみなfailしていた、とい
> うことがありました。バックアップコードが適切に書かれていたのでなかなか
> 誰も気にしていなかったのですが(遅い遅い機械でベンチマークを走らせてい
> た僕のような人が文句を言うまで)、やっぱり人間見落としはありますからね。
実際にあったんですね(^-^;)
> > VMにかかわっている方も多いと思いますので、教えていただければ幸いです。
> というわけで、あまり役に立てなくてすみません。上記のように、
> primitiveが失敗したかどうかを調べることには大いに意義があると思います。
ちょっと、コードの中のprimitiveがある回りを見てみます。
> 参考になれば幸いです。
ありがとうございました。
では。
--
武藤 武士@「あおによし」自宅より
E-mail:
[hidden email] URL:
http://610T.org/ ・水面の泡のように、フラフラ揺れたり、沈んだり浮かんだり
・「責任を持てないうちは責任のある地位にならないのが責任のある態度」