<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM匯編程序設計之:匯編語(yǔ)言文件格式

ARM匯編程序設計之:匯編語(yǔ)言文件格式

作者: 時(shí)間:2013-09-30 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/257046.htm

10.3.6匯編語(yǔ)言的程序結構

(Thumb)匯編語(yǔ)言程序中以程序段為單位組織代碼。段是相對獨立的指令或數據序列,具有特定的名稱(chēng)。段可以分為代碼段(CodeSection)和數據段(DataSection),代碼段的內容為執行代碼,數據段存放代碼運行時(shí)需要用到的數據。一個(gè)至少應該有一個(gè)代碼段,當程序較長(cháng)時(shí),可以分割為多個(gè)代碼段和數據段,多個(gè)段在程序編譯鏈接時(shí)最終形成一個(gè)可執行的映像文件。

可執行映像文件通常由以下幾部分構成。

·一個(gè)或多個(gè)代碼段,代碼段的屬性為只讀。

·零個(gè)或多個(gè)數據段,數據段的屬性為可讀寫(xiě)。數據段可是被初始化的數據段或沒(méi)有被初始化的數據段(ZI,zeroinitialized)。

鏈接器根據系統默認或用戶(hù)設定的規則,將各個(gè)段安排在存儲器中的相應位置。因此源程序中段之間的相對位置與可執行的映像文件中段的相對位置一般不會(huì )相同。

以下是一個(gè)匯編語(yǔ)言源程序的基本結構。

AREA Init,CODE,READONLY

ENTRY

Start

LDR R0,=0x3FF5000

LDR R1,0xFF

STR R1,[R0]

LDR R0,=0x3FF5008

LDR R1,0x01

STR R1,[R0]

……

END

在匯編語(yǔ)言程序中,用AREA偽操作定義一個(gè)段,并說(shuō)明所定義段的相關(guān)屬性,本例定義一個(gè)名為Init的代碼段,屬性為只讀。ENTRY偽操作標識程序的入口點(diǎn),接下來(lái)為指令序列,程序的末尾為END偽指令,該偽操作告訴編譯器源文件的結束,每一個(gè)段都必須有一條END偽操作,指示代碼段的結束。

10.3.7匯編語(yǔ)言子程序調用

匯編語(yǔ)言程序中,子程序的調用一般是通過(guò)BL指令來(lái)實(shí)現的。在程序中,使用指令“BL子程序”名即可完成子程序的調用。

該指令在執行時(shí)完成如下操作:將子程序的返回地址存放在連接寄存器LR中,同時(shí)將程序計數器PC指向子程序的入口點(diǎn)。當子程序執行完畢需要返回調用處時(shí),只需要將存放在LR中的返回地址重新拷貝給程序計數器PC即可。在調用子程序的同時(shí),也可以完成參數的傳遞和從子程序返回運算的結果,通??梢允褂眉拇嫫鱎0~R3完成。

注意

不同編譯器編譯的代碼間的相互調用,要遵循AAPCS(Architecture)。詳見(jiàn)ARM編譯工具手冊。

以下是使用BL指令調用子程序的匯編語(yǔ)言源程序的基本結構:

AREA Init,CODE,READONLY

ENTRY

Start

LDR R0,=0x3FF5000

LDR R1,0xFF

STR R1,[R0]

LDR R0,=0x3FF5008

LDR R1,0x01

STR R1,[R0]

BL PRINT_TEXT

……

PRINT_TEXT

……

MOV PC,BL

……

END


上一頁(yè) 1 2 3 4 5 6 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>