Debugging 可用的可执行二进制格式和模拟器有哪些?

Debugging 可用的可执行二进制格式和模拟器有哪些?,debugging,assembly,arm,emulation,Debugging,Assembly,Arm,Emulation,为了好玩,我正在为一种小型语言编写一个编译器,由于ARM指令集的易用性,我首先将它作为目标。目前,我能够编译代码,因此每个方法的主体都有ARM机器代码。在这一点上,我需要开始把一些事情联系起来: 我应该将我的机器代码保存到什么格式以便我可以 在什么调试器中运行它 目前没有I/O支持等,因此调试将主要取决于我分步完成反汇编和查看处理器寄存器/内存的能力 我运行的是Windows,我的编译器只在Windows中运行,所以最好在Windows上安装某种模拟器 编辑:看来我可以使用Visual St

为了好玩,我正在为一种小型语言编写一个编译器,由于ARM指令集的易用性,我首先将它作为目标。目前,我能够编译代码,因此每个方法的主体都有ARM机器代码。在这一点上,我需要开始把一些事情联系起来:

  • 我应该将我的机器代码保存到什么格式以便我可以
  • 在什么调试器中运行它
目前没有I/O支持等,因此调试将主要取决于我分步完成反汇编和查看处理器寄存器/内存的能力

我运行的是Windows,我的编译器只在Windows中运行,所以最好在Windows上安装某种模拟器


编辑:看来我可以使用Visual Studio Windows Mobile 6模拟器。现在,我可以简单地将结果保存在一个简单的二进制格式中,并通过一个小型C++控制台应用程序将其加载到模拟器内存中,然后用函数指针跳进该模拟器。稍后,我似乎需要支持ELF和PE格式。

关于文件格式。。。最简单的方法是:

这些格式可以记录二进制数据和要加载的数据的目标地址范围。就这样

包含更多信息的功能更强的格式:

    • 为了获得更多信息,请包含调试信息

ELF得到了相当广泛的支持,并且不太复杂。DWARF允许您记录非常有表现力的调试信息,以便调试复杂的语言结构。但是,要实现这种表达能力,它可能是一种非常复杂的写入格式。

如果与嵌入式软件相关,可能需要添加“嵌入式”标记。是的,您可以将PE与Windows Mobile一起使用。小“bin starter”是一个低成本的好主意,只是想建议一下,但为时已晚:)elf是您最终需要支持的最常用的工具。这很容易,但不像srec或intel hex那么容易。