摘要:計(jì)算機(jī)的內(nèi)存,計(jì)算機(jī)中所有程序的運(yùn)行都在內(nèi)存中進(jìn)行,也就是你電腦的內(nèi)存條中運(yùn)行的。計(jì)算機(jī)內(nèi)存也被稱(chēng)為隨機(jī)訪問(wèn)存儲(chǔ)器,Random Access Memory,簡(jiǎn)稱(chēng)RAM。
內(nèi)存一般用于存放程序指令和運(yùn)算數(shù)據(jù),幫助CPU與硬盤(pán)等外部存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)的交換,內(nèi)存只能臨時(shí)存放程序的指令和數(shù)據(jù),當(dāng)電腦關(guān)閉之后,內(nèi)存當(dāng)中的數(shù)據(jù)就會(huì)隨之消失。計(jì)算機(jī)當(dāng)中的程序指令,或者是操作數(shù)據(jù)都是以二進(jìn)制的形式在內(nèi)存當(dāng)中存儲(chǔ)和計(jì)算的。
我們可以將內(nèi)存看作是排成一排的方格,每個(gè)方格可以存儲(chǔ)0或者是1這兩種數(shù)字。
一個(gè)方格也被稱(chēng)為一個(gè)比特位,將8個(gè)連續(xù)的比特分為一組,代表1個(gè)字節(jié)byte。如果將內(nèi)存比作是一棟大樓的話,那么字節(jié)就是大樓當(dāng)中的房間,而每個(gè)房間都對(duì)應(yīng)一個(gè)唯一的門(mén)牌,所以每個(gè)字節(jié)都有一個(gè)唯一的地址。那么這些地址也被稱(chēng)為內(nèi)存地址。通過(guò)內(nèi)存地址,我們可以訪問(wèn)內(nèi)存當(dāng)中的每一個(gè)字節(jié)。內(nèi)存地址一般用16進(jìn)制表示,16進(jìn)制表示的數(shù)字用0X開(kāi)頭,假如說(shuō)內(nèi)存地址從八個(gè)0到八個(gè)F,那個(gè)內(nèi)存的大小就是16的八次方,也就是2^32次方個(gè)字節(jié)=4GB大小。
使用Windows當(dāng)中的DEBUG程序,可以模擬并且查看CPU、寄存器,還有內(nèi)存當(dāng)中的相關(guān)數(shù)據(jù),這里我們使用DEBUG命令主要是為了更加直觀的觀察和理解內(nèi)存,觀察到的數(shù)據(jù)并不是當(dāng)前內(nèi)存當(dāng)中真實(shí)的數(shù)據(jù)。那么我們除了使用字節(jié)為單位來(lái)表示內(nèi)存的大小,還可以使用千字節(jié)KB,兆字節(jié)MB,還有千兆字節(jié)GB來(lái)表示,一般現(xiàn)在的計(jì)算機(jī)都是以GB來(lái)形容內(nèi)存的大小,其中1KB等于1024字節(jié),1MB等于1024KB,1GB等于1024MB,那么2^23方字節(jié)就是4GB了。
那么程序到底是如何運(yùn)行的呢?開(kāi)發(fā)的軟件放在我們電腦的硬盤(pán)上,比如電腦上我們經(jīng)常使用的QQ軟件,點(diǎn)擊QQ圖標(biāo)—》右擊—》屬性??梢钥吹絈Q是一個(gè).exe可執(zhí)行文件。當(dāng)我們雙擊QQ時(shí),QQ程序就會(huì)運(yùn)行起來(lái)。程序在運(yùn)行過(guò)程中要先放到從內(nèi)存中。就以這個(gè)QQ為例,QQ.exe文件肯定是用某一個(gè)編譯器生成的文件。通過(guò)在編譯器中寫(xiě)好代碼,然后編譯、連接,將我們學(xué)過(guò)的函數(shù)啊、代碼啊、變量啊等等轉(zhuǎn)換成電腦CPU可識(shí)別的010101數(shù)字。也就是我們寫(xiě)的代碼包含了大量的CPU能識(shí)別的機(jī)器代碼、CPU指令。生成的.exe文件里面就是0101010101
CPU讀取內(nèi)存中的數(shù)據(jù),讀取指令控制執(zhí)行相應(yīng)的操作。在CPU內(nèi)部有寄存器、運(yùn)算器和控制器。因?yàn)榧拇嫫骶驮趦?nèi)部,所以說(shuō)內(nèi)存中需要計(jì)算的數(shù)據(jù)首先要將其拿到寄存器中進(jìn)行運(yùn)算,將算好的數(shù)據(jù)送回到內(nèi)存中去。通常CPU會(huì)先將內(nèi)存中的數(shù)據(jù)存儲(chǔ)到寄存器中,然后再對(duì)寄存器中的數(shù)據(jù)進(jìn)行運(yùn)算。假設(shè)內(nèi)存中有塊紅色內(nèi)存空間的值是3,現(xiàn)在想把它的值加1,并將結(jié)果存儲(chǔ)到藍(lán)色內(nèi)存空間。1、CPU首先會(huì)將紅色內(nèi)存空間的值放到EAX寄存器中:mov eax,紅色內(nèi)存空間
2、然后讓EAX寄存器與1相加:add eax,1
3、最后將值賦值給內(nèi)存空間:mov 藍(lán)色內(nèi)存空間,eax
原文標(biāo)題:程序是如何運(yùn)行的呢?
文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7430瀏覽量
163517 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7360瀏覽量
87633 -
程序
+關(guān)注
關(guān)注
116文章
3756瀏覽量
80754
原文標(biāo)題:程序是如何運(yùn)行的呢?
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論