|
7#
樓主 |
發(fā)表于 2013-11-25 21:32:16
|
只看該作者
本帖最后由 zhangshuoshi 于 2013-11-25 21:35 編輯
不是我不說是因?yàn)樘珡?fù)雜,匯編程序優(yōu)化 DSP的種類繁多.各類DSP都有其自身的硬件特點(diǎn),而對(duì)DSP匯編程序進(jìn)行優(yōu)化的過程就是根據(jù)程序自身特點(diǎn)充分利用DSP硬件資源的過程。因此,具體到不同的器件.其優(yōu)化方式也不盡相同。目前比較流行的大多數(shù)DSF,都支持程序并行和軟件流水,從這二方面出發(fā),概括歸納出對(duì)匯編程序進(jìn)行優(yōu)化的一般方法。希望能夠在對(duì)不同DSP匯編程序優(yōu)化的過程中提供一些思考方式上的切人點(diǎn)。為了易于說明,我給同仁們提供了一些實(shí)例,這些例子均是用AD公司TSl01系列電路的匯編語言編寫的。實(shí)例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;;
/*存儲(chǔ)處理結(jié)果生成新數(shù)字信號(hào)*/
[j5+=1]=xr3;;
*內(nèi)循環(huán)結(jié)束*/
_Picture__Segment_Inner_Lcop_End:
if nlcle,jump_Picture_Segment_Inner_Loop(p);;
/*外循環(huán)結(jié)束*/
_Picture_Segment_Outter_L,cop_End:
if nlcOe,jump_Picture_Segment_Outter_Loop(p);;
實(shí)例2:
lcO=xrO;;
/*將循環(huán)數(shù)減半*/
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;;
/ *存儲(chǔ)處理結(jié)果生成新數(shù)字信號(hào)*/
[j5+=l]=xr3;;
/*循環(huán)擴(kuò)展部分*/
xr4=[j4+:1];;
xeomp(r4,r2);;
if xah;do,xr4=0;;
ifnxah;do,xr4=xr2;;
[j5+=1]=xr4;;
內(nèi)循環(huán)結(jié)束*/
_Pieture_Segment_Inner_Loop_End:
if nlele,jump_Picture_Segment Inner Loop(p);;
外循環(huán)結(jié)束*/
_Picture_segment_Outter_Loop_End:
if nleoe,jump_Pieture_Segment_Outter_Loop(p);;
實(shí)例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)
/*循環(huán)擴(kuò)展部分*/
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);;
|
|