計算機程式 = 代碼 + 資料
什么是代碼?
代碼就是函式,函式就是代碼,除此無他
什么是資料?
資料我們定義全域變數,區域變數等,只要是被代碼處理的東西都稱為資料。
代碼與資料是唇齒相依的關系,共同構成了計算機程式,沒有資料的計算機程式幾乎不存在的,即使存在,實作的功能也是微乎其微的,在此可能有疑問,當我printf(),列印helloworld時,并沒有定義任何的變數,在printf()函式中,功能實作主要依賴于vsprintf函式,其中定義了很多的變數,就是所謂的資料,我們沒有定義變數時,并不代表它不存在于我們程式中。當我們按照一定的規則將資料放入到程式中就構成了計算機程式
計算機程式運行到底是為了什么?
計算機程式運行的實質:代碼被相繼執行的程序
計算機程式運行是為得到資料,得到計算機所能識別的二進制資料,我們暫且稱為目標資料,原始資料是我們待處理的資料,原始資料經過代碼處理之后,得到計算所能識別的二進制資料,經過計算機大腦中央處理器cpu思考完畢以后,對二進制資料行重新組合,得到類似于原始資料一樣的東西,展示給我們,計算機程式對資料的處理,說到底是一種量的改變,而沒有任何質的變化,類似于,資料是水和面粉,代碼就是加工面條的機器,水和面粉經過加工面條的機器處理完畢之后,就得到我們的目標產物面條。
計算機程式運行似乎與記憶體沒有任何關系?
其實不然,記憶體是所有程式的立錐之地,沒有記憶體,你寫的程式只能躺在硬碟中,記憶體是程式的伯樂,程式是記憶體的千里馬,我們知道世有伯樂然后有千里馬,沒有記憶體這塊伯樂,程式這只千里馬只能死在硬碟中。作業系統亦不能幸免于難,無論是linux,windows,mac,android,安卓本是linux內核裁剪移植得到,都是運行于記憶體之上,手機啟動靠的是ROM(norflash)norflash的特性:上電以后不用初始化,直接原地運行預置啟動引導程式,做簡單的初始化,這時會初始化RAM(記憶體),ROM中預置啟動引導程式,加載BootLoader到記憶體中,運行,然后由bootLoder啟動linux內核....,電腦啟動靠BIOS,其中固化啟動引導代碼,做簡單初始化,并且出使化記憶體存,當初始化完畢之后,掛載系統盤,加載作業系統程式到記憶體中運行,至此,啟動程序完畢。最好的例證就是,8G的記憶體,可用用記憶體永遠沒有8G,原因是,作業系統程式運行于記憶體之上。被作業系統所征用的記憶體,無權訪問,更不用說釋放,作業系統是偉大的管理者,管理所有可用的資源,即使是作業系統也要依附于記憶體而生存,你覺得計算機程式可能擺脫記憶體的而獨立存在嗎?顯然不現實,你可能會說某些單片機,但是某些單片機實作的功能與計算機相比是不是有那么一點渺小,沒有資料的程式實作的功能是微乎其微的,不需要記憶體的程式亦如此,記憶體對于計算機程式來說是立錐之地。
uj5u.com熱心網友回復:
說的比較清楚,初學者可以看看轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/70342.html
標籤:嵌入開發(WinCE)
上一篇:單片機
下一篇:請教:如何開發云游戲
