dsp编程学习
2004年11月12日14:05:49
数据类型:
注意 c55的char为16bit,long long为40bit sizeof(char)==sizeof(int)==1
如何调试优化的代码
一般情况下release版会O3优化,会禁止原代码和机器码的对应。
如果加-g(full symbol),则编译器做尽可能的优化,但不是能有最高效率
如果加-gp则允许进行profile,且可以和O3联用,也许这个在profile时更好些。
如果不是防真,clock函数是更好的选择。
积存器使用和保护规则(C和汇编的接口)
见281的Table 6-2.
可以看出大部分都是调用者保护,记忆的方法是AR和T这类几乎是对半保留的,低部分的由调用者保留,高部分的由被调用者保留。例如调用者保护XAR[0..4],意味着,子程序可以随意改变这些值。所以调用者可以用XAR[0..4]传递参数.
这样减少了汇编程序中的很多保留过程,是鼓励子程序调用的措施吗?
积存器与参数的对应
按参数的类型分 1)数据指针 2)16bit数据 3)32bit数据
分别对应 1)XAR... 2)T.. ,AR.. 4)AC..
并行指令的利用
(1)Built-in
用::表达,如例如双MAC
(2)User-Define
条件指令
XCC,BCC,XCCPART的区别?
不方便的地方
ROR只能循环移1位,这怎么叫桶形移位呢
SFTL也只能用常量或者Tx做移位
CDP不能做dst,导致无法对CDP做算术运算
循环寻址只能和间接寻址一起使用,不能单独对ARx的算术运算进行circular寻地址
symbol
Smem,Xmem,Ymem,Cmem
instrcution:
1 btstclr
注意是#k4
2 bset
3 mov
4 amov
5 mpym
6 macm
注意parallel与repeat方式对mpy的code indensity&effecient
7 rpt
注意是 #k 是k+1次
8 call
很费周期4-10cycle
9 ret
2004年12月20日13:19:58
10 两个条件执行
XCC,XCCPART注意两个在流水线处理上的区别
11 Bit operation instruct.在加密计算,BIT流合并等应用中有用处
bit counting BCNT
bit extract BFXTR
bit expand BFXPA
address mode:
1 absolute :
identify by #
2 direct:
identify by @
1)DP
2)SP
3 indirect
identify by *xAR
xAR
dsp init process
C54CM,AR0LC...,stack(xsp,xssp,dual 16-bit fast return mode),