QEMU是否适合在ARM和PowerPC的汇编程序中学习编程?

Goo*_*ofy 5 linux assembly arm qemu powerpc

我想学习PowerPC和ARM的汇编程序编程,但我无法为此目的购买真正的硬件.我正在考虑使用QEMU.但是我不确定它是否能很好地模拟这两种体系结构,我将在本机汇编程序中编译和运行我的程序吗?

Tho*_*nin 8

QEMU适用于测试程序校正(即代码是否能在实际的ARM或PowerPC上正常运行),但它不利于测试程序效率:仿真不是周期精确的,而且使用QEMU测量的速度不能可靠(甚至不均匀)不可靠地)与真实硬件的速度相关.

此外,QEMU不会捕获未对齐的内存访问,这对于PowerPC仿真来说不是问题(PowerPC容忍未对齐的访问),但可能适用于ARM(未对齐访问,例如从一个地址读取RAM中的32位字) 4的倍数,可以与QEMU一起使用,但会在真正的ARM处理器上触发异常).

除了这些要点之外,QEMU适合在ARM或MIPS上进行装配开发(还没有尝试过PowerPC,因为我在eBay上找到了旧的iBook;但是我已经用QEMU完成了ARM和MIPS组装,然后运行了生成的代码真正的硬件,这工作).您可以模拟整个系统并在其中运行Debian(在这种情况下,编译器,链接器,文本编辑器......也将在仿真中运行),或者使用运行ARM/MIPS可执行文件的"用户模式仿真"直接使用包装器将系统调用转换为主机PC的调用(假设主机是运行Linux的PC).后者更方便(您可以访问普通的主目录,编程工具是原生的......)但需要安装交叉开发工具.请参阅buildroot(并链接到-static,这将避免许多令人头疼的事情).

  • "例如,从一个不是4的倍数的地址读取RAM中的32位字,可以在QEMU中正常工作,但会在真正的ARM处理器上触发异常." 实际上,在某些ARM指令集版本中,使用未对齐的地址会旋转内容,但在ARMv6及更高版本中,支持普通的未对齐访问(这是可配置的).http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472c/BABFDBCJ.html (2认同)