TMS320C55x匯編語言編程精簡課件_第1頁
TMS320C55x匯編語言編程精簡課件_第2頁
TMS320C55x匯編語言編程精簡課件_第3頁
TMS320C55x匯編語言編程精簡課件_第4頁
TMS320C55x匯編語言編程精簡課件_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、TMS320C55x軟件開發(fā)流程TMS320C55x目標(biāo)文件格式TMS320C55x匯編器TMS320C55x匯編偽指令TMS320C55x匯編語言源文件的書寫格式TMS320C55x鏈接器第4章 TMS320C55x匯編語言編程第1頁,共59頁。4.1 TMS320C55x軟件開發(fā)流程軟件開發(fā)流程軟件開發(fā)工具第2頁,共59頁。編程語言匯編語言 編程過程復(fù)雜,但程序執(zhí)行效率高C/C+語言 編程容易,但程序執(zhí)行效率不如匯編語言軟件開發(fā)環(huán)境集成開發(fā)環(huán)境CCS(Code Composer Studio)非集成開發(fā)環(huán)境4.1.1 軟件開發(fā)流程第3頁,共59頁。圖4-1 非集成開發(fā)環(huán)境下C55x軟件開發(fā)

2、的流程圖 第4頁,共59頁。用戶采用C/C+語言或匯編語言編寫源文件(.c或.asm),經(jīng)C/C+編譯器、匯編器生成COFF格式的目標(biāo)文件(.obj),再用鏈接器進(jìn)行鏈接,生成在C55x上可執(zhí)行的目標(biāo)代碼(.out),然后利用調(diào)試工具(軟件仿真器simulator或硬件仿真器emulator)對可執(zhí)行的目標(biāo)代碼進(jìn)行仿真和調(diào)試。當(dāng)調(diào)試完成后,通過Hex代碼轉(zhuǎn)換工具,將調(diào)試后的可執(zhí)行目標(biāo)代碼(.out)轉(zhuǎn)換成EPROM編程器能接受的代碼(.hex),并將該代碼固化到EPROM中或加載到用戶的應(yīng)用系統(tǒng)中,以便DSP目標(biāo)系統(tǒng)脫離計算機(jī)單獨(dú)運(yùn)行。 非集成開發(fā)環(huán)境下軟件開發(fā)的流程圖 第5頁,共59頁。4.

3、1.2 軟件開發(fā)工具 代碼生成工具源代碼編輯器 采用匯編語言或C/C+語言編寫的源程序均為文本文件,可以在任何一種文本編輯器中進(jìn)行。如WORD、EDIT、TC、Windows操作系統(tǒng)自帶的筆記本等C/C+編譯器 用來將C/C+語言源程序(.C或.CPP)自動編譯為C55x的匯編語言源程序(.asm)第6頁,共59頁。匯編器 用來將匯編語言源文件(.asm)匯編成機(jī)器語言COFF目標(biāo)文件(.obj)鏈接器 將匯編生成的、可重新定位的COFF目標(biāo)模塊(.obj)組合成一個可執(zhí)行的COFF目標(biāo)模塊(.out)文檔管理器 允許用戶將一組文件(源文件或目標(biāo)文件)集中為一個文檔文件庫 第7頁,共59頁。建

4、庫實用程序 用來建立用戶自己使用的、并用C/C+語言編寫的支持運(yùn)行的庫函數(shù)十六進(jìn)制轉(zhuǎn)換程序 可以很方便地將COFF目標(biāo)文件(.out)轉(zhuǎn)換成TI、Intel、Motorola等公司的目標(biāo)文件格式(.hex)絕對制表程序 將鏈接后的目標(biāo)文件作為輸入,生成.abs輸出文件 交叉引用制表程序 利用目標(biāo)文件生成一個交叉引用清單,列出鏈接的源文件中的符號以及它們的定義和引用情況第8頁,共59頁。代碼調(diào)試工具 軟件仿真器(Simulator) 是一種模擬DSP芯片各種功能并在非實時條件下進(jìn)行軟件調(diào)試的調(diào)試工具,它不需目標(biāo)硬件支持,只需在計算機(jī)上運(yùn)行硬件仿真器(Emulator:XDS510、560) 可用

