I';我正在尝试为ARM Cortex M3编写模拟器。如何读取二进制文件,然后对其进行解码?
我正在尝试为ARM Cortex M3编写模拟器。如何读取二进制文件,然后对其进行解码?我想使用二进制文件作为模拟器的资源。我用Atmel Studio创建了一个项目,并进行了编译。现在,我有一个.hex文件。我也可以用hex2bin将这个文件转换成二进制文件。之后,如何使用该二进制文件获取和解码指令?我正在使用C/C++开发Visual Studio。首先,需要指出的是,为处理器编写仿真器不是一件容易的任务,其他人已经在这方面花费了很多时间,您可以看一看示例。其中一个项目是目前使用Qemu模拟基于Cortex M3的电路板 中间步骤可能是使用已经理解/解码十六进制或bin文件的工具,并且是此类工具之一。有了它,您将可以反汇编许多elf文件并从中获取指令(然后您将不得不模拟;) 也就是说,如果您仍然真的想/需要进行仿真,并开始阅读和理解十六进制或二进制文件,那么首先要做的就是研究Intel十六进制文件格式(是的,即使ARM也使用此Intel格式;))。 您可以在中找到或I';我正在尝试为ARM Cortex M3编写模拟器。如何读取二进制文件,然后对其进行解码?,c,arm,emulation,simulator,hex-file,C,Arm,Emulation,Simulator,Hex File,我正在尝试为ARM Cortex M3编写模拟器。如何读取二进制文件,然后对其进行解码?我想使用二进制文件作为模拟器的资源。我用Atmel Studio创建了一个项目,并进行了编译。现在,我有一个.hex文件。我也可以用hex2bin将这个文件转换成二进制文件。之后,如何使用该二进制文件获取和解码指令?我正在使用C/C++开发Visual Studio。首先,需要指出的是,为处理器编写仿真器不是一件容易的任务,其他人已经在这方面花费了很多时间,您可以看一看示例。其中一个项目是目前使用Qemu模拟
玩得开心;)恐怕你必须从更容易的事情开始你的C/C++旅程。经过2-3年的积极编程,你们可以开始这个项目。顺便说一句,这个任务毫无意义。考虑到它是M3,我认为您需要找到中断向量表的位置,因为它应该有所有根函数的地址,比如启动代码或中断处理程序。我不确定表的位置是否标准化,因此您需要阅读设备/编译器手册才能找到答案。我自己已经不止一次这样做了,这实际上在许多方面都是一项很好的任务。但是如果您不知道如何使用fopen()、fread()、fclose(),那么您还没有准备好进行任何编程项目,更不用说这个项目了。有很多可能的文件格式,都有文档记录,只包括一个原始内存图像,选择一个或两个或三个,进行研究,制作或找到一个十六进制编辑器/转储程序(例如hextump),然后查看文件。读取arm文档虽然不是坏文档,但执行指令解码比读取二进制文件更困难。