[我研究]Qemu, a Fast and Portable Dynamic Translator

本文详细介绍了QEMU(快速、便携式的动态翻译器),一个由著名法国程序员Fabrice Bellard开发的开源软件。QEMU允许在一台计算机上模拟运行另一台操作系统的虚拟机,特别适用于调试场景。文章阐述了QEMU的工作原理,包括目标系统(Target)与实际运行的底层操作系统(Host)之间的交互,以及动态翻译过程的两个关键步骤。此外,文章还提供了获取源代码的方法和对C语言中extern关键字的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题: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

转载于:https://www.cnblogs.com/wanzhiyuan/archive/2011/07/27/2118545.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值