|
7#
楼主 |
发表于 2013-11-25 21:32:16
|
只看该作者
本帖最后由 zhangshuoshi 于 2013-11-25 21:35 编辑
不是我不说是因为太复杂,汇编程序优化 DSP的种类繁多.各类DSP都有其自身的硬件特点,而对DSP汇编程序进行优化的过程就是根据程序自身特点充分利用DSP硬件资源的过程。因此,具体到不同的器件.其优化方式也不尽相同。目前比较流行的大多数DSF,都支持程序并行和软件流水,从这二方面出发,概括归纳出对汇编程序进行优化的一般方法。希望能够在对不同DSP汇编程序优化的过程中提供一些思考方式上的切人点。为了易于说明,我给同仁们提供了一些实例,这些例子均是用AD公司TSl01系列电路的汇编语言编写的。实例1:
lcO=xr0;;
_Picture_Segment_Outter_Loop:
lcl=xrl::
_Picture_Segment_Inner_Loop:
xr3=[j4+=l];;
/*像素灰度值与阈值比较,大于或等于阈值的
令其等于阈值,小于闽值的置为零*/
xcomp(r3,r2);;
tf xalt;d0,xr3:0;;
if nxalt;d0,xr3=xr2;;
/*存储处理结果生成新数字信号*/
[j5+=1]=xr3;;
*内循环结束*/
_Picture__Segment_Inner_Lcop_End:
if nlcle,jump_Picture_Segment_Inner_Loop(p);;
/*外循环结束*/
_Picture_Segment_Outter_L,cop_End:
if nlcOe,jump_Picture_Segment_Outter_Loop(p);;
实例2:
lcO=xrO;;
/*将循环数减半*/
xrl=lshift r0 by—l;;
_Picture Segment_Outter_Loop:
1cl=xrl::
_Picture Segment Inner Loop
xr3=[j4+=1];;
/*像素灰度值与阚值比较,大于或等于阈
值的令其等于阈值.小于阈值的置为零*/
xcomp(r3,r2);;
if xah;do,xr3=0;;
if nxah;do,xr3=xr2;;
/ *存储处理结果生成新数字信号*/
[j5+=l]=xr3;;
/*循环扩展部分*/
xr4=[j4+:1];;
xeomp(r4,r2);;
if xah;do,xr4=0;;
ifnxah;do,xr4=xr2;;
[j5+=1]=xr4;;
内循环结束*/
_Pieture_Segment_Inner_Loop_End:
if nlele,jump_Picture_Segment Inner Loop(p);;
外循环结束*/
_Picture_segment_Outter_Loop_End:
if nleoe,jump_Pieture_Segment_Outter_Loop(p);;
实例3:
lcO=xr0;;
xrl=lshifi r0 by一1;;_
_Picture_Segment_Outter_Loop:
lcl=xrl;;
_Picture_Segment_Inner_Loop:
xr3=[j4+=l];;
xeomp(r3,r2);xr4=[j4+=1];;(1)
ifxalt;do,xr3=0;;
if nxalt;do,xr3=xr2;;
[j5+=l]=xr3;xcomp(r4,r2);;(2)
/*循环扩展部分*/
if xalt;do,xr4:0;;
ifnxah;do,xr4=xr2;;
[j5+=1]=xr4;;
_Picture_Segment_Inner_Loop_End:
if nlele,jump_Pieture_Segmem Inner Loop(p);;
_Picture segment_Outter_Loop_End:
if nleoe,jump_Picture_Segment_Outter_Loop(p);;
|
|