【QEMU中文文档】1.2 仿真

本文由 AI 翻译(ChatGPT-4)完成,并由作者进行人工校对。如有任何问题或建议,欢迎联系我。联系方式:jelin-sh@outlook.com

原文:Emulation — QEMU documentation

QEMU 的 Tiny Code Generator(TCG)提供了在任何支持的主机平台上模拟多个 CPU 架构的能力。根据客户架构,支持系统仿真和用户模式仿真。

架构(qemu 名称)SystemUser备注
AlphaYesYesDEC 开发的传统 64 位 RISC ISA
Arm(arm,aarch64)YesYes功能广泛,请查看有关 A 型 CPU 架构支持的详细信息
AVRYesNo8 位微控制器,通常用于创客项目
CrisYesYesAXIS 开发的嵌入式 RISC 芯片
HexagonNoYes高通的 DSP 家族
PA-RISC(hppa)YesYes惠普旧小型计算机中使用的传统 RISC 系统
x86 (i386, x86_64)YesYes普遍存在的台式电脑 CPU 架构,32 位和 64 位。
LoongarchYesYes中国开发的类似 MIPS 的 64 位 RISC 架构
m68kYesYes摩托罗拉 68000 变种和 ColdFire
MicroblazeYesYes赛灵思基于 RISC 的软核
MIPS(mips*)YesYes受尊敬的 RISC 架构,最初源自斯坦福大学
OpenRISCYesYes由 OpenRISC 社区开发的开源 RISC 架构
Power(ppc,ppc64)YesYes由 IBM 管理的通用 RISC 架构
RISC-VYesYes由 RISC-V 国际维护的开放标准 RISC ISA
RXYesNo由瑞萨开发的 32 位微控制器
s390xYesYesIBM 的 System Z 主机中找到的 64 位 CPU
sh4YesYes由日立开发的 32 位 RISC 嵌入式 CPU
SPARC(sparc,sparc64)YesYes由 Sun Microsystems 最初开发的 RISC ISA
TricoreYesNo英飞凌开发的 32 位 RISC/uController/DSP
XtensaYesYes可配置的 32 位软核,现在由 Cadence 拥有

一些功能只有在模拟运行时才可用,包括记录/回放和 QEMU TCG 插件。

半主机

半主机是由架构所有者定义的一项功能,允许程序与调试主机系统进行交互。在真实硬件上,这通常由直接连接到板上的电路仿真器(ICE)提供。QEMU 的实现允许将半主机调用传递给主机系统或通过 gdbstub 。

通常,半主机使得在更完全功能的操作系统启用之前更容易启动低级代码。在 QEMU 上,它还允许嵌入式微控制器代码作为“裸机”代码在 QEMU 的用户模式仿真下运行,这些代码通常没有完整的 libc。它还用于编写测试用例,事实上,许多编译器套件以及 QEMU 本身使用半主机调用来退出测试代码并报告成功状态。

半主机仅在使用 TCG 仿真时可用。这是因为触发半主机调用的指令通常是保留的,导致大多数虚拟化监控程序对其进行陷阱和故障处理。

警告:半主机本质上绕过了可能存在的客户机和主机之间的任何隔离。结果,使用半主机的程序可能会破坏您的主机系统。一些半主机调用(例如 SYS_READC)可能会无限期地阻止执行。您应该只在启用半主机的情况下运行受信任的代码。

重定向

半主机调用可以通过 gdbstub 在调试期间重定向到(可能是远程的)gdb。半主机控制台的输出被配置为 chardev,因此可以像任何其他 chardev 设备一样重定向到文件、管道或套接字。

支持的目标

大多数目标提供类似的半主机实现,只是对定义适当指令以编码半主机调用和哪些寄存器保存参数进行了一些微小更改。它们倾向于提供一个简单的类似于 POSIX 的 API,允许程序读取和写入文件,访问控制台以及一些其他基本交互。

对于特定目标的 ABI 及其提供的调用集合的详细信息,您应该查阅该架构的半主机规范。

注意:QEMU 选择以 O_BINARY 模式实现所有文件访问。这样做的用户可见效果是,无论程序设置 QEMU 的文本/二进制模式如何,QEMU 始终会选择二进制模式,确保输入或输出不执行换行符转换。这是因为 gdb 半主机支持不区分模式,且自动处理换行符可能会令人困惑。

架构模式规范
Arm系统和用户模式Arm 半主机规范
m68k系统模式m68k 半主机规范
MIPS系统模式统一托管界面(MD01069)
RISC-V系统和用户模式RISC-V 半主机规范
Xtensa系统模式Tensilica ISS SIMCALL

© Copyright 2024, The QEMU Project Developers. This documentation is for QEMU version 9.0.50.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jelin大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值