DSP编程技巧之10-揭开编译器神秘面纱之汇编器选项
时间:06-20 16:17 阅读:1366次
*温馨提示:点击图片可以放大观看高清大图
简介:在DSP的编程中,虽然C编译器的效率很高,使得我们可以使用C/C++完成大部分的编程工作,例如对运算的实时性要求不是特别高的算法工作,比如PWM产生、电机的控制等等;但是一些对实时性要求非常高的算法,例如FFT、IFFT、除法/正余弦/反正切(编译器调用多条语句实现对ROM中数学表的调用,例如除法用到了十几条跳转、赋值指令)等,仍然需要使用汇编语言才能实现最优的运行效率。
在DSP的编程中,虽然C编译器的效率很高,使得我们可以使用C/C++完成大部分的编程工作,例如对运算的实时性要求不是特别高的算法工作,比如PWM产生、电机的控制等等;但是一些对实时性要求非常高的算法,例如FFT、IFFT、除法/正余弦/反正切(编译器调用多条语句实现对ROM中数学表的调用,例如除法用到了十几条跳转、赋值指令)等,仍然需要使用汇编语言才能实现最优的运行效率;对于一些特殊操作,例如某些bootloader、某些特殊寄存器的读取/赋值,特别是一些CPU寄存器的赋值,也需要使用汇编语言才能完成;例如在编程中我们对一些EALLOW保护的寄存器进行写操作时,也需要使用相关的EALLOW和EDIS来解除保护、完成赋值然后恢复保护,虽然在C编程时我们直接书写的是EALLOW和EDIS两条语句,但是追根溯源,它们的本体是在头文件中定义了的asm("EALLOW")和asm("EDIS")两条内嵌汇编语句。此外,我们用C写的语句在从编译到生成二进制输出文件的整个过程中,必不可少地要经过从C到汇编的转换过程,所以了解汇编器的选项对我们理解程序的编译与运行过程也是非常重要的。下面就看一下汇编器的相关选项。
如果想更好地理解汇编相关的选项并更高效地使用汇编语言编程的话,可以再去参考一下汇编工具指南《TMS320C28x Assembly Language Tools User's Guide》和汇编指令指南《TMS320C28x CPU and Instruction Set Reference Guide》;当然痛苦的是这些资料都没有汉语的啊。