日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARM汇编语言中的程序结构

發布時間:2025/6/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARM汇编语言中的程序结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

— 一個或多個代碼段,代碼段的屬性為只讀。

— 零個或多個包含初始化數據的數據段,數據段的屬性為可讀寫。

— 零個或多個不包含初始化數據的數據段,數據段的屬性為可讀寫。

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

以下是一個匯編語言源程序的基本結構:

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

在匯編語言程序中,用 AREA 偽指令定義一個段,并說明所定義段的相關屬性,本例定義一個 名為 Init 的代碼段,屬性為只讀。 ENTRY 偽指令標識程序的入口點,接下來為指令序列,程序的末尾為 END 偽指令,該偽指令告訴編譯器源文件的結束,每一個匯編程序段都必須有一條 END 偽指令,指示代碼段的結束。

?

ARM匯編語言中的子程序調用

?

??
??

在 ARM 匯編語言程序中,子程序的調用一般是通過 BL 指令來實現的。在程序中,使用指令:

BL 子程序名

即可完成子程序的調用。

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

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

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

總結

以上是生活随笔為你收集整理的ARM汇编语言中的程序结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。