5、來進(jìn)行系統(tǒng)級的集成調(diào)試,是進(jìn)行DSP芯片軟硬件開發(fā)的最佳工具第9頁,共59頁。4.2 TMS320C55x目標(biāo)文件格式COFF文件的基本單元段匯編器對段的處理鏈接器對段的處理鏈接器對程序的重新定位COFF文件中的符號第10頁,共59頁。通用目標(biāo)文件格式 COFF,common object file format段(section)是COFF文件的基本單元。一個段是一個占據(jù)存儲器里連續(xù)地址的代碼或者數(shù)據(jù)塊,COFF目標(biāo)文件的每個段都是分開和不同的COFF目標(biāo)文件通常包括3個默認(rèn)段,即.text段,通常包含可執(zhí)行代碼.data段,通常包含初始化數(shù)據(jù).bss段,通常為未初始化變量保留存儲空間4.2

6、.1 COFF文件的基本單元段第11頁,共59頁。一些匯編偽指令可將代碼和數(shù)據(jù)的各個部分與相應(yīng)的段相聯(lián)系圖4-2目標(biāo)文件中的段與目標(biāo)存儲器的關(guān)系第12頁,共59頁。4.2.2 匯編器對段的處理匯編器通過段偽指令自動識別各個段,并將段名相同的語句匯編在一起匯編器有5條偽指令可以識別匯編語言程序的各個不同段.text、.data、.sect創(chuàng)建初始化段.bss和.usect創(chuàng)建未初始化段.sect與.usect創(chuàng)建自定義段和子段第13頁,共59頁。1.未初始化段未初始化段占用處理器存儲空間,常常分配到RAM未初始化段在目標(biāo)文件里沒有實際內(nèi)容,僅僅用于保留存儲空間,當(dāng)程序在運(yùn)行時用這些空間來創(chuàng)建和存

7、儲變量匯編命令.bss和.usect用來創(chuàng)建未初始化數(shù)據(jù)區(qū)域 .bss symbol,size,blocking flag,alignment flag .usect symbol”section name”,size,blocking flag,alignment flagsize:為對應(yīng)段開辟的存儲空間大小,單位為字blocking flag:可選參數(shù)。如果賦予一個非零值給該參數(shù),匯編器會連續(xù)分配字節(jié)空間,這些區(qū)域不會超出一頁邊界,除非該段大于一頁(在這種情況下,目標(biāo)文件會在頁邊界開始)alignment flag: 可選參數(shù)。如果賦予一個非零值給該參數(shù),該段會在一個長字邊界開始symbo

8、l:指向.bss或者.usect指令創(chuàng)建的段的第一個字,對應(yīng)該存儲空間的變量名。可被其他段引用,被聲明為一個全局符號section name:段名第14頁,共59頁。每次使用.bss指令,匯編器就在對應(yīng)的段開辟更多的存儲空間每次使用.usect指令,匯編器就在指定的自定義段開辟更多的存儲空間.bss和.usect指令不結(jié)束當(dāng)前段的匯編去開始一個新的段,它們僅僅讓匯編器暫時退出當(dāng)前段的編輯.bss和.usect指令可以出現(xiàn)在一個初始化段的任何地方而不會影響該段的內(nèi)容第15頁,共59頁。2.初始化段初始化段包含可執(zhí)行代碼或者初始化數(shù)據(jù);當(dāng)程序被裝載時,它們就被放到處理器存儲空間里每個初始化段獨(dú)立分

9、配空間,可以引用在其他段定義的標(biāo)識(symbol),鏈接器自動處理這些段間引用定義初始化段的指令:.text value.data value .sect ”section name”,valuevalue表示段指針(SPC)的開始值,只可以指定一次,必須在段第一次出現(xiàn)時指定。默認(rèn)SPC從0開始。第16頁,共59頁。3.自定義段.usect 創(chuàng)建像.bss段那樣的段,這些段為變量在RAM開辟存儲空間。.sect創(chuàng)建像.text和.data段那樣包含代碼和數(shù)據(jù)的段,可以創(chuàng)建可重分配地址的自定義段。用戶可以創(chuàng)建多達(dá)32767個自定義段,段名可以多至200個字符。每次使用這兩個指令可以用不同的sec

10、tion name來創(chuàng)建不同的段,如果用一個已經(jīng)使用的section name,那么匯編器將代碼和數(shù)據(jù)都匯編到同一個段。第17頁,共59頁。4.子段 子段是更大的段中的較小的段,鏈接器可以像段一樣操作它 子段讓用戶可以更好的控制存儲器映射 可以使用.sect或者.usect指令來創(chuàng)建子段,格式為: section name:subsection name 同一個段中的子段可以獨(dú)自分配地址,也可以一起分配存儲空間例,在段.text中創(chuàng)建一個_func子段如下: .sect “text:_func” 用戶可以為其單獨(dú)分配地址,也可以和.text段的其他部分一起分配地址第18頁,共59頁。5.段指針

