我想将 ASM 文件转换为 C 程序。有没有可用的工具。我的意图是将 PIC 16F877A 程序的汇编程序转换为 C 程序...
问问题
7643 次
1 回答
1
自动将汇编转换为 C 的工具是一种反编译器。x86 汇编语言有几个反编译器。虽然我没有使用它,但我听说交互式反汇编程序 IDA 具有反编译为 C 的选项,并且支持 Microchip PIC 汇编语言。
了解 PIC 汇编的人可以很好地手动将代码从 PIC 汇编移植到 C。第一步是将“.asm”文件的内容复制到“.c”文件并用“asm”关键字包装它. 使用SDCC语法,生成的文件类似于:
// the_program.c
__asm
; some assembler code
goto $0056
__endasm;
您应该能够编译该“.c”文件并使用“diff”来确认它编译为相同的可执行文件。人们有时可以将汇编程序的片段翻译成编译成相同可执行文件的 C 函数(使用“diff”进行比较)。下一步通常看起来像
// the_program.c
__asm
; some assembler code
__endasm;
int main(void){
for(;;){ // forever
__asm
; more assembler code
__endasm;
};
}
__asm
; yet more assembler code
goto $0056
__endasm;
从这里,您可以采取两条路径:
- 如果您想在这个预先存在的汇编应用程序中添加一些 C 代码,并在同一个16F877A 处理器上运行它,不要费心尝试翻译大块的汇编语言——将您的新代码粘贴到普通的 C 子例程中并调用它来自主 for() 循环。随着时间的推移,为了修复bug和添加特性,你可能会发现一次翻译几行从asm到C很方便,也许有一天它会完全转换为纯C。但没有理由这样做一下子搞定。
- 如果您想将此应用程序移植到一些完全不同的处理器上,最好将“.c”文件中的所有汇编语言注释掉,并添加一个简单的闪烁主循环程序。使用汇编语言作为一般指导,一次编写一个或两个 C 函数,每次添加后在新处理器上运行和测试程序,直到你有足够的功能。
于 2010-05-22T19:53:28.703 回答