Virtual Machineの本
もっと早く紹介しようと思ったのに、忙しすぎた。
例によってトラックバックは上手くいかないので、ひげぽんさんが拾ってくれることを期待。
Virtual Machinesお勧め。
全体としてはスタックベースのVMについて、浅く広く書かれています。所々にLispの文字が見えますが、Lisp用のアーキテクチャについてはあまり載っていません。
目次から
chap1 Introduction:ここでLispとかSECDマシーンが少し出てきます。
chap2 VMs for Prtability BCPL:BCPLという言語を使ってVMにどのような命令があるのかの説明。
chap3 The Java Virtual Machine:Java VMの説明 25ページほど
chap4 DIY VMs:ALEXという俺様VMの説明。仕様と問題提起
chap5 More Stack-Based VMs:オブジェクト指向言語、並列言語、など突っ込んだ話
chap6 Case Study:An Event-Driven Language:非ノイマン型のVMについて。プロセッサの制御をオブジェクトのキューで行うとか、マルチスタックとか。ルールベースで、各ルールにコードと命令のポインターを持つとか。さっぱり分からないけど、SmallTalkの文字列発見。
chap7 The Register-Transfer Model:レジスタベースのVMについて。Parrot キタ━━━━━━(゚∀゚)━━━━━━!!!!Parrotの構造についても5ページほど。あとは、俺様RTM VMの説明。
chap8 Implementation Techiques:スタック型と、レジスタマシーンの両方について書かれています。あまり濃い事は書いてません。
chap9 Open Issue:ブレインストーミング的な話題が21個。セキュリティ、分散VM、コードモーフィング、データベースとの統合等々。
具体的な高速化の為のテクニックは書いていないのですが、VMを設計する上で面白そうなトピックが上手くまとまっていると思います。英語も分かりやすいですし、面白そうな所だけ読むこともできます。本当はこの辺りでお勧めする予定だったのですが、気がついたら4月の終わりになってしまいました。
ちなみに同じような題名でも、Virtual Machines: Versatile Platforms for Systems and Processes はひげぽんさんが求めている情報とは違います。どちらかというと、エミュレータを作るためのトピックが多め。実機とVMのメモリマップをどうするかだとか、キャッシュやMMUをどうするかとか。
http://en.wikipedia.org/wiki/Parrot_(virtual_machine)が、アンサイクロペディアでもそのまま使えそうな記述で頭を抱える。 "one bytecode to rule them all,とか、サポート言語にアドベンチャーゲームのzorkが入っていたり。