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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

34、開始時(shí)匯編器將每個(gè)SPC置0。當(dāng)匯編器將程序代碼或數(shù)據(jù)加到段內(nèi)時(shí),增加相應(yīng)的SPC值。若再繼續(xù)對(duì)某個(gè)段匯編,則相應(yīng)的SPC就在先前的數(shù)值上繼續(xù)增加。 鏈接器在鏈接時(shí)要對(duì)每個(gè)段進(jìn)行重新定位。,5. 段程序計(jì)數(shù)器SPC,2024年3月21日,DSP原理及應(yīng)用,37,第4章 匯編語言程序開發(fā)工具,,【例4.3.1】段命令應(yīng)用舉例。,匯編語言源程序:,.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個(gè)單元 ;0456h放入.data段

36、;初始化文本段 ;1字指令 ;2字指令 ;2字指令,,共計(jì)5個(gè)字,;初始化數(shù)據(jù)段 ;3組數(shù)據(jù)放入.data段,2024年3月21日,DSP原理及應(yīng)用,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個(gè)單元 ;在newvars段保留8個(gè)單元 ;初始化文本段 ;1字指令 ;2字指令 ;2字指令,,共計(jì)5個(gè)字,;建立vectors命名段 ;2組數(shù)據(jù)放入vectors命名段,2024年3月21日,DSP原理及應(yīng)用,39,第4章 匯

38、編語言程序開發(fā)工具,,經(jīng)匯編后,得列表文件(部分):,2 **********************************3 ** 匯編一個(gè)初始化表到.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原理及應(yīng)用,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 ** 匯編另一個(gè)初始化表到.data 段 ** 24 **********************************25 0004 .data 26 0004 00cc ivals .wor

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

45、 var2 .usect “newvars”,2 31 0001 inbuf .usect “newvars”,8,2024年3月21日,DSP原理及應(yīng)用,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定義一個(gè)自定義段 ** 41 *************************

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

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

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

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個(gè)字,14,0456,2024年3月21日,DSP原理及應(yīng)用,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 ** 匯編另一個(gè)初始化表到.data 段 ** 24 **********************************25 0004 .data 26 0004 00cc ivals .word 0CCh,0DDh,0EEh 0005 00dd 0006 00ee27 **********

57、**********************28 ** 為更多的變量定義另一個(gè)段 **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個(gè)字,31 0001 inbuf .usect “newvars”,8,31,保留8個(gè)字,2024年3月21日,DSP原理及應(yīng)用,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定義一個(gè)自定義段 ** 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原理及應(yīng)用,46,第4章 匯編語言程序開發(fā)工具,,4.3.3 鏈接器對(duì)段的處理,鏈接器是開發(fā)’C54x器件必不可少的開發(fā)工具之一,它對(duì)段處理時(shí)有2個(gè)主要任務(wù): ① 將一個(gè)或多個(gè)COFF目標(biāo)文件中的各種段作為鏈接器的輸入段,經(jīng)鏈接后在一個(gè)執(zhí)行的COFF輸出模塊中建立各個(gè)輸出段; ② 在程序裝入時(shí)對(duì)其重新定位,為各個(gè)輸出段選定存儲(chǔ)器地址。,2024年3月21日,DSP原理及應(yīng)用,47,第4章 匯編語言程序

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

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

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

68、a段的程序存儲(chǔ)器,而未初始化命名段將被配置到緊隨.bss段的數(shù)據(jù)存儲(chǔ)器中。,1. 默認(rèn)的存儲(chǔ)器分配,2024年3月21日,DSP原理及應(yīng)用,50,第4章 匯編語言程序開發(fā)工具,,默認(rèn)的存儲(chǔ)器分配過程:,,,,,.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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論