我从PIC16F88中提取了一个.hex文件。例如:

:020000040000FA
:100000008F3083160F0570388F009B0183129F017C
:1000100083169F0107309C0005108312051483127C
:1000200003131730A0006730A1002930A2000A1284
:100030008A11A20B17280A128A11A10B15280A127D
:100040008A11A00B13280510831203131730A00088
:100050006730A1002930A2000A128A11A20B2C28B5
:100060000A128A11A10B2A280A128A11A00B282829
:020070000D2859
:02400E00782F09
:02401000FF3F70
:00000001FF


在MPLAB中,我导入了此.hex文件并找到了反汇编代码,在这种情况下: />
现在我想知道用什么编译器编译此代码。我怎样才能做到这一点?我正在寻找检查什么编译器编写了一些ASM代码的一般方法。列出的代码仅是示例。

评论

极好的问题,要恢复您指定的二进制代码的工具链起源,至少需要比较各种PIC编译器的结果,我不知道PIC汇编,但是最后两条指令对于识别编译器很有趣(已提供您的反汇编程序对0x38处的信息有误解,怎么可能调用该指令?)。一些编译器会生成一些函数的序言,这些函数的目的是在以后进行N次快速修补时也可以免费使用。祝你好运!

您可能还认为这可能根本不是经过编译的代码。而是被编写为asm。

@zv_我认为您的评论应该是答案。我认为问题不应该集中在特定样本上,您的技术应该足够通用才能接受。

我认为这个问题应该改写,并且应该侧重于一般的PIC编译器检测,而不仅仅是您的样本。可以将您的代码用作“例如”,但您应该重新措辞,以便您可以接受描述该技术的答案,而不仅仅是“ general-pic-compiler-1”的答案

@amccormack我同意zv_的评论可以作为答案。我还编辑了问题。

#1 楼

(从注释转换为答案)。

至少要恢复您指定的二进制代码的工具链起源,需要比较各种PIC编译器的结果,我不知道PIC汇编,但是最后两条指令对于识别编译器来说很有趣(假设您的反汇编程序对0x38的信息有误解,怎么可能调用该指令?)。

一些编译器会生成函数的序言,以供日后快速n-dirty修补时使用,也可以作为赠品。祝你好运!