2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩175頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2024年3月21日,DSP原理及應用,1,第4章 匯編語言程序開發(fā)工具,內(nèi)容提要 可編程DSP芯片開發(fā)需要一套完整的軟、硬件開發(fā)工具。通常可分成代碼生成工具和代碼調(diào)試工具兩大類。 代碼生成工具是指將高級語言或匯編語言編寫的DSP程序轉(zhuǎn)換成可執(zhí)行的DSP芯片目標代碼的工具程序,主要包括匯編器、鏈接器和C編譯器以及一些輔助工具程序等。 代碼調(diào)試工具包括C/匯編語言源碼調(diào)試器、仿真器等。 本章主要介紹代碼

2、生成工具,包括’C54x軟件開發(fā)流程、匯編語言程序的編寫、編輯、匯編和鏈接過程、COFF段的一般概念、匯編器和鏈接器處理段的方法以及程序的重定位等。,2024年3月21日,DSP原理及應用,2,第4章 匯編語言程序開發(fā)工具,4.1 TMS320C54x軟件開發(fā)過程 4.2 匯編語言程序的編輯、匯編和鏈接過程 4.3 COFF的一般概念 4.4 源程序的匯編4.5 鏈接器的使用,2024年3月21日,DSP原理及應用,3,第4章

3、匯編語言程序開發(fā)工具,4.1 TMS320C54x軟件開發(fā)過程,,’C54x的應用軟件開發(fā)主要完成以下工作:(1) 選擇編程語言編寫源程序 ’C54x提供2種編程語言,即匯編語言和C/C++語言。 對于完成一般功能的代碼,這兩種語言都可使用,但對于一些運算量很大的關(guān)鍵代碼,最好采用匯編語言來完成,以提高程序的運算效率。(2) 選擇開發(fā)工具和環(huán)境 ’C54x提供了兩種開發(fā)環(huán)境。即非集成開發(fā)環(huán)境和集成開發(fā)環(huán)境C

4、CS。,2024年3月21日,DSP原理及應用,4,第4章 匯編語言程序開發(fā)工具,4.1 TMS320C54x軟件開發(fā)過程,,1. ’C54x應用軟件開發(fā)流程,’C54x應用軟件的開發(fā)可在TI公司提供的開發(fā)環(huán)境中進行,用戶可以用C/C++語言或匯編語言編寫源文件,經(jīng)C編譯器、匯編器生成COFF格式的目標文件,再用鏈接器進行鏈接,生成在’C54x上可執(zhí)行的目標代碼,然后利用調(diào)試工具對可執(zhí)行的目標代碼進行仿真和調(diào)試。 當調(diào)試完成后,

5、通過Hex代碼轉(zhuǎn)換工具,將調(diào)試后的可執(zhí)行目標代碼轉(zhuǎn)換成EPROM編程器能接受的代碼,并將該代碼固化到EPROM中或加載到用戶的應用系統(tǒng)中,以便DSP目標系統(tǒng)脫離計算機單獨運行。,2024年3月21日,DSP原理及應用,5,第4章 匯編語言程序開發(fā)工具,,1. ’C54x應用軟件開發(fā)流程,開發(fā)過程的目的是產(chǎn)生一個可以由’C54x目標系統(tǒng)執(zhí)行的模塊。,,2024年3月21日,DSP原理及應用,6,第4章 匯編語言程序開發(fā)工具,,2. ’C5

6、4x的開發(fā)工具,TI公司提供的DSP開發(fā)環(huán)境和工具主要包括以下三個部分: ? 代碼生成工具 ? 代碼調(diào)試工具 ? 實時操作系統(tǒng),2024年3月21日,DSP原理及應用,7,第4章 匯編語言程序開發(fā)工具,,2. ’C54x的開發(fā)工具,(1)代碼生成工具:,? C編譯器:用來將C/C++語言源程序自動編譯為’C54x的匯編語言源程序。 ? 匯編器:用來將匯編語言源文件匯編成機器語言COFF目標文件

7、。 ? 鏈接器:將匯編生成的、可重新定位的COFF目標模塊組合成一個可執(zhí)行的COFF目標模塊。 ? 文檔管理器:允許用戶將一組文件(源文件或目標文件)集中為一個文檔文件庫。,2024年3月21日,DSP原理及應用,8,第4章 匯編語言程序開發(fā)工具,,2. ’C54x的開發(fā)工具,? 助記符指令—代數(shù)式指令翻譯器:用來將包含助記符指令的匯編語言源文件轉(zhuǎn)換成包含代數(shù)式指令的匯編語言源文件。 ? 建庫實用程序:用來建立用戶自