11、匯編器為每個段分配一個程序指針,這些程序指針稱為段指針(SPCs)一個SPC指向一個段的當(dāng)前地址初始時,匯編器設(shè)置每個SPC為0當(dāng)匯編器在段中填充代碼和數(shù)據(jù)時,SPC跟著增加如果重新開始匯編一個段,匯編器會記得該段SPC的原來值,并繼續(xù)增加SPC第19頁,共59頁。例4-1,段偽指令的使用。 這是一個匯編語言程序經(jīng)匯編后生成的.lst文件,每行包含4個區(qū)域:Field 1: 源代碼行號Field 2: 段指針Field 3: 目標(biāo)代碼Field 4: 初始源代碼第20頁,共59頁。第21頁,共59頁。第22頁,共59頁。第23頁,共59頁。這個例子創(chuàng)建了5個段:.text段:包含17字節(jié)目標(biāo)代

12、碼.data 段:包含7字的目標(biāo)代碼vectors段:.sect指令創(chuàng)建的自定義段,包含兩個字的初始化數(shù)據(jù).bss段:在存儲器占用10個字newvars段:.usect指令創(chuàng)建的自定義段,在存儲器中占用8個字圖4-3 例4-1產(chǎn)生的目標(biāo)代碼第24頁,共59頁。4.2.3 鏈接器對段的處理鏈接器對段的處理:將一個或多個COFF目標(biāo)文件(.obj)中的各種段作為鏈接器的輸入段,經(jīng)鏈接后在一個可執(zhí)行的COFF模塊(.out)中建立各個輸出段為各個輸出段選定存儲器地址鏈接器有2條偽指令支持上述任務(wù)(通常放在鏈接器命令文件(.cmd)中執(zhí)行,是命令文件的主要內(nèi)容) :MEMORYSECTIONS 如果在

13、鏈接時不使用MEMORY和SECTIONS指令,則鏈接器使用目的處理器的默認(rèn)分配算法; 有時用戶不想使用默認(rèn)設(shè)置,要自己進(jìn)行存儲器映射,就要使用MEMORY和SECTIONS等鏈接指令。第25頁,共59頁。圖4-4 兩個文件的鏈接過程第26頁,共59頁。4.2.4 鏈接器對程序的重新定位1. 地址重新定位匯編器對每個段匯編時都是從0地址開始,所有需要重新定位的符號(標(biāo)號)在段內(nèi)都是相對于0地址的事實上所有段都不可能從存儲器中0地址單元開始,因此鏈接器必須對各個段進(jìn)行重新定位 重新定位的方法:將各個段配置到存儲器中,使每個段都有一個合適的起始地址將符號變量調(diào)整到相對于新的段地址的位置 將引用調(diào)整

14、到重新定位后的符號,這些符號反映了調(diào)整后的新符號值 第27頁,共59頁。2.運(yùn)行時間重新定位在實際運(yùn)行中,有時需要將代碼裝入存儲器的一個地方,而在另一個地方運(yùn)行。如:一些關(guān)鍵的執(zhí)行代碼必須裝在系統(tǒng)的ROM中,但運(yùn)行時希望在較快的RAM中進(jìn)行。利用SECTIONS偽指令選項可讓鏈接器對其定位2次,方法如下:使用load關(guān)鍵字設(shè)置裝入地址使用run關(guān)鍵字設(shè)置它的運(yùn)行地址第28頁,共59頁。4.2.5 COFF文件中的符號COFF文件中有一個符號表,主要用來存儲程序中有關(guān)符號的信息 鏈接器在執(zhí)行程序定位時,要使用符號表提供的信息,而調(diào)試工具也要使用該表來提供符號調(diào)試 第29頁,共59頁。1. 外部符

15、號在一個模塊中定義、而在另一個模塊中引用的符號可以用偽指令.def、.ref或.global來定義或引用 .def :定義符號。用來定義在當(dāng)前模塊中定義、可在別的模塊中引用的符號.ref :引用符號。在當(dāng)前模塊中引用在別的模塊中定義的符號.global:定義全局符號。可以是上面的任何一種情況第30頁,共59頁。例4-3,外部符號的使用。.def x ; 定義內(nèi)部符號x.ref y ; 引用外部符號,y在其它文件中已定義x: ADD #86,AC0,AC1 ; 定義x B y ; 引用y第31頁,共59頁。2. 符號表每當(dāng)遇到一個外部符號,無論是定義的還是引用的,匯編器都將在符號表中產(chǎn)生一個條目

