DSP技術與應用線性匯編語言簡介.ppt
《DSP技術與應用線性匯編語言簡介.ppt》由會員分享,可在線閱讀,更多相關《DSP技術與應用線性匯編語言簡介.ppt(21頁珍藏版)》請在裝配圖網(wǎng)上搜索。
DSP技術與應用—— 線性匯編語言簡介,,線性匯編語言簡介,匯編代碼結(jié)構(gòu) 線性匯編語言簡介,匯編代碼結(jié)構(gòu),Label: parallel bars [condition] instruction unit operands;comments (1)Label標號 標號用來定義一行代碼或一個變量,它代表一條指令或數(shù)據(jù)的存儲地址,標號后面的冒號是可選的。 a標號的第1個字符必須是字母或下劃線”_”跟一個字母; b標號的第1個字符必須在文件的第1列; c標號最多可包含32個字母字符; d并行指令不能使用標號。 (2)Parallel bars 并行符號 ||,匯編代碼結(jié)構(gòu),Label: parallel bars [condition] instruction unit operands;comments (3)[condition]條件 A 如果指令沒有指出條件,指令總被執(zhí)行; B 如果給定條件,當條件為真,指令執(zhí)行; C 如果給定條件,當條件為假,指令不執(zhí)行。 如[A1] A1!=0 A1=0 [!A1] A1=0 A1!=0,匯編代碼結(jié)構(gòu),Label: parallel bars [condition] instruction unit operands;comments 4 instruction指令 匯編代碼指令包括偽指令和命令助記符 A 偽指令用來在匯編語言中控制匯編過程或定義數(shù)據(jù)結(jié)構(gòu)。所有偽指令都以圓點打頭。 如: .sect “name” .double value .float value .byte value B 命令助記符代表有效微處理器命令,它執(zhí)行程序操作。,匯編代碼結(jié)構(gòu),Label: parallel bars [condition] instruction unit operands;comments Uint 功能單元 C6000有8個功能單元,每個功能單元有兩種類型。功能單元以“.”開始,后面跟一個功能單元分類符。 .S1 .S2 .L1 .L2 .M1 .M2 .D1 .D2 另有交叉通道 如.L1X,匯編代碼結(jié)構(gòu),Label: parallel bars [condition] instruction unit operands;comments 6 operands操作數(shù) 操作數(shù)由常數(shù)、符號以及常數(shù)與符號構(gòu)成的表達式組成。 操作數(shù)之間必須用逗號隔開。 7 comments注釋 ;注釋可以再任何一列開始 * 注釋必須在第一列開始,線性匯編語言簡介,線性匯編語句的基本結(jié)構(gòu) 線性匯編中的偽指令 線性匯編資源安排 C代碼轉(zhuǎn)換為線性匯編,線性匯編語句的基本結(jié)構(gòu),基本格式與匯編語言相同,必須是ASCII碼文件,擴展名必須是”.sa”,用作匯編優(yōu)化器的輸入文件 Label[[:]] [||] [[register]] mnemonic [unit specifier] [operand list] [;commend],線性匯編中的偽指令,1、調(diào)用一個函數(shù) .call [ret_reg=]func_name(arg1,arg2)(僅在過程procedure)內(nèi)有效 2、定義一個可被匯編優(yōu)化器優(yōu)化,而且可被C/C++當做函數(shù)調(diào)用的線性匯編代碼段的偽指令。 label .cproc [vari1[,vari2,…]] 起始 .endproc 結(jié)束 3、定義一個可被匯編優(yōu)化器優(yōu)化的線性匯編代碼段的偽指令。 label .proc [vari1[,vari2,…]] 起始 .endproc 結(jié)束,線性匯編中的偽指令,4、表明存儲器地址相關與不相關的偽指令 .mdep[symbol1],[symbol2] 1,2相關 .no_mdep 其后定義的函數(shù)段內(nèi)存儲器地址不相關 5、定義變量,或者說描述存入寄存器的數(shù)值變量的偽指令: .reg variable1[,variable2,…] 6、過程的返回值 .return [argument] 7、指出循環(huán)迭代次數(shù)的偽指令 label .trip minimum value,線性匯編資源安排,讀取指令(LDH)必須使用.D單元 乘法指令(MPY)必須使用.M單元 加法指令(ADD)必須使用.L單元 減法指令(SUB)必須使用.S單元 跳轉(zhuǎn)指令(B)必須使用.S單元,C代碼轉(zhuǎn)換為線性匯編,short DP(short *m, short *n, short count) { short i ; short product ; short sum = 0 ; for(i=0;icount;i++) { product = m[i] * n[i] ; sum += product ; } return(sum) ; },C代碼轉(zhuǎn)換為線性匯編,第一步:定義函數(shù)名稱、實現(xiàn)參數(shù)傳遞 short DP(short *m, short *n, short count) .def _DP _DP .cproc cptr0,cptr1,vptr 1).def為definition的縮寫 2).cproc表示本函數(shù)是C可調(diào)用函數(shù),其后為所傳遞的參數(shù),C代碼轉(zhuǎn)換為線性匯編,第二步:暫時存放臨時數(shù)據(jù)的寄存器定名,由.reg ( register)完成 .reg addr_a,addr_x .reg m,n .reg product,sum,C代碼轉(zhuǎn)換為線性匯編,第三步,數(shù)據(jù)初始化 MV cptr0,addr_a MV cptr1,addr_x ZERO sum 前兩句將數(shù)組a[ ]和x[ ]的首地址存入名為addr_a和addr_x的寄存器變量,以便其后實現(xiàn)對數(shù)組的訪問;最后一句是累加寄存器清零。,C代碼轉(zhuǎn)換為線性匯編,第四步處理程序的循環(huán)體部分 定義一個標號loop:作為循環(huán)返回的標志;然后按照原C程序語句順序改寫成匯編語句(不必指定指令執(zhí)行的功能單元): product = m[i] * n[i] ; 改寫 LDH *addr_a++,m LDH *addr_x++,n MPY m,n,product sum += product ; 改寫為 ADD sum,product,sum,C代碼轉(zhuǎn)換為線性匯編,將循環(huán)變量vptr(即count)減一;利用C6x指令的條件執(zhí)行功能通過對vptr是否為零的判斷條件執(zhí)行跳轉(zhuǎn)指令: if ( vptr!=0) then B loop 最后,.return實現(xiàn)數(shù)據(jù)的返回。 一切工作完成后,使用.endproc作為函數(shù)結(jié)束的標志。,C代碼轉(zhuǎn)換為線性匯編,.def _DP _DP .cproc cptr0,cptr1,vptr .reg addr_a,addr_x .reg m,n .reg product,sum MV cptr0,addr_a MV cptr1,addr_x ZERO sum loop: LDH *addr_a++,m LDH *addr_x++,n MPY m,n,product ADD sum,product,sum SUB vptr,1,vptr [vptr] B loop .return sum .endproc,C代碼轉(zhuǎn)換為線性匯編,short DP(short *m, short *n, short count) { short i ; int pro_h, pro_l ; int sum_h = 0 ; int sum_l = 0 ; int sum = 0 ; int *data_a = ( int *) m ; int *data_x = ( int *) n ; count = count 1 ; for(i=0;icount;i++) { pro_l = _mpy( data_a[i], data_x[i]) ; pro_h = _mpyh( data_a[i], data_x[i]) ; sum_l += pro_l ; sum_h += pro_h ; } sum = sum_l + sum_h ; return( sum) ; },,.def _DP _DP .cproc cptr0,cptr1,vptr .reg addr_a,addr_x .reg product0,product1,sum0,sum1 .reg m,n MV cptr0,addr_a MV cptr1,addr_x ZERO sum0 ZERO sum1 SHR vptr,1,vptr loop: LDW *addr_a++,m LDW *addr_x++,n MPY m,n,product0 MPYH m,n,product1 ADD sum0,product0,sum0 ADD sum1,product1,sum1 SUB vptr,1,vptr [vptr] B loop ADD sum0,sum1,sum0 .return sum0 .endproc,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- DSP 技術 應用 線性 匯編語言 簡介
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://kudomayuko.com/p-2715611.html