8、己使用的、并用C/C++語言編寫的支持運行的庫函數(shù)。 ? 十六進制轉(zhuǎn)換程序:可以很方便地將COFF目標文件轉(zhuǎn)換成TI、Intel、Motorola等公司的目標文件格式。,(1)代碼生成工具:,2024年3月21日,DSP原理及應用,9,第4章 匯編語言程序開發(fā)工具,,2. ’C54x的開發(fā)工具,(1)代碼生成工具:,? 絕對制表程序:將鏈接后的目標文件作為輸入,生成.abs輸出文件。 ? 交叉引用制表程序:利用目標文件生成

9、一個交叉引用清單,列出鏈接的源文件中的符號以及它們的定義和引用情況。,2024年3月21日,DSP原理及應用,10,第4章 匯編語言程序開發(fā)工具,,2. ’C54x的開發(fā)工具,(2)代碼調(diào)試工具:,? C/匯編語言源碼調(diào)試器:與軟件仿真器、評價模塊、軟件開發(fā)系統(tǒng)、軟件仿真器等配合使用。 ? 軟件仿真器:是一種模擬DSP芯片各種功能并在非實時條件下進行軟件調(diào)試的調(diào)試工具,它不需目標硬件支持,只需在計算機上運行。 ? 初學者工

10、具DSK:是TI公司提供給初學者進行DSP編程練習的一套廉價的實時軟件調(diào)試工具。,2024年3月21日,DSP原理及應用,11,第4章 匯編語言程序開發(fā)工具,,2. ’C54x的開發(fā)工具,(2)代碼調(diào)試工具:,? 軟件開發(fā)系統(tǒng)SWDS:是一塊PC插卡,可提供低成本的評價和實時軟件開發(fā),還可用來進行軟件調(diào)試,程序可在DSP芯片上實時運行。 ? 可擴展的開發(fā)系統(tǒng)仿真器(XDS510):可用來進行系統(tǒng)級的集成調(diào)試,是進行DSP芯片軟硬

11、件開發(fā)的最佳工具。 ? 評價模塊EVM板:是一種低成本的開發(fā)板,可進行DSP芯片評價、性能評估和有限的系統(tǒng)調(diào)試。,2024年3月21日,DSP原理及應用,12,第4章 匯編語言程序開發(fā)工具,4.2 匯編語言程序的編輯、匯編和鏈接過程,,匯編語言源程序可以在任何一種文本編輯器中進行。如筆記本、WORD、EDIT、TC等。 當匯編語言源程序編寫完成后,還必須經(jīng)過匯編和鏈接后才能運行。,2024年3月21日,DSP原理及應用,

12、13,第4章 匯編語言程序開發(fā)工具,4.2 匯編語言程序的編輯、匯編和鏈接過程,,示意圖,2024年3月21日,DSP原理及應用,14,第4章 匯編語言程序開發(fā)工具,4.2 匯編語言程序的編輯、匯編和鏈接過程,,1. 編輯,利用各種文本編輯器,如筆記本、WORD、EDIT和TC等,可編寫匯編語言源程序。,2. 匯編,當匯編語言源程序編寫好以后,可利用’C54x的匯編器ASM500,對一個或多個源程序分別進行匯編,并生成列表文件(.lst

13、)和目標文件(.obj)。,2024年3月21日,DSP原理及應用,15,第4章 匯編語言程序開發(fā)工具,4.2 匯編語言程序的編輯、匯編和鏈接過程,,2. 匯編,常用的匯編命令:,asm500 %1 -s -1 -x,,,,,,,,,,調(diào)用匯編器命令,源文件名,將程序所有定義的符號放在目標文件的符號表中,,,,生成一個列表文件.lst,,,,生成一個交叉匯編表,2024年3月21日,DSP原理及應用,16,第

