是否可以将AVR汇编程序代码转换为用C语言编写的原始代码?
如果是,使用的软件名称是什么
这个任务是人工智能完成的。这基本上是逆向工程的要点:给定一些反汇编代码,理解它的作用,并可能用高级编程语言表示它。有一些工具试图将这个过程自动化,但通常这并不容易,有时甚至是不可能的。
所以你最好的办法是阅读程序集,理解它是做什么的,然后手工编写等效的C代码。如果你不是一个有经验的逆向工程师,这可不容易。
将AVR十六进制二进制文件反编译为C语言的工作选项之一是Ghidra。但你可能会发现结果有点悲伤:(
这个代码:int n=5;
int main(void) {
if(n>=10) {
n=15;
}
else {
n=20;
}
}
将被反编译成以下代码:
int FUN_code_004f(void)
{
int iVar1;
W = CONCAT11(DAT_mem_0101,DAT_mem_0100);
iVar1 = W;
W = W + -10;
if ((bool)(W < 0 ^ SBORROW2(iVar1,10))) {
W._0_1_ = 0x14;
}
else {
W._0_1_ = 0xf;
}
R1 = 0;
W = 0;
DAT_mem_0100 = (undefined)W;
DAT_mem_0101 = 0;
return W;
}