【发布时间】:2010-11-25 11:59:33
【问题描述】:
我在谷歌上搜索,发现大量轻率的回答基本上是在嘲笑提问者提出这样的问题。
Microchip 免费提供了一些源代码(我不想在这里发布,以防万一。基本上,谷歌 AN937,点击第一个链接,有一个“源代码”链接,它是压缩的文件)。它在 ASM 中,当我看到它时,我开始对视。我想将其转换为类似于 c 类型语言的东西,以便我可以跟进。因为像这样的行:
GLOBAL _24_bit_sub
movf BARGB2,w
subwf AARGB2,f
可能很简单,但对我来说毫无意义。
那里可能有一些自动 ASM 到 C 的翻译器,但我能找到的只是人们说这是不可能的。坦率地说,它不可能是不可能的。两种语言都有结构,而且这种结构肯定可以翻译。
【问题讨论】:
-
坦率地说,请说明为什么它一定是可能的。
-
如果你想看懂代码,唯一的办法就是学习这个汇编语言。自动翻译会给你一些不可读的东西。也许比源代码更难读。如果此代码是手写的(未先编译),反编译器(如果存在)将无法帮助您。但是,如果您只想运行/移植代码,请查看我的帖子。
-
@Gerhard 已经有一个名为 Boomerang 的汇编语言到 C 编译器。一些汇编语言程序可以自动反编译成C,比如this one here。
-
@Anderson Green。回旋镖看起来很有趣。它确实对更复杂的代码有点窒息,并且对 Microchip 的组装没有帮助。 Boomerang 假定汇编器是编译器的输出,而不是人工编写的程序。 Boomerang 为您提供了一些可以使用的东西,但它不是端到端的解决方案。对于可用的结果,您仍将手动对其进行编辑。
-
C 和汇编都是图灵完备的。因此,它们可以表达相同的东西。 Q.E.D.
标签: c assembly embedded reverse-engineering microchip