我正在尝试为 ARM Cortex M3 编写模拟器。如何读取二进制文件然后对其进行解码?

I'm trying to write emulator for ARM Cortex M3. How can I read the binary file then decode it?

我正在尝试为 ARM Cortex M3 编写模拟器。如何读取二进制文件然后对其进行解码?我想使用二进制文件作为我的模拟器的资源。我用 Atmel Studio 创建了一个项目并编译了它。现在,我有一个 .hex 文件。我还可以使用 hex2bin 将此文件转换为二进制文件。之后,如何使用该二进制文件来获取和解码指令?我正在使用 C/C++ 开发 Visual Studio。

首先需要说明的是,为处理器编写仿真器并不是一件容易的事,其他人已经花了不少时间在这上面,你可以看看QEmu for example. One project is currenlty using Qemu to emulate a Cortex M3 based board, the ZephyrProject

一个中间步骤,可能是使用已经 understand/decode hex 或 bin 文件的工具,Radare 就是其中一种工具。有了它,您将能够反汇编许多 elf 文件并从中获取指令(然后您必须模拟 ;))。

也就是说,如果你真的want/need做仿真,并开始阅读和理解十六进制或二进制文件,那么首先要做的就是研究英特尔十六进制文件格式(是的,甚至 ARM 也在使用这种 Intel 格式 ;))。 你可以找到 the official specification here or in the technical support website of ARM.

玩得开心;)