第三章ADSP的指令系統(tǒng)_第1頁
第三章ADSP的指令系統(tǒng)_第2頁
第三章ADSP的指令系統(tǒng)_第3頁
第三章ADSP的指令系統(tǒng)_第4頁
第三章ADSP的指令系統(tǒng)_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

ADSP技術與應用

——浮點SHARC系列

第3章SHARC系列的指令系統(tǒng)

3.1尋址方式3.2SHARC系列的指令系統(tǒng)3.3計算類操作3.4SHARC系列匯編語言編程舉例3.1尋址方式

SHARC系列指令的特點和尋址方式

指令特點SHARC系列具有完備的、高效的、靈活的、高效的指令系統(tǒng),它采用48位超長指令字(VLIW),所有的指令都是單周期的,并且可以在一條指令里并行完成多種操作。尋址方式立即尋址直接尋址間接尋址方式循環(huán)尋址位反轉(zhuǎn)尋址立即尋址方式

立即尋址方式的操作數(shù)源操作數(shù)為立即數(shù)目的操作數(shù)只能是寄存器R0~R15(F0~F15)。立即數(shù)可以是2、10進制或者16進制數(shù)例如:R0=123;//將10進制整數(shù)123賦給R0R1=0X2FF;//將16進制整數(shù)2FF賦給R1F2=125.8;//將10進制數(shù)125.8賦給R0R2=B#0100;//將二進制數(shù)0100賦給R2直接尋址方式

使用絕對地址:R0=DM(0X30000);//DM區(qū)地址0X30000的數(shù)據(jù)賦給R0R1=DM(varname);//將DM區(qū)的變量值Ifnejumplabel1;//跳轉(zhuǎn)到地址標號label1?采用PC相對地址:DO(PC,length)UNTILLCE;//其中l(wèi)ength是個變量,循環(huán)執(zhí)行PC+length程序段間接尋址方式-預調(diào)整方式

指令形式:DM(Mx,Ix)PM(Mx,Ix)方式1:使用M寄存器存儲單元地址=I+M,不更新I寄存器例:R1=PM(m10,i15);R8=DM(m13,i11);方式2:使用立即數(shù)存儲單元地址=I+立即數(shù),不更新I寄存器例:R1=PM(0x11,i15);R8=DM(127,i11);

存儲單元的地址等于M寄存器與I寄存器內(nèi)容之和,但是指令執(zhí)行后I寄存器內(nèi)容保持不變。間接尋址方式-后修改方式

指令形式:DM(Ix,Mx)PM(Ix,Mx)方式1:使用M寄存器存儲單元地址=I,用I+M更新I寄存器例:F5=PM(i9,m12);DM(i0,m3)=R3;方式2:使用立即數(shù)存儲單元地址=I用I+立即數(shù)更新I寄存器例:F15=DM(i0,6);R1=PM(i15,0x11);

存儲單元的地址等于I寄存器的當前值,指令執(zhí)行后I寄存器被更新為M寄存器與I寄存器內(nèi)容之和。間接尋址方式-修改地址

指令形式:MODIFY(Ix,Mx)方式1:使用M寄存器僅用I+M更新I寄存器例:MODIFY(i15,m10);MODIFY(i5,m6);方式2:使用立即數(shù)僅用I+立即數(shù)更新I寄存器例:MODIFY(i4,304);MODIFY(i15,0x56);僅更新Ix間接尋址方式說明

Mx寄存器和Ix寄存器分成兩組DAG1和DAG2DAG1使用M0~M7和I0~I7,尋址空間在DM區(qū)DAG2使用M8~M15和I8~I15,尋址空間在PM區(qū)兩組Mx和Ix寄存器不能交叉使用DM區(qū)使用DAG1組的M0~M7和I0~I7寄存器PM區(qū)使用DAG2組的M8~M15和I8~I15寄存器否則認為非法指令。間接尋址方式中可以是一個立即數(shù)如DM(I0,4)=R1是合法指令。循環(huán)尋址方式

寄存器Lx:緩沖區(qū)長度;寄存器Bx和Ix:緩沖區(qū)起始地址;緩沖區(qū)的邊界判斷和地址的計算方法如下:如果Mx>0時,且Ix+Mx<Bx+Lx,則Ix=Ix+Mx;如果Mx>0時,且Ix+Mx≥Bx+Lx,則Ix=Ix+Mx–Lx;如果Mx<0時,且Ix+Mx≥Bx,則Ix=Ix+Mx;如果Mx<0時,且Ix+Mx<Bx,則Ix=Ix+Mx-Lx。循環(huán)尋址方式說明

