coff文件專業(yè)知識講座_第1頁
coff文件專業(yè)知識講座_第2頁
coff文件專業(yè)知識講座_第3頁
coff文件專業(yè)知識講座_第4頁
coff文件專業(yè)知識講座_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

COFF一般概念

匯編器和鏈接器生成目標(biāo)文獻(xiàn),是一種能夠由’C54x器件執(zhí)行文獻(xiàn)。這些目標(biāo)文獻(xiàn)格式稱之為公共目標(biāo)文獻(xiàn)格式(COFF)。

在編寫匯編語言程序時,COFF采取代碼段和數(shù)據(jù)段形式,方便于模塊化編程,使編程和管理變得愈加方便。

這些代碼段和數(shù)據(jù)段簡稱為段。匯編器和鏈接器提供某些偽指令來建立和管理多種各樣段。第1頁COFF文獻(xiàn)基本單元

段(sections)

是COFF文獻(xiàn)中最主要概念。每個目標(biāo)文獻(xiàn)都提成若干段。

段——是存放器中占據(jù)相鄰空間代碼或數(shù)據(jù)塊。一種目標(biāo)文獻(xiàn)中每個段都是分開和各不相同。第2頁COFF目標(biāo)文獻(xiàn)中段有兩種基本類型。初始化段初始化段中包括有數(shù)據(jù)或程序代碼。主要有:.text段——已初始化段;.data段——已初始化段;.sect段——已初始化段,由匯編器偽指令建立自定義段。未初始化段在存放空間中為未初始化數(shù)據(jù)保留存放空間。包括:.bss段——未初始化段;.usect段——未初始化段,由匯編命令建立命名段(自定義段)。第3頁

段與目標(biāo)存放器對應(yīng)關(guān)系

匯編器任務(wù):在匯編過程中,根據(jù)匯編命令用合適段將各部分程序代碼和數(shù)據(jù)連在一起,組成目標(biāo)文獻(xiàn)。

鏈接器任務(wù):就是分派存放單元,將目標(biāo)文獻(xiàn)中段重新定位到目標(biāo)系統(tǒng)存放器中,這一過程稱為定位或分派。

第4頁目標(biāo)文獻(xiàn)中段與目標(biāo)存放器之間關(guān)系

目標(biāo)文獻(xiàn)目標(biāo)存放器.bss.data.textRAME2PROMROM第5頁

鏈接器對段處理在命令文獻(xiàn)中用MEMORY和SECTIONS偽指令定義存放器和配備段地址。

MEMORY偽指令——用來定義目標(biāo)系統(tǒng)存放器配備空間,包括對存放器各部分命名,以及要求它們起始地址和長度。

SECTIONS偽指令——用來指定鏈接器將輸入段組合成輸出段方式,以及輸出段在存放器中位置,也可用于指定子段。

若未使用偽指令,則鏈接器將使用目標(biāo)處理器默認(rèn)辦法將段放入存放空間。

第6頁MEMORY指令

MEMORY指令用來要求目標(biāo)存放器構(gòu)造。在實際應(yīng)用中,目標(biāo)系統(tǒng)所配備存放器是各不相同,通過MEMORY指令,能夠進(jìn)行多種各樣存放器配備。

MEMORY指令句法:

MEMORY{PAGE0:name1[(attr)]:origin=constant,length=constant;PAGEn:namen[(attr)]:origin=constant,length=constant;}指令字存放區(qū)間說明語句書寫方式:①由大寫MEMORY指令字開始;

②由大括號括起來存放器區(qū)間說明。存放區(qū)間:存放頁面區(qū)間名稱區(qū)間屬性起始地址區(qū)間長度第7頁P(yáng)AGE:

指定存放器空間頁面,最多為255頁,取決于目標(biāo)存放器配備。

每一種PAGE代表一種完全獨立地址空間。

一般,PAGE0用于程序存放器;

PAGE1用于數(shù)據(jù)存放器。

若沒有要求PAGE,則鏈接器默以為PAGE0。name:

存放器區(qū)間名稱??捎捎米帜?、$、.、_等組成。

存放器區(qū)間為內(nèi)部記號,因此不需要保存在輸出文獻(xiàn)或者符號表中。

不一樣PAGE上存放器區(qū)間能夠取相同名字,但在同一PAGE內(nèi)名字不能相同,且不許重合配備。

存放區(qū)間說明語句:第8頁origin:用來指定存放區(qū)間起始地址,可簡寫為org或o。其值以字為單位,能夠用十進(jìn)制、八進(jìn)制或十六進(jìn)制數(shù)表達(dá)。Length:用來指定存放器空間長度,可簡寫為len或l,其值以字為單位,能夠用十進(jìn)制、八進(jìn)制或十六進(jìn)制數(shù)表達(dá)。第9頁SECTIONS指令用來控制段組成與地址分派。指令功能:

①說明如何將輸入段組合成輸出段;

在可執(zhí)行程序中定義輸出段;③

要求輸出段在存放器中寄存位置;④

允許重新命名輸出段。

SECTIONS指令語法

第10頁SECTIONS指令句法:

SECTIONS{name:[property,property,property,…]name:[property,property,property,…]name:[property,property,property,…]}指令字輸出段說明語句

段名:定義輸出段名稱。

屬性:定義該段內(nèi)容和存放器分派。段名屬性屬性屬性第11頁

MEMORY和SECTIONS命令默認(rèn)使用

假如沒有利用MEMORY和SECTIONS命令,鏈接器就按默認(rèn)算法來定位輸出段。

將所有.text輸入段鏈接成一種.text輸出段,并配備到PAGE

0上存放器;

將所有.data輸入段組合成.data輸出段,定位到PAGE

0上存放器;

第12頁所有.bss輸入段則組合成一個.bss輸出段,并由鏈接器定位到配備為PAGE1上存放器。如果輸入文獻(xiàn)中包括有已初始化命名段,則鏈接器將它們定位到程序存放器,緊隨.data段之后。如果輸入文獻(xiàn)中包括有未初始化命名段,則鏈接器將它們定位到數(shù)據(jù)存放器,并緊隨.bss段之后。第13頁

MEMORY{PAGE0:PROG:origin=0x0080,length=0xFF00PAGE1:DATA:origin=0x0080,length

溫馨提示

  • 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

提交評論