16、匯編器還產(chǎn)生一個指到每段的專門符號,鏈接器使用這些符號將其他引用符號重新定位 第32頁,共59頁。4.5 TMS320C55x匯編語言源文件的書寫格式匯編語言源文件格式匯編語言中的常數(shù)與字符串匯編源程序中的符號匯編源程序中的表達(dá)式內(nèi)建數(shù)學(xué)函數(shù) TMS320C55x匯編語言源程序由源語句組成。這些語句可以包含匯編語言指令、匯編偽指令和注釋。 程序的編寫必須符合一定的格式,以便匯編器將源文件轉(zhuǎn)換成機(jī)器語言的目標(biāo)文件。第33頁,共59頁。4.5.1 匯編語言源文件格式匯編語言程序以.asm為擴(kuò)展名一條語句占源程序的一行總長度可以是源文件編輯器格式允許的長度語句的執(zhí)行部分必須限制在200個字符以內(nèi)第3

17、4頁,共59頁。1. 源語句格式助記符指令源語句的每一行通常包含4個部分:標(biāo)號區(qū)、助記符區(qū)、操作數(shù)區(qū)和注釋區(qū)助記符指令語法格式: 標(biāo)號 : 助記符 操作數(shù) ; 注釋例4-11,助記符指令源語句SYM1.set 2 ;SYM1 = 2Begin: MOV #SYM1,AR1;AR1=2.data.byte 016h; 初始化(016h)第35頁,共59頁。 語句的書寫規(guī)則:所有語句必須以標(biāo)號、空格、星號或分號(*或;)開始標(biāo)號是可選項,若使用標(biāo)號,則標(biāo)號必須從第一列開始 所有包含有匯編偽指令的語句必須在一行完成指定各部分之間必須用空格分開,Tab字符與空格等效注釋是可選項。如果注釋在第一列開始時

18、,前面必須標(biāo)上星號或分號,在其他列開始的注釋前面必須以分號開頭 如果源程序很長,需要書寫若干行,可以在前一行用反斜杠字符()結(jié)束,余下部分接著在下一行繼續(xù)書寫第36頁,共59頁。2. 標(biāo)號所有匯編指令和大多數(shù)匯編偽指令都可以選用標(biāo)號,供本程序或其它程序調(diào)用標(biāo)號必須從語句的第1列寫起,其后的冒號“:”可任選 標(biāo)號為任選項,若不使用標(biāo)號,則語句的第一列必須是空格、星號或分號 標(biāo)號是由字母、數(shù)字以及下劃線和美元符號等組成,最多可達(dá)32個字符標(biāo)號分大小寫,且第一個字符不能是數(shù)字在使用標(biāo)號時,標(biāo)號的值是段程序計數(shù)器SPC的當(dāng)前值第37頁,共59頁。3.助記符 助記符用來表示指令所完成的操作,可以是匯編語

19、言指令、匯編偽指令、宏指令。助記符指令:一般用大寫,不能從第一列開始 匯編偽指令:用來為程序提供數(shù)據(jù)和控制匯編進(jìn)程,以句號“.”開始,且用小寫宏指令:用來定義一段程序,以便宏調(diào)用來調(diào)用這段程序,以句號“.”開始,且用小寫 宏調(diào)用:用來調(diào)用由宏偽指令定義的程序段第38頁,共59頁。4.操作數(shù) 操作數(shù)是指令中參與操作的數(shù)值或匯編偽指令定義的內(nèi)容,緊跟在助記符的后面,由一個或多個空格分開操作數(shù)之間必須用逗號“,”分隔 操作數(shù)可以是常數(shù)、符號或表達(dá)式 操作數(shù)中的常數(shù)、符號或表達(dá)式可用來作為地址、立即數(shù)或間接地址第39頁,共59頁。作為操作數(shù)的前綴有三種情況:使用“#”號作為前綴,匯編器將操作數(shù)作為立即

