編寫的c程式是怎麼執行的

2021-06-13 14:51:26 字數 1217 閱讀 5437

我是乙個學物理的學生,有個不是很好的習慣,什麼東西不把它的前世今生搞明白了就特別難受,接觸計算機語言的時候,看著自己編的

c語言**執行了,但是總是有種蒙在鼓裡的感覺,計算機這個東東是怎麼執行的我的指令,於是我就開始搜尋一些資料,從微機原理開始,一步步,雖然還有些地方不懂,但是大體可以搞明白了,

我向來喜歡用大家熟悉的模型來解釋專業術語,我思考了好多的模型,感覺企業的生產很像這個計算機的執行過程。就讓我們看看這個計算機怎麼執行的命令。

馮諾依曼當時二十世紀四五十年代的時候搞出來的計算機的模型,我感覺這個傢伙應該是按照當時的小作坊模型來思考的計算機模型,我要完成一輛車的生產,那麼我先要設計圖紙,從車的外形結構、內部的布置,等等,這些就好比是我們的寫的

c程式,

c程式僅僅是一些符號,靠這些生產不了汽車,必須按照這些符號找到他的材料(編譯),當時生產速度很慢,所以把流水線和材料都放一塊了,這裡的生產速度就是

cpu的頻率,流水線就是**區(指令區),物料區就是資料區,物料區也分為工人(這裡的工人當做物料),工具(鉗子之類的),這裡的工人就是資料段(靜態變數,全域性變數),這**段必須在整個流水線一直存在,材料就是一些隨用隨拿的東西,就是堆疊段,它的特性就是動態的隨用隨拿,不會一直放在流水線上,而且中間產生的零件放在這裡,便於後面用,這大概就是馮諾依曼的機構,後來隨著生產速度越來越快,車間就那麼大,這裡的車間就是整個計算機的記憶體,你把物料什麼跟工人放在一塊,太亂了,造成了工人跟物料的衝突,就是取**和資料的衝突,這時你可能想到了,靠,為什麼不把工人跟物料分開,建乙個物料儲存車間,和乙個生產車間,然後用乙個小型的車負責中間把物料及時的送到車間生產,聰明你!這就是哈弗結構,哈弗結構把**段和資料段分開了,但是問題來了,生產線越來越快,我們的小車送的也是不給力啊,再說送的時候也是很費勁的,同樣浪費時間,這就是資料匯流排跟指令匯流排分開的困然,這就是好比我們控制乙隻手大腦還行,要是控制兩隻手分別幹不同的事我們的大腦就反應不過來了,這裡的乙隻手是資料匯流排,乙隻手為指令匯流排,你也可能會說,這有什麼麻煩的,把車間整的很大,多用工人不就可以了,可是車間整大花很多的錢啊,想想多了工人的開銷,新的流水線,沒辦法,到現在大部分的電腦還是老馮的結構,但是我們在車間內部還是用了小車,這個小車就是通常的一級二級快取,這個小快取就是哈弗結構。

特別說明:可能某些地方我理解的不好,暫存器沒有寫進去,大家有什麼好的可以繼續新增。

C 類是怎麼執行的?

c 類是怎麼執行的?public class person 不寫,預設也有個空的 public person 不寫,預設也有個空的 public string name 屬性,只對本類開放寫許可權 這樣乙個人就出現了,有兩個構造方法 第乙個是類的建構函式,第二個是例項構造方法,第乙個只對本類公開,它...

Struts是怎麼執行的?

然後actionservlet根據struts config.xml的配置資訊,呼叫loginaction物件去處理這個請求,在此之前,它會將頁面表單的請求資料封裝到loginactionform物件中,並傳遞給loginaction loginaction返回乙個actionforward物件,包...

hello程式的編寫與執行

在unix系統中可用gcc編譯器對原始檔進行編譯。命令如下 unix gcc o hello.c unix 為shell命令列直譯器的命令提示符,shell命令列直譯器會根據我們輸入的命令呼叫對應的程式,因此輸入gcc之後就是呼叫編譯器對原始檔進行編譯鏈結並生成可執行檔案,儲存在磁碟上。1 2兩步中...