10

在 QEMU 中,操作系统可以在软件模拟 CPU 之上运行。 CPU怎么能被软件模拟? 我想知道细节。

如果 CPU 由软件模拟,寄存器是否与主机系统内存模拟?

假设有ARM汇编代码

LDRB r0, [r1], #1

如何在 x86 环境中进行模拟?

我的猜测是模拟软件将内存映射空间保留为r0(4字节),r1(4字节),然后更新相应内存位置的寄存器值......我错了吗?

4

1 回答 1

13

请参阅此文件,了解由 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;
于 2013-01-02T16:32:08.620 回答