是否有任何工具可用于将PIC 16F877A的ASM转换为C.

时间:2010-05-20 11:44:42

标签: assembly embedded microcontroller pic

我想将ASM文件转换为C程序。有没有可用的工具。 我的目的是将PIC 16F877A程序的汇编程序转换为C程序......

1 个答案:

答案 0 :(得分: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子程序中,并从main for()循环中调用它。随着时间的推移,为了修复错误并添加功能,您可能会发现从asm到C一次转换几行很方便,也许有一天它会完全转换为纯C.但是没有理由这样做一下子就这一切。
  • 如果要将此应用程序移植到一些完全不同的处理器,最好在“.c”文件中注释所有汇编语言,并添加一个简单的blinky-light主循环程序。使用汇编语言作为一般指导,一次编写一个或两个C函数,每次添加后在新处理器上运行和测试程序,直到您有足够的功能。