[我研究]Qemu, a Fast and Portable Dynamic Translator
标题:Qemu, a Fast and Portable Dynamic Translator
作者:Fabrice Bellard(著名法国程序员)
下载链接:
http://wiki.qemu.org/Main_Page
概念陈述:
Target - 模拟的操作系统
Host - 实际运行的底层操作系统
工具定位:
Portable Dynamic Translator - 在一个OS上运行另一个OS,可以用来debug,因为运行的virtual machine可以很容易被停止,并且状态能够被监控、保存和载入;
能够runtime地将target的指令集翻译成host的指令集。
做到移植到一个新的host上,code generator要重写,相当于写一个新的C编译器一样的代码量。
Dynamic Translation的过程:
Step 1: Target CPU指令 => Code translator翻译成Micro Operation => 用C语言来写,然后GCC编译成Object文件 ( hand coded)
Step 2: 包含Micro Operation的Object作为输入,使用compile time tool - dyngen 来产生生成dynamic code generator
感觉就是用C编译器将产生的C语言代码编译成host上的机器语言;编译的过程是关键。
关于C语言的一些疑问:
1、extern关键字是什么用?
“extern是外部的意思,用来调用其他文件中定义过的变量”
这是在dynamic code generator中的代码,我原来理解的就是引用到之前定义过的micro operation Object,基本一致。
2、dyngen感觉是关键,所以这个dyngen到底是什么咚咚?
猜测:难道就是写一些枚举语句,让每一个micro operation作为输入时,都可以直接翻译成object,并且被串联起来,成为一个完整的程序。
如何得到源代码:
git clone git://git.qemu.org/qemu.git