gpt4 book ai didi

assembly - 是否有任何工具可以将 PIC 16F877A 的 ASM 转换为 C

转载 作者:行者123 更新时间:2023-12-02 19:22:16 25 4
gpt4 key购买 nike

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

最佳答案

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

关于assembly - 是否有任何工具可以将 PIC 16F877A 的 ASM 转换为 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2873310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com