循環(huán)尋址方式注意事項

預調(diào)整地址方式不支持循環(huán)尋址方式。在向Bx寄存器寫入起始地址的同時,對應的Ix寄存器 也會自動賦予相同的值。Bx、Lx、Ix三個寄存器的序號必須一致,而Mx寄存器 可以在同一個DAG組中任意選取。兩個DAG中都可以設置循環(huán)緩存區(qū)Mx寄存器可以正也可以負對Lx和Bx寄存器清零,對應的Ix寄存器自動恢復線性 尋址方式。位反轉(zhuǎn)尋址

SHARC系列的位反轉(zhuǎn)尋址方式,通過兩種方法實現(xiàn):位反轉(zhuǎn)模式?DAG1的I0提供的32位地址經(jīng)過位反轉(zhuǎn)送到DM總線?I0的值不變?使MODE1寄存器的位BR0=1?DAG2的I8提供的24位地址經(jīng)過位反轉(zhuǎn)送到PM總線?MODE1寄存器的位BR8=1位反轉(zhuǎn)指令BITREVBITREV得到I0~I15的位反轉(zhuǎn)地址,但不送到總線位反轉(zhuǎn)的來歷-FFT

FFT計算過程:輸入-蝶形運算-整序(位反轉(zhuǎn))-輸出位反轉(zhuǎn)尋址的概念

位反轉(zhuǎn)尋址主要針對FFT算法設計,F(xiàn)FT計算過程中輸入數(shù)據(jù)的排列次序被按照一定規(guī)律打亂,稱為逆序排列。用m=log2N位二進制數(shù)可以表示N個輸入數(shù)據(jù)的下標,將二進制下標的高低位交換,就得到逆序序列。如N=8時,A3的下標是011,逆序后變成110,即A6,數(shù)組A0,A1,A2,A3,A4,A5,A6,A7逆序后變成A0,A4,A2,A6,A1,A5,A3,A7。位反轉(zhuǎn)尋址可以自動的按照逆序的規(guī)律計算地址,節(jié)省了逆序操作的軟件開銷。SHARC系列提供了位反轉(zhuǎn)尋址方式,單MODE1寄存器的BR0位置為1時,I0寄存器就按照位反轉(zhuǎn)方式尋址。在位反轉(zhuǎn)方式,I0的32位地址經(jīng)過位反轉(zhuǎn)處理后才送到DM地址總線上。可以利用位反轉(zhuǎn)指令BITREV計算I0的起始地址和步長。從BUF1位反轉(zhuǎn)傳送到BUF2的例子

BITSETMODE1BR0;//設置位反轉(zhuǎn)模式I1=BUF2;//I1指向目的緩沖區(qū)首址I0=BUF1;//I0指向源緩沖區(qū)首址BITREV(I0,0);//利用位反轉(zhuǎn)指令得到I0的初值I2=LENGTH/2;BITREV(I2,0);M0=I2;//利用位反轉(zhuǎn)指令設置步長LCNTR=LENGTH,DOLABLEUNTILLCER0=DM(I0,M0);//從BUF1中逆序取數(shù)LABLE:DM(I1,1)=R0;//順序放到BUF2中3.2SHARC系列的指令系統(tǒng)

SHARC系列指令的概述

SHARC系列提供了完備的指令集,包括4類指令:計算指令類指令流程控制類指令數(shù)據(jù)傳送類指令其它指令類指令大部分指令都是并行指令,一條指令中同時可以完成多種操作:條件判斷數(shù)學計算數(shù)據(jù)傳送地址修改(1)計算和數(shù)據(jù)傳送

指令形式如指令:IFEQR0=R1+R2,DM(I1,M0)=R1;

完成相等判斷,根據(jù)判斷結(jié)果決定是否執(zhí)行后面的相加和數(shù)據(jù)傳送操作,并且按規(guī)定修改I1寄存器。(2)程序流控制

指令形式如指令:IFNEJUMPLABEL(DB),R0=R1+R5;

完成相等判斷,根據(jù)判斷結(jié)果決定是否執(zhí)行后面的跳轉(zhuǎn)和數(shù)據(jù)傳送操作。指令中的偽指令后綴,表示為延遲跳轉(zhuǎn)方式。(3)數(shù)據(jù)傳送