14、4章 匯編語言程序開發(fā)工具,4.2 匯編語言程序的編輯、匯編和鏈接過程,,3. 鏈接,所謂鏈接,就是利用’C54x的鏈接器LNK500,根據(jù)鏈接器命令文件(.cmd)對已匯編過的一個或多個目標文件(.obj)進行鏈接,生成輸出文件(.out)和存儲器映像文件(.map) 。,常用的匯編器命令:,lnk500 %1.cmd,lnk500: 調(diào)用鏈接器命令,%1.cmd: 鏈接命令文件名,該文件須指明目標文件、輸入文件、輸出文

15、件、鏈接選項和存儲器配置要求等。,2024年3月21日,DSP原理及應用,17,第4章 匯編語言程序開發(fā)工具,4.3 COFF的一般概念,,匯編器和鏈接器生成的目標文件,是一個可以由’C54x器件執(zhí)行的文件。這些目標文件的格式稱之為公共目標文件格式(COFF)。,在編寫匯編語言程序時,COFF采用代碼段和數(shù)據(jù)段的形式,以便于模塊化的編程,使編程和管理變得更加方便。 這些代碼段和數(shù)據(jù)段簡稱為段。匯編器和鏈接器提供一些偽指令來建立和

16、管理各種各樣的段。,2024年3月21日,DSP原理及應用,18,第4章 匯編語言程序開發(fā)工具,4.3 COFF的一般概念,,4.3.1 COFF文件的基本單元,COFF文件有3種類型:COFF0、COFF1、COFF2。,每種類型的COFF文件,其標題格式都有所不同,但數(shù)據(jù)部分是相同的。,鏈接器能夠讀/寫所有類型的COFF文件,默認時鏈接器生成的是COFF2文件,采用-vn鏈接選項可以選擇不同類型的COFF文件。,’C54x匯編器和C

17、編譯器產(chǎn)生的是COFF2文件。,2024年3月21日,DSP原理及應用,19,第4章 匯編語言程序開發(fā)工具,,4.3.1 COFF文件的基本單元,1. 段(sections),是COFF文件中最重要的概念。每個目標文件都分成若干段。,段——是存儲器中占據(jù)相鄰空間的代碼或數(shù)據(jù)塊。一個目標文件中的每個段都是分開的和各不相同的。,COFF目標文件都包含以下3種形式的段: .text 段(文本段),通常包含可執(zhí)行代碼; .da

18、ta 段(數(shù)據(jù)段),通常包含初始化數(shù)據(jù); .bss 段(保留空間段),通常為未初始化變量保留存儲空間。,2024年3月21日,DSP原理及應用,20,第4章 匯編語言程序開發(fā)工具,,4.3.1 COFF文件的基本單元,2. 段的基本類型,COFF目標文件中的段有兩種基本類型。,? 初始化段 ? 未初始化段,(1) 初始化段,初始化段中包含有數(shù)據(jù)或程序代碼。主要有: .text段——已初始化段;

19、 .data段——已初始化段; .sect段——已初始化段,由匯編器偽指令建立 的自定義段。,2024年3月21日,DSP原理及應用,21,第4章 匯編語言程序開發(fā)工具,,4.3.1 COFF文件的基本單元,2. 段的基本類型,COFF目標文件中的段有兩種基本類型。,(2) 未初始化段,在存儲空間中,為未初始化數(shù)據(jù)保留存儲空間。它包括: .bss段——未初始化段; .usect段

20、——未初始化段,由匯編命令建立的命 名段(自定義段)。,2024年3月21日,DSP原理及應用,22,第4章 匯編語言程序開發(fā)工具,,4.3.1 COFF文件的基本單元,3. 段與目標存儲器的對應關(guān)系,匯編器的任務:在匯編過程中,根據(jù)匯編命令用適當?shù)亩螌⒏鞑糠殖绦虼a和數(shù)據(jù)連在一起,構(gòu)成目標文件。 鏈接器的任務:就是分配存儲單元,將目標文件中的段重新定位到目標系統(tǒng)的存儲器中,這一過程稱為定位或分配。

21、,2024年3月21日,DSP原理及應用,23,第4章 匯編語言程序開發(fā)工具,,3. 段與目標存儲器的對應關(guān)系,目標文件中的段與目標存儲器之間的關(guān)系,,.bss,.data,.text,,RAM,,E2PROM,,,,ROM,2024年3月21日,DSP原理及應用,24,第4章 匯編語言程序開發(fā)工具,,4.3.2 匯編器對段的處理,匯編器對段的處理是通過段偽指令來區(qū)別各個段的,并將段名相同的語句匯編在一起。 匯編器有5條偽指令可

