Logics - CSAPP C3

在解決完計算機對于表達(dá)這個世界后,對于最終使用計算機去解決現(xiàn)實問題,還有一步需要跨越,也就是現(xiàn)實的動態(tài)部分。

世界除了有著我們視角的靜態(tài)三維,還有這它最迷人的動態(tài)四維,一般來說以時間代指,時間使得我們世界從大爆炸一步步成為現(xiàn)在的樣子,我們常以河流來比喻,就像一股流狀態(tài)來驅(qū)動著所有靜態(tài)事物的改變。而計算機對于問題的描述當(dāng)然要模擬這個過程,前人們便去探索我們這復(fù)雜世界問題的那些基礎(chǔ)部分。

計算機科學(xué)家的結(jié)論很簡潔,一切的過程,用順序和分支加循環(huán)(核心是基于表示的狀態(tài)的轉(zhuǎn)化)就可以表達(dá),那么對于這個過程的構(gòu)建就是計算機構(gòu)建roadmap在解決表示的問題后的首要問題

就如我們有形形色色的方言一樣,計算機也有這自己的方言-指令集,雖然最終都是對于順序和分支的表達(dá),但是有自己不同的語調(diào)。而到了高級語言如C層面,借助于先人給我們的抽象層,語言又達(dá)到了歸一,一方面說明了抽象的強大和意義,另一方面也說明了整個計算機還是同一個渾然的體系。

指令集的構(gòu)建也是一個探索的過程,有點像雞和蛋的關(guān)系,沒有指令集便無法構(gòu)建出程序,而指令集也需要程序的需要和數(shù)字電路能夠?qū)崿F(xiàn)的邏輯去達(dá)到一個精妙的平衡點,慢慢相互磨合,便有了當(dāng)今的風(fēng)云指令集,8086系,程序從由c到8086匯編最終到一個個2進(jìn)制位,而機器則是從一個個2進(jìn)制位的執(zhí)行,最終完成我們想要的各種操作。

指令集自然要基本的完成對于整個計算機“計算”過程的抽象



在數(shù)據(jù)在處理器和內(nèi)存的倒騰中,我們需要一些憑借:
對于x86處理器來說我們需要

程序計數(shù)器(PC, Program counter) - 存著下一條指令的地址,在 x86-64 中稱為 RIP
寄存器(Register) - 用來存儲數(shù)據(jù)以便操作
條件代碼(Codition codes) - 通常保存最近的算術(shù)或邏輯操作的信息,用來做條件跳轉(zhuǎn)

簡單來說也就是處理器執(zhí)行 存取,計算(條件),傳輸?shù)墓δ?,而由此我們匯編語言也就自然而然的有了 指令 操作數(shù)1 (,操作數(shù)2 ,操作數(shù)3) 這樣的的一般形式

框架有了,下一步就是約定,寄存器本身結(jié)構(gòu)上沒有差異,但是我們可以賦予其含義,以X86系列為例

%rax(%eax) 用于做累加
%rcx(%ecx) 用于計數(shù)
%rdx(%edx) 用于保存數(shù)據(jù)
%rbx(%ebx) 用于做內(nèi)存查找的基礎(chǔ)地址
%rsi(%esi) 用于保存源索引值
%rdi(%edi) 用于保存目標(biāo)索引值

寄存器作為處理器的親兒子,有著當(dāng)前運算最緊要的數(shù)據(jù),但是奈何空間價格比與內(nèi)存差距巨大,最主要的大量數(shù)據(jù)還是在內(nèi)存中,而整個過程就是指令集要實現(xiàn)最基本的一個過程,也就是處理器要實現(xiàn)的過程。但是內(nèi)存又不像寄存器那樣直接對應(yīng)命名,處理這么一片廣饒的土地,那么又需要對整個內(nèi)存進(jìn)行抽象。簡言之,需要“尋址”這個過程的實現(xiàn)(TODO: 尋址展開)

而“計算框架”和“數(shù)據(jù)”都準(zhǔn)備好后,指令集要解決的問題就是“流程”了。
除了自然的通過“跳轉(zhuǎn)”來對流程進(jìn)行控制,還有一個重要的概念就是“過程調(diào)用”,正如我們現(xiàn)實的計算一般,一個計算的流程,往往最多的是類似的各種公式(過程調(diào)用)計算,然后再補上特定的整理(流程)計算。而過程調(diào)用主要包含三個方面

傳遞控制:包括如何開始執(zhí)行過程代碼,以及如何返回到開始的地方
傳遞數(shù)據(jù):包括過程需要的參數(shù)以及過程的返回值
內(nèi)存管理:如何在過程執(zhí)行的時候分配內(nèi)存,以及在返回之后釋放內(nèi)存

抽象的能力又閃亮登場了,先人們用“?!边@個結(jié)構(gòu)對過程調(diào)用完美的進(jìn)行了抽象,利用棧來完成過程調(diào)用 (TODO: 棧展開)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,204評論 3 119
  • 《皮膚病》51分鐘 大概90頁 理解率80%左右 上過的內(nèi)容
    筱蘇籽閱讀 112評論 0 0
  • 有的人十七歲就忘了自己十六歲的模樣,就像今天上課走神時想到的:當(dāng)初來這所學(xué)校是為了什么?阿,十五歲的自己不是很喜歡...
    ButIcare閱讀 201評論 0 0
  • 亞歷山大圖書館和亞歷山大博物館的建立標(biāo)志著人類歷史進(jìn)入了新紀(jì)元,是“近代史”的開端。 亞里士多德是菲利普給兒子亞歷...
    嘉慕閱讀 318評論 0 0
  • 站在19樓 像俯瞰著售樓處的沙盤模型 仰角45° 有一片天空 萬里無云
    白眉小耳閱讀 282評論 0 3

友情鏈接更多精彩內(nèi)容