基于ADSP―TS201的混合汇编优化方法

更新时间:2024-02-18 作者:用户投稿原创标记本站原创 点赞:8508 浏览:32659

1.引言

ADSP-TS201是ADI公司推出的新一代高性能浮点DSP,如何在有限的时间内采用编程语言进行进行算法实现并使程序效率尽量满足实时性要求是一项值得研究的问题.

目前在DSP平台上,编程多是混合使用汇编语言和C语言的,汇编语言简洁高效,能够直接操作DSP的内部寄存器、存储空间、外设,但可读性、可修改性、可移植性较差;而C语言是一种较为高效的高级语言,在可读性、可移植性方面优于汇编指令.因此有必要根据DSP的特性对C语言编写的程序进行进一步的优化,或者使用C和汇编的混合混编方法.

2.基于TS201的C/C++常用优化方法

(1)使用16位和8位数据类型.

(2)静态初始化常量.

(3)在内部循环中做尽量多的处理工作.

(4)循环中避免使用条件指令,条件指令会打断循环的流水,并且条件判决结论和编译器预先估计的不一样,就会有很长的等待开销.


(5)用移位来代替除法,除法需要调用函数,且代价也相当高,当除数是2的幂次时,编译器会使用执行速度更高的移位操作来代替除法.

3.C/C++和汇编混合编程方法

C/C++语言和汇编语言混合编程的具体方法有以下两种,这两种方法实现的关键都是要遵守ADSP-TS201 编译器C/C++运行时模型所做的规定.

3.1 在C/C++中嵌入汇编

在C/C++程序中嵌入汇编a()命令,直接写出汇编语句,不需要知道哪个寄存器或存储器包含C变量.其语法格式是:

a(模板

:限制语句(输出操作数)[,限制语句(输出操作数)]

:限制语句(输入操作数)[,限制语句(输入操作数)]

:选中寄存器);

模板:模板是包含“%数字”的汇编指令的一串字符,用来说明编译器在哪个位置替代操作数.操作数按从左到右的顺序被编号,编号的范围是%0,%1等%9.多个操作数用分号“;”隔开,整个语句包含在双引号“”里.

限制语句:限制语句是一个字符串,用来指示编译器对输出和输入操作数使用特定的寄存器组.“等于限制语句”里的“等于”说明操作数是输出,所有的输出操作数限制语句前必须加“等于”.

选中寄存器:选中寄存器用小写字母写,每个寄存器名都用双引号“”括起来,不同的寄存器中间用逗号“,”隔开,每个选中的寄存器都要出现在这里.

调用C子程序,使用的总时钟数和子程序时钟数分别是52872和520216.调用汇编子程序,使用的总时钟数和子程序时钟数分别是168537和160050.

4.结束语

本文介绍了基于ADSP-TS201平台的代码优化方法――C优化方法和混合汇编方法.由示例可以看出,这两种方法都可以提高程序运行效率.