數(shù)據(jù)在寄存器和存儲器間傳傳送,或直接對寄存器、存儲器置常數(shù)(稱為立即數(shù))。指令形式:如指令DM(0X12345)=R0;完成將寄存器內(nèi)容傳送到指定存儲單元。(4)其它類

位修改/位測試/地址修改堆棧操作/等待中斷等。指令形式:如指令:BITSETMODE1BR0;//設置位反轉(zhuǎn)尋址模式MODIFY(I0,0X1234);//修改I0寄存器NOP;//空操作SHARC指令集簡介

下面將每組各類指令列在表3-1中,條件(condition)列在表3-2中,計算(compute)作為一大類操作,將在后文介紹。表3-1中豎線中給出了指令的可選項列表,實際指令是從每對豎線中的多個參數(shù)選一個,指令中大寫符號表示了實際指令的助記符,而小寫標識符代表一類對象,其意義見表3-2。表中的斜體字表示指令中的可選操作項。表3-1指令集——計算和數(shù)據(jù)傳送(1)

表3-1指令集——計算和數(shù)據(jù)傳送(2)

表3-1指令集——程序流控制(1)

表3-1指令集——程序流控制(2)

表3-1指令集——數(shù)據(jù)傳送

表3-1指令集——其它指令

指令中的循環(huán)終止碼

指令中的條件和循環(huán)終止碼列于表3-3中,它們來自于:

狀態(tài)寄存器ASTAT以及MODE1、Flag輸入、循環(huán)計數(shù)器的標志位。表3-3指令中的條件和循環(huán)終止碼3.3計算類操作

計算類操作概述

計算類操作大致分為ALU的加/減運算移位器操作乘法器運算多運算操作,即雙加/減并行ALU/乘法器運算等計算類運算的操作數(shù)SHARC系列的所有運算都必須在寄存器R0~R15及MR中進行操作數(shù)只能是R0~R15寄存器或立即數(shù),而不能是存儲器中的數(shù)值浮點運算和定點運算都用同樣的寄存器R0~R15,但在浮點表達式中寫為F0~F15。計算類操作和數(shù)據(jù)傳送操作的表達式都采用代數(shù)符號

表示形式,直觀易記,簡潔緊湊。3.3.1ALU的運算指令

SHARC系列DSP的運算控制單元包括:?ALU?寄存器堆:

R0~R15(定點)或F0~F15(浮點)?移位器?乘法器?乘積寄存器:

MR=MR2:MR1:MR0ALU—算術邏輯單元

ALU的所有運算都必須在寄存器堆中進行定點運算時R0~R15為32位,浮點運算時為40位ALU的運算指令包括:32/40位浮點數(shù)加、減、加/減、平均;32位定點數(shù)加、減、加/減、平均;定點帶進位加法、帶借位減法;浮點和定點數(shù)轉(zhuǎn)換;邏輯操作:AND、OR、XOR、NOT;倒數(shù)和平方根倒數(shù);絕對值、最大值、最小值、比較;位段截取和放置。3.3.2移位器運算

移位器的操作數(shù)必須是定點數(shù),對32位定點數(shù)可以進行以下操作:算術和邏輯移位循環(huán)移位位操作(置位、清位、位反轉(zhuǎn)、位測試)字段操作,如位段提取和分解等移位操作會影響寄存器ASTAT中的3個狀態(tài)標志位SV、SZ、SS。用戶可以讀取這幾個標志位得到它們的狀態(tài)。位操作與邏輯或組合

表3-6說明 在表3-6中,Rn、Rx、Ry可以是R0~15寄存器中的任何一個,F(xiàn)n、Fx、Fy可以是F0~15寄存器中的任何一個。在FDEP、FEXT指令中的Ry的低12位(不算40位寄存器的最低8位)被當作<bit6>:<len6>。 定點寄存器始終被當成僅高32位存在,低8位既不參與也不考慮到FDEP、FEXT指令的位標記中,40位寄存器的位8被當成位0。 邏輯移位(LShift),Rn的低8bit不參與,右移時高位填0,低位送進位位,左移時,高位送進位位,低位寫0; 算術移位(AShift),Rn的低8bit不參與,右移時高位符號擴展,低位送進位位,左移時,高位送進位位,低位寫0; 移位量為正代表左移,為負代表右移;shf8指寄存器的bit15~8位段3.3.3乘法器操作

乘法器可以完成定點、浮點乘法,定點乘/累加等操作,它的操作與乘法器和乘積寄存器有關。乘積寄存器 乘積寄存器MR用來存放定點數(shù)的積,其長度是80位。80位的定點乘積寄存器從高到低分成3個寄存器:MR2(高16bit)MR1(中32bit)MR0(低32bit)乘法器特征

