




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、整理課件4.4.1 1 TMS320C54x軟件開發(fā)過程軟件開發(fā)過程 匯編語言程序的編輯、匯編和鏈接過程匯編語言程序的編輯、匯編和鏈接過程 COFF的一般概念的一般概念 整理課件整理課件TMS320的開發(fā)工具是一個軟件包,其中包括的開發(fā)工具是一個軟件包,其中包括:vC優(yōu)化編譯器優(yōu)化編譯器v匯編器匯編器v連接器連接器v歸檔器歸檔器v交叉引用列表器交叉引用列表器v十六進(jìn)制轉(zhuǎn)換公用程序十六進(jìn)制轉(zhuǎn)換公用程序整理課件C優(yōu)化編譯器(優(yōu)化編譯器(C Compile) TI 為其為其TMS320系列系列 DSP提供了一系列的提供了一系列的 C 編譯器。將標(biāo)準(zhǔn)編譯器。將標(biāo)準(zhǔn) C 源文件編譯成為相應(yīng)片源文件編譯成
2、為相應(yīng)片種的匯編語言源代碼文件。種的匯編語言源代碼文件。完全符合完全符合ANSI C標(biāo)準(zhǔn)標(biāo)準(zhǔn)帶有一個完整的運(yùn)行支持庫帶有一個完整的運(yùn)行支持庫使用多種先進(jìn)技術(shù)來優(yōu)化使用多種先進(jìn)技術(shù)來優(yōu)化 C 源代碼,以產(chǎn)源代碼,以產(chǎn)生高效匯編代碼。生高效匯編代碼。整理課件匯編器(匯編器(Assembler) 將匯編語言的源程序文件匯編成為機(jī)器將匯編語言的源程序文件匯編成為機(jī)器語言的目標(biāo)程序文件,其格式為語言的目標(biāo)程序文件,其格式為COFF(公(公用目標(biāo)文件格式)。匯編語言源程序可以用目標(biāo)文件格式)。匯編語言源程序可以包括匯編語言指令(包括匯編語言指令(instruction)、匯編)、匯編偽指令(偽指令(ass
3、embler directives)和宏指)和宏指令(令(macro directives)整理課件連接器(連接器(Linker) 連接器的基本任務(wù)是將目標(biāo)文件連接在連接器的基本任務(wù)是將目標(biāo)文件連接在一起,產(chǎn)生可執(zhí)行模塊。連接器可以接受一起,產(chǎn)生可執(zhí)行模塊。連接器可以接受的輸入文件包括匯編器產(chǎn)生的的輸入文件包括匯編器產(chǎn)生的COFF目標(biāo)文目標(biāo)文件、命令文件、庫文件、以及已部分連接件、命令文件、庫文件、以及已部分連接好了的文件。它所產(chǎn)生的可執(zhí)行好了的文件。它所產(chǎn)生的可執(zhí)行COFF目標(biāo)目標(biāo)模 塊 可 以 裝 入 各 種 開 發(fā) 工 具模 塊 可 以 裝 入 各 種 開 發(fā) 工 具 , 或 由或 由T
4、MS320器件來執(zhí)行器件來執(zhí)行整理課件歸檔器(歸檔器(Archiver) 歸檔器允許用戶將一組文件歸入一個檔歸檔器允許用戶將一組文件歸入一個檔案文件(庫)。例如,將若干個宏歸入一案文件(庫)。例如,將若干個宏歸入一個宏庫,匯編器將搜索這個庫,并調(diào)用源個宏庫,匯編器將搜索這個庫,并調(diào)用源文件中使用的宏。也可以用歸檔器將一組文件中使用的宏。也可以用歸檔器將一組目標(biāo)文件收入一個目標(biāo)文件庫,連接器將目標(biāo)文件收入一個目標(biāo)文件庫,連接器將連接庫內(nèi)的成員,并解決外部引用連接庫內(nèi)的成員,并解決外部引用整理課件交叉引用列表器(交叉引用列表器(Cross-Reference Lister) 交叉引用列表器是一個查
5、錯的工具。它交叉引用列表器是一個查錯的工具。它接受已經(jīng)連接好的目標(biāo)文件作為輸入,產(chǎn)接受已經(jīng)連接好的目標(biāo)文件作為輸入,產(chǎn)生一個交叉引用列表作為輸出。它列出符生一個交叉引用列表作為輸出。它列出符號、符號的定義、以及它們在已經(jīng)連接的號、符號的定義、以及它們在已經(jīng)連接的源文件中的引用源文件中的引用整理課件十六進(jìn)制轉(zhuǎn)換公用程序(十六進(jìn)制轉(zhuǎn)換公用程序(Hex Conversion Utility)將將COFF目標(biāo)文件轉(zhuǎn)換成為若干種標(biāo)準(zhǔn)的文件格式:目標(biāo)文件轉(zhuǎn)換成為若干種標(biāo)準(zhǔn)的文件格式:vASCII-十六進(jìn)制十六進(jìn)制vExtended TektronixvIntel MCS-86vMotorola Exorc
6、iser整理課件整理課件 全匯編編程:全匯編編程:代碼效率高,可直接對硬件設(shè)置;代碼量較大,可讀性差。代碼效率高,可直接對硬件設(shè)置;代碼量較大,可讀性差。 全全C編程:編程:提高軟件開發(fā)速度和可讀性,方便軟件移植;代碼效率較低,硬件提高軟件開發(fā)速度和可讀性,方便軟件移植;代碼效率較低,硬件控制不方便??刂撇环奖恪?混合編程混合編程 混合編程幾種方法:混合編程幾種方法:(1)獨(dú)立編寫)獨(dú)立編寫C/C+程序和匯編程序,分開編譯或匯編形成各自程序和匯編程序,分開編譯或匯編形成各自的目標(biāo)模塊,再用鏈接器將的目標(biāo)模塊,再用鏈接器將C/C+模塊和匯編模塊鏈接起來。模塊和匯編模塊鏈接起來。(2)在)在C/C
7、+程序中直接內(nèi)嵌匯編語句。程序中直接內(nèi)嵌匯編語句。(3)將)將C程序編譯生成相應(yīng)的匯編程序,手工修改和優(yōu)化程序編譯生成相應(yīng)的匯編程序,手工修改和優(yōu)化C編譯器編譯器生成的匯編代碼。生成的匯編代碼。整理課件 混合編程說明:混合編程說明: 變量和函數(shù)命名規(guī)則變量和函數(shù)命名規(guī)則 無論是變量還是函數(shù),在無論是變量還是函數(shù),在C C語言和匯編中均需要說明為全局的。語言和匯編中均需要說明為全局的。在在C C語言中需要有準(zhǔn)確的函數(shù)原型說明。語言中需要有準(zhǔn)確的函數(shù)原型說明。 在在C C語言中保持語言中保持“自然自然”的命名,而在匯編語言中該名字需加一的命名,而在匯編語言中該名字需加一個下劃線作為前綴。個下劃線作
8、為前綴。 例:例:C語言部分:語言部分:extern int product(int *x, int *y);extern int i;匯編部分:匯編部分:.global _i.global _product整理課件 混合編程說明:混合編程說明: 變量訪問規(guī)則變量訪問規(guī)則 C C程序訪問由程序訪問由.bss.bss定義的匯編變量:定義的匯編變量: (1 1)匯編程序中,該變量名前要加下劃線)匯編程序中,該變量名前要加下劃線“_”_”;(2 2)匯編程序中,用)匯編程序中,用.global.global命令將其定義為全局變量;命令將其定義為全局變量;(3 3)在)在C C程序中,將變量說明為外部
9、變量程序中,將變量說明為外部變量C語言部分:語言部分:extern int var;var=1;匯編部分:匯編部分:.bss _var, 1.global _var整理課件 混合編程說明:混合編程說明: 變量訪問規(guī)則變量訪問規(guī)則 C C程序訪問不在程序訪問不在.bss.bss中定義的匯編常量表:中定義的匯編常量表: (1 1)匯編程序中,匯編程序中,在該常量表前加一標(biāo)號(標(biāo)號前要加在該常量表前加一標(biāo)號(標(biāo)號前要加“_”_”););(2 2)匯編程序中,匯編程序中,將該標(biāo)號定義為全局標(biāo)號;將該標(biāo)號定義為全局標(biāo)號;(3 3)在)在C C程序中,以程序中,以externextern的形式對該標(biāo)號聲明
10、,并利用指針訪的形式對該標(biāo)號聲明,并利用指針訪 問該常量表。問該常量表。C語言部分:語言部分:extern int var;int *p=var;f=p1匯編部分:匯編部分:.global _var_var: .word 10 .word 20整理課件 混合編程說明:混合編程說明: 變量訪問規(guī)則變量訪問規(guī)則 C C程序訪問用程序訪問用.set.set定義的匯編時(shí)間常數(shù):定義的匯編時(shí)間常數(shù): (1 1)匯編程序中,匯編程序中,在該常數(shù)名前在該常數(shù)名前 “_”_”;(2 2)匯編程序中,匯編程序中,將該常數(shù)名定義為全局符號;將該常數(shù)名定義為全局符號;(3 3)在)在C C程序中,以程序中,以ext
11、ernextern的形式對該符號聲明,并用取地址運(yùn)的形式對該符號聲明,并用取地址運(yùn) 算符算符“&”&”取該常量參與運(yùn)算取該常量參與運(yùn)算C語言部分:語言部分:extern int shift;#define ad (int)(&shift);x=ad;匯編部分:匯編部分:_shift .set 3.global _shift整理課件 混合編程說明:混合編程說明: 變量訪問規(guī)則變量訪問規(guī)則 匯編程序訪問用匯編程序訪問用C C程序中的變量或數(shù)組:程序中的變量或數(shù)組: (1 1)在)在匯編程序匯編程序和和C C程序中,都將該變量或數(shù)組定義成外部屬性。程序中,都將該變量或數(shù)組定義成外部屬性。(2 2)在
12、匯編中定義該變量或數(shù)組時(shí)需在前加)在匯編中定義該變量或數(shù)組時(shí)需在前加“_”_”;C語言部分:語言部分:int speech_in160, speech_out160;main()匯編部分:匯編部分:.global _speech_in.global _speech_outld #_speech_in, b stlm b, ar2ld #_speech_out, astlm a, ar3ld #159, astlm a, brcnopnoprptb nextmvdd *ar2+, *ar3+next: 整理課件 混合編程說明:混合編程說明: 程序調(diào)用規(guī)則程序調(diào)用規(guī)則 寄存器使用說明:寄存器使用說
13、明: (1)輔助寄存器)輔助寄存器AR1、AR6、AR7由被調(diào)用函數(shù)保護(hù),即可以在函數(shù)執(zhí)行過程由被調(diào)用函數(shù)保護(hù),即可以在函數(shù)執(zhí)行過程中修改,但在函數(shù)返回時(shí)必須恢復(fù)。中修改,但在函數(shù)返回時(shí)必須恢復(fù)。AR0、AR2、AR3、AR4、AR5可以自由可以自由使用,即在函數(shù)執(zhí)行過程中可以修改,而且不必恢復(fù)。使用,即在函數(shù)執(zhí)行過程中可以修改,而且不必恢復(fù)。(2)堆棧指針)堆棧指針SP在函數(shù)調(diào)用時(shí)必須予以保護(hù),但其是自動保護(hù)的,即在返回在函數(shù)調(diào)用時(shí)必須予以保護(hù),但其是自動保護(hù)的,即在返回時(shí),壓入椎棧的內(nèi)容都將被全部彈出。時(shí),壓入椎棧的內(nèi)容都將被全部彈出。(3)ARP在函數(shù)進(jìn)入和返回時(shí),必須為在函數(shù)進(jìn)入和返回
14、時(shí),必須為0,即當(dāng)前輔助寄存器為,即當(dāng)前輔助寄存器為AR0。函數(shù)執(zhí)。函數(shù)執(zhí)行時(shí)可以是其它值。行時(shí)可以是其它值。(4)在缺省的情況下,編譯器總是認(rèn)為)在缺省的情況下,編譯器總是認(rèn)為OVM為為0。因此,若在匯編程序中將。因此,若在匯編程序中將OVM置為置為1,則在返回,則在返回C環(huán)境時(shí),必須將其恢復(fù)為環(huán)境時(shí),必須將其恢復(fù)為0。(5)其它狀態(tài)位和寄存器在子程序中可以任意使用,不必恢復(fù)。)其它狀態(tài)位和寄存器在子程序中可以任意使用,不必恢復(fù)。整理課件 混合編程說明:混合編程說明: 程序調(diào)用規(guī)則程序調(diào)用規(guī)則 參數(shù)傳遞說明:參數(shù)傳遞說明: (1)函數(shù)調(diào)用前,將參數(shù)以逆序壓入運(yùn)行堆棧,即最右邊的參數(shù))函數(shù)調(diào)用
15、前,將參數(shù)以逆序壓入運(yùn)行堆棧,即最右邊的參數(shù)最先入棧,然后自右向左將參數(shù)依次入棧,最后是返回地址入棧。最先入棧,然后自右向左將參數(shù)依次入棧,最后是返回地址入棧。第一個參數(shù)(最左邊)放入累加器第一個參數(shù)(最左邊)放入累加器A中進(jìn)行傳遞。中進(jìn)行傳遞。(2)函數(shù)調(diào)用結(jié)束后,將返回值置于累加器)函數(shù)調(diào)用結(jié)束后,將返回值置于累加器A中。中。編程實(shí)例編程實(shí)例以以32位乘法運(yùn)算為例。雖然用位乘法運(yùn)算為例。雖然用C/C+語言表達(dá)乘法運(yùn)算較為方便和明了,語言表達(dá)乘法運(yùn)算較為方便和明了,但由于但由于C/C+語言無法很好利用語言無法很好利用DSP匯編語言為實(shí)現(xiàn)各種乘法運(yùn)算而提匯編語言為實(shí)現(xiàn)各種乘法運(yùn)算而提供的指令,
16、使得供的指令,使得C/C+程序效率低下。所以這里用匯編語言完成乘法運(yùn)程序效率低下。所以這里用匯編語言完成乘法運(yùn)算,再用算,再用C/C+程序調(diào)用它。程序調(diào)用它。整理課件編程實(shí)例(續(xù))編程實(shí)例(續(xù))C語言主程序語言主程序#include #include int main() extern int *MPY32 (long X, long Y); /定義函數(shù)原型,返回指針值定義函數(shù)原型,返回指針值 int W4; /定義存放相乘結(jié)果的數(shù)組定義存放相乘結(jié)果的數(shù)組 int *P; int i; P=MPY32(0 x11112222, 0 x33334444); /函數(shù)調(diào)用函數(shù)調(diào)用/該指針指向數(shù)據(jù)存儲
17、器中,存放相乘結(jié)果單元的首地址該指針指向數(shù)據(jù)存儲器中,存放相乘結(jié)果單元的首地址for(i=0; i16,低,低16位相乘的進(jìn)位位相乘的進(jìn)位MACSU *AR2-, *AR3+,A /A+=y1*x0MACSU *AR3-, *AR2, A /A+=x1*y0w0w1w2w3y0y1x0 x1AR2AR3AR4整理課件編程實(shí)例(續(xù))匯編程序編程實(shí)例(續(xù))匯編程序STL A, *AR4- /w1=ALD A, -16,A /A=A16MAC *AR2, *AR3,A /A+=x1*y1STL A, *AR4- /w2賦值賦值STH A, *AR4 /w3賦值賦值LD #w3,A /w3單元地址作為
18、返回值,傳遞到單元地址作為返回值,傳遞到ARET整理課件 混合編程說明:混合編程說明: 匯編語句嵌入規(guī)則匯編語句嵌入規(guī)則 在在C程序中直接內(nèi)嵌匯編語句。此種方法可以在程序中直接內(nèi)嵌匯編語句。此種方法可以在C程序中實(shí)現(xiàn)程序中實(shí)現(xiàn)C語言無法實(shí)現(xiàn)的一些硬件控制功能,語言無法實(shí)現(xiàn)的一些硬件控制功能, 如修改寄存器值,或在編譯如修改寄存器值,或在編譯結(jié)果中添加注釋等。嵌入?yún)R編語句的方法比較簡單,只需在匯編語結(jié)果中添加注釋等。嵌入?yún)R編語句的方法比較簡單,只需在匯編語句的兩邊加上括號和雙引號,并且在括號前加上句的兩邊加上括號和雙引號,并且在括號前加上asm標(biāo)識符即可,標(biāo)識符即可,即即asm(“ 匯編語句匯編
19、語句”)。但需注意以下幾點(diǎn):。但需注意以下幾點(diǎn):(1)括號中的匯編語句必須以標(biāo)號、空格、)括號中的匯編語句必須以標(biāo)號、空格、tab 、分號開頭,這和通、分號開頭,這和通常的匯編編程的語法一樣。常的匯編編程的語法一樣。(2)不要在嵌入的匯編語句中使用修飾性匯編代碼)不要在嵌入的匯編語句中使用修飾性匯編代碼.text、.data等。等。(3)插入跳轉(zhuǎn)語句和標(biāo)號會產(chǎn)生不可預(yù)測的結(jié)果。)插入跳轉(zhuǎn)語句和標(biāo)號會產(chǎn)生不可預(yù)測的結(jié)果。(4)匯編語句不要改變)匯編語句不要改變C程序中變量的值。程序中變量的值。asm(“ssbx xf”)asm(“*this is an assembly language com
20、ment”)練習(xí):練習(xí):用用C實(shí)現(xiàn)循環(huán)延時(shí),用嵌入式匯編語句對實(shí)現(xiàn)循環(huán)延時(shí),用嵌入式匯編語句對XF引腳置高低電平,實(shí)現(xiàn)方波發(fā)生器。引腳置高低電平,實(shí)現(xiàn)方波發(fā)生器。整理課件.asm源文件源文件.obj目標(biāo)文件目標(biāo)文件.out輸出文件輸出文件. cmd鏈接命鏈接命令文件令文件. lst列表文件列表文件. map存儲器存儲器映像文件映像文件- - o- - m- - l整理課件整理課件常用的匯編命令:常用的匯編命令: asm500 %1 s l x 整理課件常用的匯編器命令:常用的匯編器命令: lnk500 %1.cmd lnk500:lnk500: %1.cmd:%1.cmd: 鏈接命令文件名,該
21、文件須鏈接命令文件名,該文件須指明指明目標(biāo)文件、目標(biāo)文件、輸入文件、輸出文件、輸入文件、輸出文件、鏈接選項(xiàng)和存儲器配置要求等。鏈接選項(xiàng)和存儲器配置要求等。 整理課件整理課件整理課件整理課件整理課件整理課件目標(biāo)文件目標(biāo)文件目標(biāo)存儲器目標(biāo)存儲器.bss.data.textRAME2PROMROM整理課件整理課件整理課件整理課件整理課件整理課件整理課件整理課件整理課件整理課件整理課件整理課件整理課件共計(jì)共計(jì)5 5個字個字整理課件共計(jì)共計(jì)5 5個字個字整理課件源程序源程序的行號的行號 段程序段程序計(jì)數(shù)器計(jì)數(shù)器目標(biāo)目標(biāo)代碼代碼匯編語言匯編語言源程序源程序整理課件源程序源程序的行號的行號 段程序段程序計(jì)數(shù)
22、器計(jì)數(shù)器目標(biāo)目標(biāo)代碼代碼匯編語言匯編語言源程序源程序整理課件源程序源程序的行號的行號 段程序段程序計(jì)數(shù)器計(jì)數(shù)器目標(biāo)目標(biāo)代碼代碼匯編語言匯編語言源程序源程序整理課件整理課件 15 0 15 00,1 0 0 A A 0 0 B B2 0 C C C 3,4 E E E E F F F F 5 D D D D he6,7 0 0 6 8 0 0 6 5lp8,9 0 0 6 C 0 0 7 0整理課件整理課件整理課件1 0 11 0 10 0 1 0 0 10 0 1 0 0 11 0 0 0 01 0 0 0 00 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 00123h0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 10 0 0 0 0 0 0 1 0 0 1 0 0 0 1 14h0 1 0 00 1 0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉庫機(jī)械租賃合同范本
- 凍肉投放合同范本
- 加工制作合同范本門窗
- 產(chǎn)品推廣居間合同范本
- 加盟合同范本奶茶
- 健身收購合同范本
- 出租黃色圍擋合同范例
- 中國國家展覽中心合同范例
- 住宅租賃房屋合同范例
- 2024年溫州鹿城農(nóng)商銀行招聘筆試真題
- 原油電脫鹽電脫水技術(shù)
- 國考斷面水站建設(shè)及運(yùn)維技術(shù)要求參考
- XE82000--午山風(fēng)電場風(fēng)機(jī)定檢作業(yè)指導(dǎo)書
- 前列腺癌臨床路徑(最全版)
- 不吸煙不喝酒課件
- 奧數(shù)知識點(diǎn) 間隔問題
- 簡易旋轉(zhuǎn)倒立擺及控制裝置
- 深圳大學(xué)《數(shù)字信號處理》2009年期末考試試卷A卷
- 冠脈介入治療術(shù)后護(hù)理ppt課件
- BMC缺陷以及原因
- 《玉米套種柴胡栽培技術(shù)規(guī)程》
評論
0/150
提交評論