DSPwilliam hill官网
直播中

冯峥

11年用户 55经验值
擅长:可编程逻辑,嵌入式技术,控制/MCU
私信 关注

【反编译】有没有什么办法把DSP的执行文件反编译成汇编

如标题所问。

得到一个电机控制方面的执行文件,想反编译出来学习学习。

已知DSP芯片具体型号。
已退回10积分

回帖(2)

何燕

2022-7-8 06:53:54
在DSP反汇编中,虽然C编译器的效率很高,使得我们可以使用C/C++完成大部分的反汇编编程工作,例如对运算的实时性要求不是特别高的算法工作,比如PWM产生、电机的控制等等;但是一些对实时性要求非常高的算法,例如FFT、IFFT、除法/正余弦/反正切(编译器调用多条语句实现对ROM中数学表的调用,例如除法用到了十几条跳转、赋值指令)等,仍然需要使用汇编语言才能实现最优的运行效率;对于一些特殊操作,例如某些bootloader、某些特殊寄存器的读取/赋值,特别是一些CPU寄存器的赋值,也需要使用汇编语言才能完成;例如在编程中我们对一些EALLOW保护的寄存器进行写操作时,也需要使用相关的EALLOW和EDIS来解除保护、完成赋值然后恢复保护,虽然在C编程时我们直接书写的是EALLOW和EDIS两条语句,但是追根溯源,它们的本体是在头文件中定义了的asm("EALLOW")和asm("EDIS")两条内嵌汇编语句。
此外,我们用C写的语句在从编译到生成二进制输出文件的整个过程中,必不可少地要经过从C到汇编的转换过程,所以了解汇编器的选项对我们理解程序的编译与运行过程也是非常重要的。下面就看一下汇编器的相关选项。
举报

何燕

2022-7-8 06:55:14
在DSP反汇编中,虽然C编译器的效率很高,使得我们可以使用C/C++完成大部分的反汇编编程工作,例如对运算的实时性要求不是特别高的算法工作,比如PWM产生、电机的控制等等;但是一些对实时性要求非常高的算法,例如FFT、IFFT、除法/正余弦/反正切(编译器调用多条语句实现对ROM中数学表的调用,例如除法用到了十几条跳转、赋值指令)等,仍然需要使用汇编语言才能实现最优的运行效率;对于一些特殊操作,例如某些bootloader、某些特殊寄存器的读取/赋值,特别是一些CPU寄存器的赋值,也需要使用汇编语言才能完成;例如在编程中我们对一些EALLOW保护的寄存器进行写操作时,也需要使用相关的EALLOW和EDIS来解除保护、完成赋值然后恢复保护,虽然在C编程时我们直接书写的是EALLOW和EDIS两条语句,但是追根溯源,它们的本体是在头文件中定义了的asm("EALLOW")和asm("EDIS")两条内嵌汇编语句。
此外,我们用C写的语句在从编译到生成二进制输出文件的整个过程中,必不可少地要经过从C到汇编的转换过程,所以了解汇编器的选项对我们理解程序的编译与运行过程也是非常重要的。下面就看一下汇编器的相关选项。
http://www.mcucd.com/dsb/56.html
举报

更多回帖

发帖
×
20
完善资料,
赚取积分