32或者40-bit浮點乘法器40-bit結(jié)果,可以截斷為32bit乘法器與ALU聯(lián)合實現(xiàn)單周期指令MAC32-bit定點乘法器 輸入數(shù)據(jù)可以為整數(shù)或者小數(shù)64-bit乘積80-bit累加支持單指周期令MAC定點數(shù)乘積的存放(1)

定點數(shù)乘積的存放(2)

整數(shù):如果乘法器輸入為整型定點數(shù),結(jié)果放在MR0(MR寄存器的低32bit)中。小數(shù):兩個輸入操作數(shù)都是小數(shù)型定點有符號數(shù),乘法器自動將結(jié)果左移1位以去掉多余的符號位,相乘結(jié)果放在MR1(MR寄存器的中間32位)中。傳送到寄存器:當從MR2讀取32bit數(shù)據(jù)時,高16bit符號擴展。當從MR2、MR1、MR0向40bit寄存器送數(shù)時,低8bit填0。傳送到MR:40bit寄存器的高32bit被寫入。如果是寫入到MR1,MR2作符號擴展,但寫入到MR0時,不進行符號擴展。定點數(shù)乘積的取舍處理

定點數(shù)取舍是針對小數(shù)類型;取舍方法有兩種:加指令后綴SSF或者SSFR使用取舍指令RND可以按照最接近方式取舍;可以按照接近0方式取舍;定點數(shù)乘積的飽和處理

設置飽和指令(SAT)后,當溢出(MV=1)時,乘積MR取最大值;定點數(shù)的飽和值可以返回到MR或者Rx寄存器;取舍和飽和處理指令

浮點數(shù)的乘、乘累加

浮點乘的乘數(shù)、被乘數(shù)、積是32位或者40位,在MODE1寄存器的RND32位指定;浮點數(shù)的積可以按照以下方式處理:最接近的值(IEEE)接近0或者截斷(MODE1/TRUNC)浮點乘的結(jié)果總是在Fx寄存器中,如:

F12=F3*F7;浮點MAC采用算術流水方式實現(xiàn),如:F12=F3*F7;F12=F3*F7,F8=F8+F12;(先讀后寫)

F8=F8+F12;3.3.4并行和多運算指令

SHARC系列的指令具有同時進行乘法、加法、減法等多個運算的功能,其中乘/加/減三運算并行使ADSP2106X完成FFT運算的速度大大提高。

多運算操作的基礎:乘法器和ALU單元并行工作,其中ALU單元可以同時求出兩個數(shù)的和、差。定點乘法器也具有乘法、累加并行工作的能力。并行指令的基本形式

條件判斷和數(shù)據(jù)傳送Ifcondition數(shù)據(jù)傳送如:Ifeqdm(i0,m1)=astat,r7=pm(i8,m8);條件判斷和計算加數(shù)據(jù)傳送IfconditionCOMPUTER,數(shù)據(jù)傳送如:Ifeqr6=r3-r11,dm(i0,m1)=astat;條件判斷和分支Ifcondition分支如:Ifeqjumpaddr1;雙加減(同時計算和、差)?Ra=Rx+Ry,Rs=Rx-Ry?Fa=Fx+Fy,F(xiàn)s=Fx-Fy定點乘/累加及加/減/求平均MRF=MRF+R3~0*R7~4(SSF),Ra=R11~8+R15~12Rm=MRF+R3~0*R7~4(SSFR),Ra=R11~8-R15~12MRF=MRF-R3~0*R7~4(SSF),Ra=(R11~8+R15~12)/2Rm=MRF-R3~0*R7~4(SSF)浮點乘和ALU運算Fm=F3~0*F7~4,F(xiàn)a=F11~8+F15~12Fm=F3~0*F7~4,F(xiàn)a=F11~8-F15~12Fm=F3~0*F7~4,F(xiàn)a=FLOATR11~8byR15~12Fm=F3~0*F7~4,Ra=FIXF11~8byR15~12Fm=F3~0*F7~4,F(xiàn)a=(F11~8+F15~12)/2Fm=F3~0*F7~4,F(xiàn)a=ABSF11~8Fm=F3~0*F7~4,F(xiàn)a=MAX(F11~8,F(xiàn)15~12)Fm=F3~0*F7~4,Ra=MIN(F11~8,F(xiàn)15~12)乘和雙加減Rm=R3~0*R7~4(SSFR),Ra=R11~8+R15~12,Rs=R11~8-R15~12Fm=F3~0*R7~4,F(xiàn)a=F11~8+F15~12,F(xiàn)s=F11~8-F15~12多運算指令的輸入寄存器

