Virtual machine 包含了 compiler, architecture. 說起來
這東西的概念很簡單, 就是想辦法讓一個平台的 application
在另一個平台跑. 反正就是做一些 code 的轉換就是了...
一開始的確有這樣的想法, 漸漸才發現, 他有很多細節
要處理, 比如說, register 的對應, 因為不同平台支援的
register 數不一定一樣多, 反正就做 spilling 就好了!!
但太慢的 virtual machine 可沒人要用, 除非不得已,
還是少做一些消耗 performance 的事. Virtual Machine
的書籍不太多, 修課的關係, 用了 VIRTUAL MACHINES:
VERSATILE PLATFORMS FOR SYSTEMS AND PROCESSES.
我一從第1章念到第4章, 共210幾頁. 字超多, 意思就是有很多細節,
主要就講interpreter 的技巧, 還有 mapping 的問題, 怎麼 optimization,
怎麼在 optimized 的 code 做 recover 的動作, 還有 dynamic binary
optimization 的好處. 還有一些傳統的問題像 code location, code
discovery, self-referencing code, self-modifying code, 不同的情況
下會產生不同的問題, 所以不能去記說他們都是問題.
有些不錯已有的VM 像是 valgrind, dynamoRIO, QEMU 等, 都可以
拿來玩玩看. 目前我是想到說可不可以把PS3, XBOX 的 game 轉成 PC 上
來玩,~~
