CCS+中C语言程序调用线性汇编.doc

上传人:小** 文档编号:93317571 上传时间:2019-07-19 格式:DOC 页数:2 大小:30KB
返回 下载 相关 举报
CCS+中C语言程序调用线性汇编.doc_第1页
第1页 / 共2页
CCS+中C语言程序调用线性汇编.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《CCS+中C语言程序调用线性汇编.doc》由会员分享,可在线阅读,更多相关《CCS+中C语言程序调用线性汇编.doc(2页珍藏版)》请在金锄头文库上搜索。

1、CCS 中C语言程序调用线性汇编 在对DSP进行优化的时候,难免会用到线性汇编,今天找了一上午关于在C中调用线性汇编的程序,发现网上资料很少,这里自己做一个记录。 线性汇编类似于标准的汇编代码,不同的是,线性汇编代码中不需要给出标准汇编代码必须指出的所有信息,线性汇编代码会对这些信息进行选择,或者由汇编优化器确定,从而使得代码的编写较为容易。线性汇编代码不需要给出如下的信息。 (1)使用的寄存器,由优化器分配。 (2)指令是否并行运行,由优化器决定。 (3)指令使用的功能单元,由优化器选择。 (4)流水执行,由优化器确定。 (5)如果代码中没有指定这些信息,汇编优化器会根据代码的情况确定这些信

2、息。与其它的代码产生工具一样,有时需要对线性汇编代码进行修改直到性能满意为止。在修改的过程中,可能要对线性汇编添加更加详细的信息,如指出应该使用哪个功能单元。 线性汇编文件必须包含一些汇编优化器提供有关代码的其他信息。汇编优化器伪指令如下: (1)线性汇编文件的扩展名必须是.sa。 (2)线性汇编代码应该包括.cproc和“.endproc”命令。“.cproc” 和.endproc命令限定优化器优化代码段,“.cproc”放在这段代码的开始位置,“.endproc”放在这段代码的结尾。用这种方式可以设置需要优化的汇编代码段,如程序或函数等。 (3)线性汇编代码中可能包含“.reg”指令,该命

3、令允许使用将要存入寄存器的数值的描述字。当使用“.reg”命令时,汇编优化器为数值选择一个寄存器,这个寄存器与对该值进行操作的指令所选择的功能单元一致。 (4)线性汇编代码中可能包含.trip命令,该命令指出循环的迭代次数。下面是一个简单的例子,用线性汇编实现两个数的相加。main.c的代码:#include int add(short a, short b);int main()short a = 2, b = 3;short result; result = add(a, b); printf(result=%dn, result); return 0;add.sa 的代码:.global _add_add: .cproc a, b.reg cADD a, b, c.return c.endproc 需要注意的是在.global 前面一定要有空格或tab,否则编译时会报错(这个折磨了我很久。)。 另记录CCS中C语言调用汇编代码的参数传递规则:第1,3,5,7,9个参数通过A4, A6, A8, A10, A12寄存器传递第2,4,6,8,10个参数通过B4, B6, B8, B10, B12寄存器传递第10个以后的参数保存在堆栈中返回值保存在A4寄存器返回地址保存在B3寄存器

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号