指令的并行操作準則

大量的DSP指令是并行形式,指令的并行操作 遵循先讀后寫準則:如果并行指令中某個寄存器既是源操作數(shù),又是目的操作數(shù),DSP執(zhí)行時總是將寄存器的舊值作源操作數(shù)。在指令執(zhí)行后,寄存器才作為目的操作數(shù),其內(nèi)容才更新。當滿足并行條件時,這種指令仍可以在單周期內(nèi)完成。如果某個存儲器單元既是源操作數(shù),又是目的操作數(shù),此指令不能在單周期內(nèi)完成。DSP執(zhí)行時總是先將存儲器的舊值讀人寄存器,然后才將新值寫入此存儲器。在一條并行指令內(nèi)的幾個操作的書寫順序是DSP的匯編語法規(guī)定的,并不是這幾個操作的執(zhí)行順序。3.3.5其它類指令

這類指令不像前3組指令那樣規(guī)則,包括:位操作指令修改DAG寄存器堆棧操作其它操作?空操作?待機?其它位操作指令

指令形式:BITSETsreg<data32>對系統(tǒng)寄存器sreg置位BITCLRsreg<data32>對系統(tǒng)寄存器sreg清0BITTGLsreg<data32>對系統(tǒng)寄存器sreg取反BITTSTsreg<data32>對系統(tǒng)寄存器sreg測試BITXORsreg<data32>對系統(tǒng)寄存器sreg異或按照<data32>中置位的位(非0位)對系統(tǒng)寄存器sreg進行相應位的置位、清0、取反、測試、異或。同時還有如下效果:當<data32>中非0位所對應的sreg中各位均置為1時,寄存器ASTAT中的BTF=l;當<data32>中非0位與sreg對應位置的各個位相同時,寄存器ASTAT中的BTF=1.修改DAG寄存器

指令形式:MODIFY(la,<data32>)修改DAG1的I0~I7寄存器MODIFY(Ic,<data24>)修改DAG2的I8~I15寄存器BITREV(I0,<data32>)完成位反序方式的地址寄存器修改BITREV(I8,<data24>)完成位反序方式的地址寄存器修改堆棧操作

指令形式:PUSHLOOP,PUSHSTS,PUSHPCSTK,F(xiàn)LUSHCACHE;POPLOOP,POPSTS,POPPCSTK,F(xiàn)LUSHCACHE;對下述對象作壓?;虺鰲2僮鳎貉h(huán)地址和循環(huán)計數(shù)器(LOOP);狀態(tài)寄存器(STS);PC堆棧(PCSTK);以及刷新(清除)指令Cache這4個操作可以在一個周期完成其它指令

NOP

空操作,僅程序地址增1。IDLE DSP進入低功耗等候狀態(tài),程序地址不變,直到某個中斷出現(xiàn)才執(zhí)行中斷服務程序和后續(xù)指令。IDLE16

僅適用于ADSP21061,類似IDLE指令,但DSP的時鐘頻率等于輸入時鐘的1/16,其功耗更低。CJUMP函數(shù)名(DB)CJUMP(PC,<reladdr24>)(DB) 僅由C編譯器產(chǎn)生,相當于跳轉(zhuǎn)指令操作和幀指針I(yè)6、堆棧指針I(yè)7的保存操作。RFRAME

僅由C編譯器產(chǎn)生,相當于I6、I7的恢復操作。3.4SHARC系列匯編語言編程舉例

SHARC系列DSP匯編程序的基本特點

DSP指令編程與C語言類似;它不區(qū)分指令的大小寫,例如寄存器R0,也可寫成r0,條件GT也可寫成gt;R0~R15與F0~F15實際上是一種寄存器當寄存器寫成R0~R15時,DSP將其當成32位定點寄存器, 執(zhí)行定點數(shù)據(jù)格式的運算、位操作、移位操作。當寄存器寫成F0~F15時,DSP將其當成40位浮點寄存器,執(zhí)行浮點格式的運算;包括在/**/或{}中的內(nèi)容是注釋;3.4.1并行指令舉例