22、識別匯編語言程序的各個部分:,● .bss ● .usect ● .text ● .data ● .sect,——定義未初始化段——定義未初始化段——定義已初始化段——定義已初始化段——定義已初始化段,2024年3月21日,DSP原理及應用,25,第4章 匯編語言程序開發(fā)工具,,4.3.2 匯編器對段的處理,未初始化段就是在’C54x存儲器中保留空間,通常它們被定位在RAM區(qū)。在目標文件中,這些段

23、中沒有確切的內(nèi)容。 由這些段定義的空間僅作為臨時存儲空間,在程序運行時,可以利用這些存儲空間存放變量。 未初始化段分為默認的和命名的兩種,分別由匯編器偽指令.bss和.usect產(chǎn)生。,1. 未初始化段,2024年3月21日,DSP原理及應用,26,第4章 匯編語言程序開發(fā)工具,,(1) .bss偽指令,1. 未初始化段,用于在bss段中保留若干個空間。 格式: .bss 符號, 字數(shù),符號—

24、—對應于保留的存儲空間第一個字的變量名稱。 可以讓其他段引用,也可以用.global命令定義為全 局符號。,字數(shù)——表示在bss段或標有名字的段中保留若干個存儲單元。,每調(diào)用一次.bss偽指令,匯編器在相應的段保留更多的空間。,2024年3月21日,DSP原理及應用,27,第4章 匯編語言程序開發(fā)工具,,1. 未初始化段,(2) .usect偽指令,用于為指定的命名段保留若干個空間。 格式: 符號

25、 .usect “段名”, 字數(shù),段名——程序員為未初始化的命名段定義的名字。,每調(diào)用一次.usect偽指令,匯編器在指定的命名段保留更多的空間。,2024年3月21日,DSP原理及應用,28,第4章 匯編語言程序開發(fā)工具,,4.3.2 匯編器對段的處理,已初始化段中包含有可執(zhí)行代碼或初始化數(shù)據(jù)。 這些段中的內(nèi)容都在目標文件中,當加載程序時再放到’C54x的存儲器中。每個已初始化段都是可以重新定位的,并且可以引用其

26、他段中所定義的符號。鏈接器在鏈接時會自動地處理段間的相互引用。 已初始化段由.text、.data和.sect三個偽指令建立。,2. 已初始化段,2024年3月21日,DSP原理及應用,29,第4章 匯編語言程序開發(fā)工具,,已初始化命令的句法:,2. 已初始化段,.text [段起點] .data [段起點] .sect “段名”[,段起點],段起點——是任選項。

27、 若選用,它為段程序計數(shù)器SPC定義一個起始值。 若默認,則SPC從0開始。,2024年3月21日,DSP原理及應用,30,第4章 匯編語言程序開發(fā)工具,,4.3.2 匯編器對段的處理,當匯編器遇到.text或.data或.sect命令時,將停止對當前段的匯編(相當于一條結(jié)束當前段匯編的命令),然后將緊接著的程序代碼或數(shù)據(jù)匯編到指定的段中,直到再遇到另一條.text、.data或.sect命令為止。

28、 當匯編器遇到.bss或.usect命令時,并不結(jié)束當前段的匯編,只是暫時從當前段脫離出來,并開始對新的段進行匯編。 .bss和.usect命令可以出現(xiàn)在一個已初始化段的任何位置,而不會對它的內(nèi)容發(fā)生影響。,2024年3月21日,DSP原理及應用,31,第4章 匯編語言程序開發(fā)工具,,4.3.2 匯編器對段的處理,命名段由用戶指定,與默認的.text,.data和.bss段的使用相同,但它們被分開匯編。 假如一部分

29、可執(zhí)行代碼(例如初始化程序)不希望和.text段分配在一起,可將它們匯編進一個命名段,這樣就可定位在與.text不同的地方。也可將初始化的數(shù)據(jù)匯編到與.data段不同的地方,或者將未初始化的變量保留在與.bss段不同的位置。 可用.usect和.sect兩個偽指令產(chǎn)生命名段。,3. 命名段(自定義段),2024年3月21日,DSP原理及應用,32,第4章 匯編語言程序開發(fā)工具,,.usect偽指令產(chǎn)生類似.bss的段,為變量在

