|
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);;
|
|