例1.f0=dm(i0,m0),pm(i8,m8)=f0;如果i0指向DM,i8指向PM,則這條指令可以在一個周期內(nèi)完成。f0的值先寫入i8指向的PM存儲器單元,然后才將i0所指的DM存儲器單元值讀入f0。匯編語法規(guī)定對DM的操作必須寫在對PM的操作之前。例2.f0=f0+f2,f2=f0-f2,f4=dm(i1,m0),f5=pm(i9,m8);如果i1指向DM,i9指向PM,則這條指令可以在一個周期內(nèi)完成。f0、f2的值先作為源操作數(shù),求出其和、差,再將其和、差放到f0、f2中。并行指令舉例(續(xù))

例3.f13=f1*f4,f12=f8+f12,f14=f8-f12,f4=dm(i2,m0),f1=pm(i15,m9);如果i2指向DM,i15指向PM,則這條指令可以在一個周期內(nèi)完成。f1、f4的值先作為源操作數(shù),求出其乘積,放到f13中,然后f1、f4的值被相應存儲器單元的值更新,同時f12的舊值先作為源操作數(shù),求出f8、fl2的和、差,再分別放到f12、f14中。這是DSP并行度最高的指令,在FFT變換中頻繁使用,因此FFT變換也是DSP功耗最大的運算。實際上,在FFT變換的同時,DSP內(nèi)部的多個DMA還可以用最高達40MHz的速度工作,這時候,DSP的功耗更大3.4.2條件執(zhí)行指令

SHARC系列在進行條件判斷的同時,還可以完成其它操作,下面是兩個典型的例子。例1.ifFLAG0_INfl3=f1*f4,fl2=f8+fl2,f14=f8-fl2,f4=dm(i2,m0);當FLAG0管腳的輸入信號為高電平時,執(zhí)行這些運算和數(shù)據(jù)存取。當FLAG0管腳的輸入信號為低電平時,不執(zhí)行這些運算和數(shù)據(jù)存取。條件執(zhí)行指令(續(xù))

例2.ifLTf12=f8+fl2,f14=f8-f12,f4=dm(i2,m0);當ALU<0時,執(zhí)行這些運算和數(shù)據(jù)存取。當ALU>=0時,不執(zhí)行這些運算和數(shù)據(jù)存取。

ADSP2106X的這種條件執(zhí)行指令省去了其它種類DSP進行相應條件判斷時的跳轉(zhuǎn)操作,指令效率高,簡明易讀,且無論條件是否滿足,上述程序的執(zhí)行時間不變。條件執(zhí)行指令(續(xù))

ADSP2106X不支持組合條件,當需要多種條件都滿足時,就得用跳轉(zhuǎn)指令。此外還有條件調(diào)用、條件跳轉(zhuǎn)等指令,條件是否滿足,含有條件調(diào)用、條件跳轉(zhuǎn)的程序執(zhí)行時間不同。例3.ifGTcallsubl(DB);…….;

當條件滿足時,才調(diào)用子程序,由于使用了遲延調(diào)用,在調(diào)用前,先執(zhí)行后續(xù)兩條指令。3.4.3循環(huán)指令

SHARC系列提供了功能靈活方便的循環(huán)指令,下面是單重循環(huán)的例程段。lcntr=16,doloop1untillce;指令1;指令2;.....指令K-3;指令K-2;指令K-l;loop1:指令K;將K條指令構成的循環(huán)體執(zhí)行16次,注意在循環(huán)體的最后三條指令不能是調(diào)用、跳轉(zhuǎn)指令。循環(huán)指令(續(xù))

SHARC支持最多6層循環(huán),循環(huán)的次數(shù)可以是常數(shù)表達式、寄存器。下面是一個三重循環(huán),其中最內(nèi)層循環(huán)用PC相對地址作為循環(huán)體最后一條指令的地址,省去了注明循環(huán)體結(jié)束標號,它將后續(xù)三條指令執(zhí)行

65535次:lcntr=16-4,doloop1untillce;r6=rl-r2;

lcntr=r6,doloop2untillce;

……;

lCntr=65535,do(PC,3)untillce;

……;

loop2:……;……;loop1:……;3.4.4條件循環(huán)指令

用條件來執(zhí)行循環(huán)體,循環(huán)體內(nèi)的指令應有可能使指定條件不成立,否則,此循環(huán)一旦執(zhí)行,就成為死循環(huán)。下面是一個例子,如果SZ這個條件不滿足,就一直執(zhí)行反復后續(xù)4條指令:

do(PC,4),untilSZ; ......;3.4.5循環(huán)尋址

通過定義L寄存器和b寄存器,DSP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論