30、RAM中保留存儲空間。 .sect偽指令產(chǎn)生類似.text和.data的段,可以包含代碼或數(shù)據(jù)。.sect偽指令產(chǎn)生可重新定位地址的命名段。,3. 命名段,產(chǎn)生命名段偽指令格式:,符號 .usect “段名”,字數(shù) .sect “段名”,可以產(chǎn)生多達32767個不同的命名段。段名可長達200個字符。,2024年3月21日,DSP原理及應用,33,第4章 匯編語言程序開發(fā)工具,,對于.

31、sect和.usect偽指令,段名可以作為子段的參考。 每次用一個新名字調(diào)用這些偽指令時,就產(chǎn)生一個新的命名段。 若用已有的段名調(diào)用這些偽指令,則匯編器就將代碼或數(shù)據(jù)(或保留空間)匯編進相應名稱的段中。 不同的偽指令不能使用相同的名字。即不能用.usect創(chuàng)建了命名段,然后又用.sect創(chuàng)建一個相同名字的段。,3. 命名段,2024年3月21日,DSP原理及應用,34,第4章 匯編語言程序開發(fā)工具,,4.3.2

32、匯編器對段的處理,子段是較大段中的小段。鏈接器可以像處理其他段一樣處理子段。 子段結(jié)構(gòu)可用來對存儲器空間進行更緊湊的控制,可以使存儲器空間分配更加緊密。,4. 子段,子段命名格式:,基段名: 子段名,子段名前為基段名,隨后為冒號,最后為子段名。,2024年3月21日,DSP原理及應用,35,第4章 匯編語言程序開發(fā)工具,,對于子段,匯編器可以單獨為其分配存儲單元,或者在相同的基段名下與其他段組合在一起。 用.sect

33、命令建立的段是已初始化的子段; 用.usect命令建立的段是未初始化的子段。,4. 子段,例如,若要在.text段內(nèi)建立一個稱之為_func的子段,其命令格式:,.sect “.text:_func”,2024年3月21日,DSP原理及應用,36,第4章 匯編語言程序開發(fā)工具,,4.3.2 匯編器對段的處理,匯編器為每個段都安排了一個單獨的程序計數(shù)器稱之為段程序計數(shù)器SPC。 SPC表示在程序代碼或數(shù)據(jù)段內(nèi)當前的地址。

34、開始時匯編器將每個SPC置0。當匯編器將程序代碼或數(shù)據(jù)加到段內(nèi)時,增加相應的SPC值。若再繼續(xù)對某個段匯編,則相應的SPC就在先前的數(shù)值上繼續(xù)增加。 鏈接器在鏈接時要對每個段進行重新定位。,5. 段程序計數(shù)器SPC,2024年3月21日,DSP原理及應用,37,第4章 匯編語言程序開發(fā)工具,,【例4.3.1】段命令應用舉例。,匯編語言源程序:,.datacoeff .word 044h,055h,066h .

35、bss buffer,8 prt .word 0456h .textadd: LD 0Dh,A aloop:SUB #1,A BC aloop,AGEQ .dataivals .word 0CCh,0DDh,0EEh,;初始化數(shù)據(jù)段 ;3組數(shù)據(jù)放入.data段 ;在.bss段保留8個單元 ;0456h放入.data段

36、;初始化文本段 ;1字指令 ;2字指令 ;2字指令,,共計5個字,;初始化數(shù)據(jù)段 ;3組數(shù)據(jù)放入.data段,2024年3月21日,DSP原理及應用,38,第4章 匯編語言程序開發(fā)工具,,匯編語言源程序:,var2 .usect “newvars”,2 inbuf .usect “newvars”,8 .text mpy: LD 0Ah,B mloop: MPY

37、#0Ah,B BC mloop,BNOV .sect “vectors” .word 044h,088h,;建立newvars命名段,保留2個單元 ;在newvars段保留8個單元 ;初始化文本段 ;1字指令 ;2字指令 ;2字指令,,共計5個字,;建立vectors命名段 ;2組數(shù)據(jù)放入vectors命名段,2024年3月21日,DSP原理及應用,39,第4章 匯

38、編語言程序開發(fā)工具,,經(jīng)匯編后,得列表文件(部分):,2 **********************************3 ** 匯編一個初始化表到.data段 **4 **********************************5 0000 .data6 0

