深夜美女视频一区二区_91sao在线看片水片_亚洲日韩国语_精品中文字幕久久边人妻_高潮喷水香蕉视频色_白洁国产剧情Av手机在线_国产精品情侣呻吟_天空影院播放免费完整版视频_少妇高潮惨叫喷水在线观看_公交车大龟廷进我身体里

Hi,您好,歡迎來到西安盛圖軟件科技有限公司!

知識分享|如何理解程序的內部結構

發(fā)布時間:2023-07-28 14:00:11

如何理解程序的內部結構

在很多時候,程序需要一些輔助的工具,需要一些平臺支持,使得一個靜態(tài)的、死的軟件程序變成活動的、可以運行起來的程序,這就是常說的進程。在系統(tǒng)程序中常常會碰到一個可以運行其他程序的程序,接下來我們將深入討論,如何理解程序的內部結構。


一、為什么要了解程序的內部結構

image.png

對于嵌人式軟件程序員而言,深入掌握程序的內部結構,對于程序設計是非常重要的。

由于所開發(fā)的程序需要“燒”到 Flash,在運行時需要搬遷到內存,甚至在運行的過程中需要移動位置、被壓縮、解壓縮以及把一個靜態(tài)存放在磁盤的程序加載到內存當中,并別將它們的代碼段,數據段復制到合適的位置。

必要的時候還可能要與一個動態(tài)庫相連接,從而解析運行時才能確定的一些符號地址。由此看來,深人了解程序,有助于對所設計的系統(tǒng)更精確地控制。

那么,程序是什么?一個程序由哪幾部分組成?這個看似極其簡單的問題,要想真正把它弄清楚,卻不那么簡單。


二、程序=代碼+數據

image.png

首先,無論是應用程序,還是系統(tǒng)程序,它們都是程序,也就是說,它們都是一些指令代碼與指令所處理的數據的集合,即

程序=(代碼+數據)

代碼是按照程序員的設計意圖設計出來供 CPU 執(zhí)行的指令序列。而數據可以看成是代碼的處理對象、工作狀態(tài)等的集合。所以一個程序由最基本的代碼段數據段組成。

代碼與數據在機器中都表現(xiàn)為0,1的二進制序列,在系統(tǒng)程序中代碼和數據并不嚴格區(qū)分,因為作為代碼的機器表示,本身就是數據序列。

所有的代碼和數據在初始時都存于 Flash或是別的存儲設備中,例如:EEPROM,CF卡,SD卡,或是移動硬盤。代碼都要被復制到內存或者直接讀到 CPU的指令隊列之后才能運行。


三、堆棧段

image.png

一個程序除了代碼段和數據段之外為了儲存臨時數據變量(包括返回指針以及程序狀態(tài)),一個完整的程序還必須有堆棧段代碼段、數據段和堆棧段是一個程序的基本組成部分

實際過程中,數據段有許多的變種,例如常量數據,未初始化數據,臨時變量數據,動態(tài)申請數據等,因而出現(xiàn)了一些特殊的數據段。這些數據段有些是在程序生成的過程中靜態(tài)確立的,而有一些卻是程序在執(zhí)行過程中靜態(tài)或動態(tài)分配并初始化的物理空間這就是常見的 BSS段,以及堆(HEAP)。

之所以有這些變種有2個主要意圖:

01-讓系統(tǒng)中的其他程序實體共享有限的物理內存資源。

02-節(jié)省可執(zhí)行程序在磁盤(或別的存儲體)中的靜態(tài)存儲空間即目標程序的大小。

圖片


上一篇:嵌入式實時操作系統(tǒng)
下一篇:干貨分享|關于Linux與和Windows的區(qū)別

歡迎登錄盛圖科技

歡迎注冊盛圖科技

已有賬號,立即登錄