[我研究]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
posted @ 2011-07-27 16:20  shengying  阅读(601)  评论(0编辑  收藏  举报