欢迎来到天天文库
浏览记录
ID:62797708
大小:9.33 KB
页数:5页
时间:2021-05-28
《CCS中C语言程序调用线性汇编.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、CCS中c语言程序调用线性汇编公司内部编号:(GOOD・TMMT・MMUT・UUPTY・UUYY・DTTI・CCS中c语言程序调用线性汇编在对DSP进行优化的时候,难免会用到线性汇编,今天找了一上午关于在C中调用线性汇编的程序,发现网上资料很少,这里自己做一个记录。线性汇编类似于标准的汇编代码,不同的是,线性汇编代码中不需要给出标准汇编代码必须指出的所有信息,线性汇编代码会对这些信息进行选择,或者由汇编优化器确定,从而使得代码的编写较为容易。线性汇编代码不需要给出如下的信息。(1)使用的寄存器,由优化
2、器分配。(2)指令是否并行运行,由优化器决定。(3)指令使用的功能单元,由优化器选择。(4)流水执行,由优化器确定。(5)如果代码中没有指定这些信息,汇编优化器会根据代码的情况确定这些信息。与其它的代码产生工具一样,有时需要对线性汇编代码进行修改直到性能满意为止。在修改的过程中,可能要对线性汇编添加更加详细的信息,如指出应该使用哪个功能单元。线性汇编文件必须包含一些汇编优化器提供有关代码的其他信息。汇编优化器伪指令如下:(1)线性汇编文件的扩展名必须是〃.sa〃。(1)线性汇编代码应该包括cproc"
3、和".endproc”命令。".cproc”和".endproc"命令限定优化器优化代码段,".cproc”放在这段代码的开始位置,“.endproc”放在这段代码的结尾。用这种方式可以设置需要优化的汇编代码段,如程序或函数等。(2)线性汇编代码中可能包含“.reg”指令,该命令允许使用将要存入寄存器的数值的描述字。当使用“.reg”命令时,汇编优化器为数值选择一个寄存器,这个寄存器与对该值进行操作的指令所选择的功能单元一致。(3)线性汇编代码中可能包含〃.trip〃命令,该命令指出循环的迭代次数。下
4、面是一个简单的例子,用线性汇编实现两个数的相加。main,c的代码:ftincludeintadd(shorta,shortb);intmain(){shorta=2,b=3;shortresuIt;result=add(a,b);printf("result二%d",result);return0;add.sa的代码:・global_add_add:・cproca,b・regcADDa,b,c・returnc・endproc需要注意的是在.global前而一定要有空格或tab,
5、否则编译时会报错(这个折磨了我很久。。。)。另记录CCS中C语言调用汇编代码的参数传递规则:第1,3,5,7,9个参数通过A4,A6,A8,A10,A12寄存器传递第2,4,6,8,10个参数通过B4,B6,B&BIO,B12寄存器传递第10个以后的参数保存在堆栈中返回值保存在A4寄存器返回地址保存在B3寄存器
此文档下载收益归作者所有