《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 解決方案 > ARM匯編語(yǔ)言程序格式

ARM匯編語(yǔ)言程序格式

2017-06-22
關(guān)鍵詞: 匯編語(yǔ)言

以ADS編譯器下匯編語(yǔ)言程序設(shè)計(jì)的格式為例,來(lái)介紹ARM匯編語(yǔ)言程序的基本格式,,并詳細(xì)描述了ARM匯編語(yǔ)言的幾個(gè)重點(diǎn),。

ARM匯編語(yǔ)言是以段為單位來(lái)組織源文件的。段是相當(dāng)獨(dú)立,、具有特定名稱,、不可分割的指令或數(shù)據(jù)序列。段又可分為代碼段和數(shù)據(jù)段:代碼段存放執(zhí)行代碼,;數(shù)據(jù)段存放代碼運(yùn)行時(shí)需要用的數(shù)據(jù)。一個(gè)ARM源程序至少需要一個(gè)代碼段,,大的程序可包含多個(gè)代碼段和數(shù)據(jù)段,。

ARM匯編語(yǔ)言源程序經(jīng)過(guò)匯編處理后生成一個(gè)可執(zhí)行的映像文件,它通常包括3部分:

一個(gè)或多個(gè)代碼段,。代碼段通常是只讀的,。

0或多個(gè)包含初始值的數(shù)據(jù)段,。這些數(shù)據(jù)段通常是可讀/寫(xiě)的。

0或多個(gè)不包含初始值的數(shù)據(jù)段,。這些數(shù)據(jù)段被初始化為0,,通常是可讀/寫(xiě)的。

鏈接器根據(jù)一定的規(guī)則將各個(gè)段安排到內(nèi)存中的相應(yīng)位置,。源程序中段之間的相鄰關(guān)系與執(zhí)行的映像文件中段之間的相鄰關(guān)系并不一定相同,。

下面通過(guò)一個(gè)簡(jiǎn)單的例子,說(shuō)明ARM匯編語(yǔ)言源程序的基本結(jié)構(gòu),。

AREA     EXAMPLE,CODE,READONLY

ENTRY

Start

       MOV      R0,,#10

       MOV      R1,#3

       MOV      R0,,R0,,R1

END

在ARM匯編語(yǔ)言源程序中,使用偽操作AREA定義一個(gè)段,。AREA偽操作表示了一個(gè)段的開(kāi)始,,同時(shí)定義了這個(gè)段的名稱及相關(guān)屬性。在本例中定義了一個(gè)只讀的代碼段,,其名稱為EXAMPLE,。

ENTRY偽操作標(biāo)識(shí)了程序執(zhí)行的第一條指令,即程序的入口點(diǎn),。一個(gè)ARM程序中可以有多個(gè)ENTRY,,至少要有一個(gè)ENTRY。初始化部分的代碼及異常中斷處理程序中都包含了ENTRY,。如果程序包含了C代碼,,則C語(yǔ)言庫(kù)文件的初始化部分也包含了ENTRY.

END偽操作告訴匯編編譯器源文件的結(jié)束。每一個(gè)匯編模塊必須包含一個(gè)END偽操作,,只是本模塊的結(jié)束,。

本程序的程序體部分實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的加法運(yùn)算。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。