很高興能夠看到和回答這個問題,作為一個科技愛好者,我每天都在關(guān)注科技發(fā)展方面的消息,每天收獲也蠻多的。
首先,我覺得這是一個非常好的問題,也是很多小白用戶困惑之處,下面我將根據(jù)自己的經(jīng)驗認(rèn)真回答這個問題。
馮·諾依曼體系結(jié)構(gòu)是現(xiàn)代計算機的基礎(chǔ)。
在該系統(tǒng)的結(jié)構(gòu)中,程序和數(shù)據(jù)必須存儲在同一房間內(nèi),并且指令和數(shù)據(jù)必須通過與重復(fù)執(zhí)行的總線相同的總線進行傳輸。根據(jù)馮·諾依曼(von Neumann)系統(tǒng),CPU分為五個階段:選擇命令的階段,解碼指令的階段,指令的實施階段,訪問次數(shù)和結(jié)果記錄。
接收命令(IF,指令提?。?/p>
即將命令從主存儲器接收到指令寄存器的過程。程序計數(shù)器中的值,用于指示當(dāng)前命令在主存儲庫中的位置。刪除命令后,個人計算機上的值會根據(jù)命令的字長自動增加。
在解碼指令的階段(ID,指令解碼):
在提取指令之后,根據(jù)指令的格式,對未連接指令的分離和解釋,將識別區(qū)域劃分為不同類別的指令以及各種獲取操作數(shù)的方法,對指令進行解碼。
執(zhí)行命令階段(EX,執(zhí)行):
指定指令的功能。連接處理器的不同部分以執(zhí)行必要的操作。
在訪問內(nèi)存(MEM,內(nèi)存)的時間段內(nèi),根據(jù)該時間段需要訪問主存儲器,讀取操作數(shù),處理器接收主存儲器中操作的地址,并從主存儲器中讀取操作地址。該命令的一部分不需要訪問主存儲器,但是可以跳過該階段。
結(jié)果記錄在完成階段(WB,回寫):
結(jié)果記錄在最后階段,在該階段,有關(guān)命令執(zhí)行階段工作結(jié)果的數(shù)據(jù)被“寫入”到某種形式的存儲中。通常將結(jié)果寫入處理器的內(nèi)部寄存器,以便快速訪問后續(xù)指令;許多指令還更改程序狀態(tài)寄存器中標(biāo)記的狀態(tài),這些狀態(tài)指示不同的操作結(jié)果,并可用于影響程序動作。
執(zhí)行命令后,在記錄有關(guān)結(jié)果的數(shù)據(jù)后,如果沒有意外事件發(fā)生(例如,結(jié)果溢出等),計算機將從程序計數(shù)器接收下一個命令地址,開始一個新的周期,在此周期中,將依次檢索下一個命令。
關(guān)鍵是要就信號包達成一致。處理器僅在傳輸?shù)亩M制代碼上執(zhí)行指令,并且商業(yè)企業(yè)已同意將編譯該指令系統(tǒng),而不論其編程語言是什么,以便處理器可以根據(jù)處理器理解的二進制指令執(zhí)行其功能。協(xié)議以及人與人之間都有自己的規(guī)則。例如,我們可以引用許多命令,如果它們以1開頭,則說明要執(zhí)行的操作,例如,加,然后給出兩個數(shù)字,以便處理器將結(jié)果添加到特定的寄存器中,并且程序?qū)⒕哂许樞蛑噶钜垣@取結(jié)果在將要存儲在指定存儲器中的該寄存器上,處理器分析根據(jù)這種協(xié)議傳輸?shù)脑S多二進制數(shù)據(jù),然后執(zhí)行。處理器可以執(zhí)行根據(jù)該指令系統(tǒng)無法直接完成的操作,程序員負(fù)責(zé)準(zhǔn)備一個完整的解決方案,該解決方案將允許處理器執(zhí)行此操作,這稱為編程,而整個命令序列稱為程序。下圖是CPU認(rèn)識代碼的邏輯圖:
處理器不知道您說哪種語言,該代碼不是為計算機而是為編譯的二進制命令而為,而是為執(zhí)行根據(jù)公司開發(fā)的指令系統(tǒng)而開發(fā)的一系列指令而讀取的代碼。編程語言沒有什么高級的,它在編譯器或解釋器中可以很好地用于將這些人工代碼轉(zhuǎn)換為機器代碼,在這方面,保守法仍然起著多大的作用,您編寫的高級語言代碼越少,可執(zhí)行指令轉(zhuǎn)換成機器的越多。 C是您好世界的入門程序,不用考慮拼寫很短,也不是很成功,該程序使用5K編譯二進制機器代碼,并為源代碼提供printf0函數(shù),您可以自行查看,但實際上您不需要打印一行完整的printf0函數(shù),實際上是效率低下的解釋程序。
以上便是我的一些見解和回答,可能不能如您所愿,但我真心希望能夠?qū)δ兴鶐椭?/p>
聯(lián)系客服