匯編語言的程序結構
發布時間:2008/12/23 0:00:00 訪問次數:653
在arm(thumb)匯編語言程序中,以程序段為單位組織代碼。段是相對獨立的指令或數據序列,具有特定的名稱。段可以分為代碼段和數據段,代碼段的內容為執行代碼,數據段存放代碼運行時需要用到的數據。一個匯編程序至少應該有一個代碼段,當程序較長時,可以分割為多個代碼段和數據段,多個段在程序編譯鏈接時最終形成一個可執行的映像文件。
可執行映像文件通常由以下幾部分構成。
·一個或多個代碼段,代碼段的屬性為只讀。
·零個或多個包含初始化數據的數據段,數據段的屬性為可讀寫。
·零個或多個不包含初始化數據的數據段,數據段的屬性為可讀寫。
鏈接器根據系統默認或用戶設定的規則,將各個段安排在存儲器中的相應位置。因此源程序中段之間的相對位置與可執行的映像文件中段的相對位置一般不會相同。
以下是一個匯編語言源程序的基本結構。
在匯編語言程序中,用area偽指令定義一個段,并說明所定義段的相關屬性,本例定義一個名為init的代碼段,屬性為只讀。entry偽指令標識程序的入口點,接下來為指令序列,程序的末尾為end偽指令,該偽指令告訴編譯器源文件結束。每一個匯編程序段都必須有一條end偽指令,指示代碼段結束。
歡迎轉載,信息來自維庫電子市場網(www.dzsc.com)
在arm(thumb)匯編語言程序中,以程序段為單位組織代碼。段是相對獨立的指令或數據序列,具有特定的名稱。段可以分為代碼段和數據段,代碼段的內容為執行代碼,數據段存放代碼運行時需要用到的數據。一個匯編程序至少應該有一個代碼段,當程序較長時,可以分割為多個代碼段和數據段,多個段在程序編譯鏈接時最終形成一個可執行的映像文件。
可執行映像文件通常由以下幾部分構成。
·一個或多個代碼段,代碼段的屬性為只讀。
·零個或多個包含初始化數據的數據段,數據段的屬性為可讀寫。
·零個或多個不包含初始化數據的數據段,數據段的屬性為可讀寫。
鏈接器根據系統默認或用戶設定的規則,將各個段安排在存儲器中的相應位置。因此源程序中段之間的相對位置與可執行的映像文件中段的相對位置一般不會相同。
以下是一個匯編語言源程序的基本結構。
在匯編語言程序中,用area偽指令定義一個段,并說明所定義段的相關屬性,本例定義一個名為init的代碼段,屬性為只讀。entry偽指令標識程序的入口點,接下來為指令序列,程序的末尾為end偽指令,該偽指令告訴編譯器源文件結束。每一個匯編程序段都必須有一條end偽指令,指示代碼段結束。
歡迎轉載,信息來自維庫電子市場網(www.dzsc.com)
上一篇:在c/c++代碼中嵌入匯編指令