39、000 0044 coeff .word 044h,055h,066h 0001 0055 0002 00667 **********************************8 ** 在.bss段中為變量保留空間 **9 **********************

40、************10 0000 .bss buffer,811 **********************************12 ** 仍然在.data 段中 **13 **********************************14

41、 0003 0456 prt .word 0456h,2024年3月21日,DSP原理及應用,40,第4章 匯編語言程序開發(fā)工具,,15 **********************************16 ** 匯編代碼到.text段 **17 *********************

42、*************18 0000 .text19 0000 100d add: LD 0Dh,A20 0001 f010 aloop: SUB #1, A 0002 0001 21 0003 f842 BC aloop,AGEQ 0004 0001’ 2

43、2 **********************************23 ** 匯編另一個初始化表到.data 段 ** 24 **********************************25 0004 .data 26 0004 00cc ivals .wor

44、d 0CCh,0DDh,0EEh 0005 00dd 0006 00ee27 **********************************28 ** 為更多的變量定義另一個段 **29 **********************************30 0000

45、 var2 .usect “newvars”,2 31 0001 inbuf .usect “newvars”,8,2024年3月21日,DSP原理及應用,41,第4章 匯編語言程序開發(fā)工具,,32 ****************************************33 ** 匯編更多代碼到.tex

46、t段 **34 ****************************************35 0005 .text 36 0005 110a mpy: LD 0Ah,B 37 0006 f166 mloop MPY #0Ah,B 0007 000a 38

47、 0008 f868 BC mloop,BNOV 0009 0006’ 39 ****************************************40 ** 為中斷向量.vectors定義一個自定義段 ** 41 *************************

48、***************42 0000 .sect “vectors” 43 0000 0044 .word 044h,088h 0001 0088,,,源程序的行號,,,段程序計數(shù)器,,,目標代碼,,匯編語言源程序,2024年3月21日,DSP原理及應用,42,第4章 匯編語言程序開發(fā)工具,,匯編語言源程序經(jīng)

49、過匯編后,共建立了5個段: ● .text段——文本段,段內(nèi)有10個字可執(zhí)行 的程序代碼。 ● .data段——已初始化的數(shù)據(jù)段,段內(nèi)有7 個字的數(shù)據(jù)。 ● vectors段——用.sect命令生成的命名段, 段內(nèi)有2個字的初始化數(shù)據(jù)。 ● .bss段——未初始化的數(shù)據(jù)段,在存儲器中

50、 為變量保留8個存儲單元。 ● newvars段——用.usect命令建立的命名段, 為變量保留10個存儲單元。,2024年3月21日,DSP原理及應用,43,第4章 匯編語言程序開發(fā)工具,,經(jīng)匯編后,得列表文件(部分):,2 *******************************3 ** 匯編一個初始化表

51、到.data段 **4 *******************************5 0000 .data6 0000 0044 coeff .word 044h,055h,066h 0001 0055 0002 00667 *******************************8

52、 ** 在.bss段中為變量保留空間 **9 *******************************10 0000 .bss buffer,811 *******************************12 ** 仍然在.data 段中 **13 ******

53、*************************14 0003 0456 prt .word 0456h,5 0000 .data,6 0000 0044 coeff .word 044h,055h,066h,10 0000 .bss buffer,8,14 0003 0456 prt .word 0456h,.data,6,00

54、44,6,0055,6,0066,10,.bss,沒有數(shù)據(jù)保留8個字,14,0456,2024年3月21日,DSP原理及應用,44,第4章 匯編語言程序開發(fā)工具,,15 ********************************16 ** 匯編代碼到.text段 **17 ********************************

55、18 0000 .text19 0000 100d add: LD 0Dh,A20 0001 f010 aloop: SUB #1, A 0002 0001 21 0003 f842 BC aloop,AGEQ 0004 0001’ 22 *******************************

56、***23 ** 匯編另一個初始化表到.data 段 ** 24 **********************************25 0004 .data 26 0004 00cc ivals .word 0CCh,0DDh,0EEh 0005 00dd 0006 00ee27 **********

57、**********************28 ** 為更多的變量定義另一個段 **29 ********************************30 0000 var2 .usect “newvars”,2 31 0001 inbuf .usect “newvars”,8,.text,18 0000

