QEMU CPU仿真原理

在QEMU中,操作系统可以在软件仿真CPU上运行。 如何可以通过软件模拟CPU? 我想知道细节。

如果CPU被软件模拟,寄存器是否与主机系统内存一起被模拟? 说有ARM汇编代码

LDRB r0,[r1],#1

这怎么能在x86环境下模拟? 我的猜测是仿真软件保持r0(4byte),r1(4byte)的内存映射空间,然后更新相应内存位置的寄存器值…我错了吗? 我想要详细的解释…

先谢谢你

Solutions Collecting From Web of "QEMU CPU仿真原理"

请参阅此文件以了解QEMU完成的ARM CPU状态的C级建模。

这是非常直接的,当然,因为你怀疑寄存器(和所有其他状态)被建模为C变量。

核心结构开始:

typedef struct CPUARMState { /* Regs for current mode. */ uint32_t regs[16]; /* Frequently accessed CPSR bits are stored separately for efficiency. This contains all the other bits. Use cpsr_{read,write} to access the whole CPSR. */ uint32_t uncached_cpsr; uint32_t spsr;