20、數(shù)處理使用“*”符號作為前綴,匯編器將操作數(shù)作為間接地址,即把操作數(shù)的內(nèi)容作為地址使用“” 符號作為操作數(shù)的前綴。匯編器將操作數(shù)作為直接地址,即操作數(shù)由直接地址碼賦值第40頁,共59頁。5.注釋 用來說明指令功能,便于用戶閱讀。注釋可位于句首或句尾,位于句首時,以“*”或“;”開始,位于句尾時,以分號“;”開始注釋可單獨(dú)一行或數(shù)行注釋是任選項 第41頁,共59頁。4.6 TMS320C55x鏈接器 鏈接器的運(yùn)行 鏈接器命令文件的編寫與使用 MEMORY指令 SECTIONS指令第42頁,共59頁。4.6.1 概述TMS320C55x鏈接器有兩個功能強(qiáng)大的指令,即MEMORY和SECTIONS。

21、MEMORY指令允許用戶定義一個目標(biāo)系統(tǒng)的存儲器映射,可以命名存儲器的各個部分,并且指定開始地址和大小。SECTIONS指令告訴鏈接器合成輸入段為輸出段,并且告訴鏈接器把這些輸出段放在存儲器的某個位置。第43頁,共59頁。4.6.2 鏈接器的運(yùn)行鍵入命令:lnk55 鍵入命令: lnk55 a.obj b.obj -o link.out鍵入命令:lnk55 linker.cmd 1、C55x鏈接器的三種運(yùn)行方法:鏈接器會提示如下信息: Command files:(要求鍵入一個或多個命令文件) Object files .obj:(要求鍵入一個或多個需要鏈接的目標(biāo)文件) Output File

22、s a.out:(要求鍵入一個鏈接器所生成的輸出文件名)Options:(要求附加一個鏈接選項)在命令行中指定選項和文件名:目標(biāo)文件: a.obj、b.obj 命令選項: -o輸出文件: link.outlinker.cmd: 鏈接命令文件。 在執(zhí)行上述命令之前,需將鏈接的目標(biāo)文件、鏈接命令選項以及存儲器配置要求等編寫到鏈接命令文件linker.cmd中第44頁,共59頁。例4-18,鏈接器命令文件舉例。 將兩個目標(biāo)文件a.obj和b.obj進(jìn)行鏈接,生成一個映像文件prog.map和一個可執(zhí)行的輸出文件prog.out。a.obj /* 第一個輸入文件 */b.obj /*第二個輸入文件*/

23、o prog.out /* 產(chǎn)生.out文件選項 */m prog.map /*產(chǎn)生.map文件選項 */第45頁,共59頁。2.鏈接命令選項 選 項含 義-a生成一個絕對地址的、可執(zhí)行的輸出模塊。如果既不用-a選項,也不用-r選項,鏈接器就像規(guī)定-a選項那樣處理。-ar生成一個可重新定位、可執(zhí)行的目標(biāo)模塊。這里采用了-a和-r兩個選項(可以分開寫成-a -r,也可以連在一起 寫作-ar),與-a選項相比,-ar選項還在輸出文件中保留有重新定位信息。-c使用TMS320C55x C/C+編譯器的ROM自動初始化模型所定義的鏈接約定-cr使用TMS320C55x C/C+編譯器的RAM自動初始化

24、模型所定義的鏈接約定-e global_symbol定義一個全局符號,該符號指定輸出模塊的入口地址-f fill_vale對輸出模塊各段之間的空單元設(shè)置一個16位數(shù)值(fill_value),如果不用-f選項,則這些空單元都置0。 -h使所有全局符號均為靜態(tài)的第46頁,共59頁。選 項含 義-help 或?顯示鏈接器所有命令行選項列表heap size設(shè)置存儲器heap塊的大小(用于C/C+程序中動態(tài)存儲器分配),缺省值為2000字節(jié)-i dir更改搜索文檔庫算法,先到dir(目錄)中搜索。此選項必須出現(xiàn)在-l選項之前。 -l filename命名一個文檔庫文件作為鏈接器的輸入文件;filen

25、ame為文檔庫的某個文件名。此選項必須出現(xiàn)在-i選項之后。 -m filename生成一個.map映像文件,filename是映像文件的文件名。.map文件中說明存儲器配置、輸入、輸出段布局以及外部符號重定位之后的地址等。 -o filename 對可執(zhí)行輸出模塊命名。如果默認(rèn),則此文件名為a.out。 -r生成一個可重新定位的輸出模塊。當(dāng)利用-r選項且不用 -a選項時,鏈接器生成一個不可執(zhí)行的文件。 stack size設(shè)置主堆棧大小,缺省值為1000字節(jié)sysstack size設(shè)置次級堆棧大小,缺省值為1000字節(jié)第47頁,共59頁。在鏈接時,連接器通過鏈接命令選項控制鏈接操作。鏈接命令

