在QEMU中,操作系统可以在软件仿真CPU上运行。如何能被软件模仿的CPU?,我想知道细节。
如果CPU被软件模拟,寄存器是否用主机系统内存?进行仿真?
假设有ARM装配代码
LDRB r0, [r1], #1如何在x86环境中进行模拟?
我的猜测是,仿真软件保留了r0 (4字节)、r1 (4字节)的内存映射空间,然后更新相应内存位置的寄存器值。我说错了吗?
发布于 2013-01-02 16:32:08
有关由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;https://stackoverflow.com/questions/14125524
复制相似问题