58、 .text,19 0000 100d add: LD 0Dh,A,19,100d,20 0001 f010 aloop: SUB #1, A,20,f010,20,0001,21 0003 f842 BC aloop,AGEQ,21,f842,21,0001,25 0004 .data,26 0004 00cc ivals .word

59、 0CCh,0DDh,0EEh,.data,26,00cc,26,00dd,26,00ee,30 0000 var2 .usect “newvars”,2,newvars,30,保留2個字,31 0001 inbuf .usect “newvars”,8,31,保留8個字,2024年3月21日,DSP原理及應用,45,第4章 匯編語言程序開發(fā)工具,,32 ******

60、***************************33 ** 匯編更多代碼到.text段 **34 *********************************35 0005 .text 36 0005 110a mpy: LD 0Ah,B 37 0006 f166 mloop MPY

61、 #0Ah,B 0007 000a 38 0008 f868 BC mloop,BNOV 0009 0006’ 39 ****************************************40 ** 為中斷向量.vectors定義一個自定義段 ** 41 ************************************

62、****42 0000 .sect “vectors” 43 0000 0044 .word 044h,088h 0001 0088,35 0005 .text,.text,36 0005 110a mpy: LD 0Ah,B,36,110a,37 0006 f166 mloop

63、 MPY #0Ah,B,37,f168,37,000a,38 0008 f868 BC mloop,BNOV,38,f868,38,0006,42 0000 .sect “vectors”,vectors,43 0000 0044 .word 044h,088h,43,0044,43,0088,2024年

64、3月21日,DSP原理及應用,46,第4章 匯編語言程序開發(fā)工具,,4.3.3 鏈接器對段的處理,鏈接器是開發(fā)’C54x器件必不可少的開發(fā)工具之一,它對段處理時有2個主要任務: ① 將一個或多個COFF目標文件中的各種段作為鏈接器的輸入段,經(jīng)鏈接后在一個執(zhí)行的COFF輸出模塊中建立各個輸出段; ② 在程序裝入時對其重新定位,為各個輸出段選定存儲器地址。,2024年3月21日,DSP原理及應用,47,第4章 匯編語言程序

65、開發(fā)工具,,4.3.3 鏈接器對段的處理,鏈接器有2條偽指令支持上述任務:,● MEMORY偽指令——用來定義目標系統(tǒng)的存儲器配置空間,包括對存儲器各部分命名,以及規(guī)定它們的起始地址和長度。 ● SECTIONS偽指令——用來指定鏈接器將輸入段組合成輸出段方式,以及輸出段在存儲器中的位置,也可用于指定子段。 若未使用偽指令,則鏈接器將使用目標處理器默認的方法將段放入存儲空間。,2024年3月21日,DSP原理及應用,48

66、,第4章 匯編語言程序開發(fā)工具,,4.3.3 鏈接器對段的處理,1. 默認的存儲器分配,鏈接器可對多個目標文件進行鏈接。若鏈接文件中不使用MEMORY和SECTIONS命令,則為默認方式。 每個目標文件都有.text,.data、.bss段和命名段。若采用默認鏈接,鏈接器將對多個目標文件中的各個段進行組合,形成各自的對應段,并將各個段配置到所指定的存儲器中,形成可執(zhí)行的目標模塊。 在默認的方式下,鏈接器將從存儲器的008

67、0h開始,對組合后的各段進行存儲器配置。,2024年3月21日,DSP原理及應用,49,第4章 匯編語言程序開發(fā)工具,,默認的存儲器分配: ① 將所有.text段組合在一起,形成一個.text段,并分配到程序存儲器中; ② 將多個目標文件中的.data段組合在一起,分配到緊接著.text段的程序存儲空間中; ③ 將.bss段組合,配置到數(shù)據(jù)存儲器中; ④ 組合命名段。初始化的命名段按順序分配到緊隨.dat

68、a段的程序存儲器,而未初始化命名段將被配置到緊隨.bss段的數(shù)據(jù)存儲器中。,1. 默認的存儲器分配,2024年3月21日,DSP原理及應用,50,第4章 匯編語言程序開發(fā)工具,,默認的存儲器分配過程:,,,,,.text,.text1,.text2,,,,,.data,.data1,.data2,,,,,.bss,.bss1,.bss2,,,,,table,table_1,table_2,,,,,u_vars1,u_vars1,u_va

溫馨提示

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

評論

0/150

提交評論