26、選項可以放在命令行或命令文件中,所有選項前面必須加一短劃線“-”。除-l和-i選項外,其他選項的先后順序并不重要。選項之間可以用空格分開。最常用選項為-m和-o,分別表示輸出的地址分配表映像文件名和輸出可執(zhí)行文件名。第48頁,共59頁。4.6.3 鏈接器命令文件的編寫與使用鏈接命令文件用來為鏈接器提供鏈接信息,可將鏈接操作所需的信息放在一個文件中,這在多次使用同樣的鏈接信息時,可以方便地調(diào)用在鏈接命令文件中,可使用MEMORY和SECTIONS偽指令,為實際應(yīng)用指定存儲器結(jié)構(gòu)和地址的映射MEMORY:用來指定目標(biāo)存儲器結(jié)構(gòu)SECTIONS:用來控制段的構(gòu)成與地址分配 第49頁,共59頁。鏈接命

27、令文件為ASC文件,可包含以下內(nèi)容:輸入文件名,用來指定目標(biāo)文件、存檔庫或其他命令文件鏈接器選項,它們在命令文件中的使用方法與在命令行中相同鏈接偽指令MEMORY和SECTIONS,用來指定目標(biāo)存儲器結(jié)構(gòu)和地址分配賦值說明,用于給全局符號定義和賦值第50頁,共59頁。4.6.4 MEMORY指令MEMORY PAGE 0: name_1(attr):origin=constant,length=constant; PAGE n: name_n(attr):origin=constant,length=constant;PAGE: 用于識別一個存儲空間,可以使用多達(dá)255個頁,具體決定于配置情況

28、。 通常頁0對應(yīng)程序存儲空間,頁1對應(yīng)存儲器空間。每個頁面表現(xiàn)為一個完全獨(dú)立的地址空間。頁0上的已配置空間和頁1上的已配置空間可以交疊。Name:命名一個存儲空間范圍。名字可以是一到任意個字符,合法字符包括大小寫26個字母、$和_。存儲空間名字僅對鏈接器有用,在輸出文件或者符號里不再保留。在不同頁的存儲空間范圍可以有相同的名字,但在一頁內(nèi)不允許不同空間段有相同名字和交疊。Attr: 指定與命名的存儲空間范圍相聯(lián)系的14個屬性,使用時必須放在小括號里。 屬性限制輸出段在存儲空間的分配。如果不使用任何屬性,可以把輸出段分配到任何存儲空間范圍合法的屬性包括: R:表示該存儲空間可讀 W:表示該存儲空

29、間可寫 X:表示該存儲空間可以包含可執(zhí)行代碼 I:表示該存儲空間可以初始化Origin: 指定存儲段的開始地址。 值為24位常數(shù),可以是十進(jìn)制、八進(jìn)制或十六進(jìn)制,單位為字節(jié),也可以寫為org或者oLength: 指定存儲段的長度 值為24位常數(shù),可以是十進(jìn)制、八進(jìn)制或者十六進(jìn)制,單位為字節(jié),也可以寫len或者l第51頁,共59頁。4.6.5 SECTIONS指令SECTIONS name_1:property, property, property name_2:property, property, property name_3:property, property, property 以

30、name開始的一行定義了一個輸出段。段名name后是屬性列表,這些屬性定義了段的內(nèi)容和段如何分配到存儲器。 第52頁,共59頁。 一個段可能的屬性包括:Load allocation 定義在存儲器中段被裝載的位置: load=allocation 或 allocation 或 allocationRun allocation 定義在存儲器中段運(yùn)行的位置: run=allocation 或run allocationInput sections 定義組成輸出段的輸入段: 句法為 input_sectionsSection type定義特殊種類段的標(biāo)志: 句法為 type=COPY 或 type=DSECT 或 type=NOLOADFill value定義用來填充未初始化空間的值: 句法為fill=value或Name:=value第53頁,共59頁。例4-19,鏈接器的使用。a.obj b.obj /*輸入文件 */-o prog.out /* 用-o參數(shù)指定輸出文件名 */SECTIONS .text: load =ROM, run=800h .const: load=ROM .bss : load=RAM .vectors: load=FF80h .data: al

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論