視頻:
如果本次課程對應(yīng)的 Coursera 的視頻打不開店读,可以點(diǎn)擊下面鏈接
P1W4U4.1 - Machine Languages-Overview
經(jīng)過前三周的學(xué)習(xí)纫普,事實(shí)上本周已經(jīng)可以進(jìn)行Hack小電腦的最后組裝工作了嫁艇。
不過這被挪到第五周進(jìn)行了朗伶。
在這之前,本周(第四周)步咪,先來從使用電腦的角度來看看Hack小電腦的一些內(nèi)部細(xì)節(jié)论皆,運(yùn)行機(jī)制和內(nèi)部結(jié)構(gòu)。然后第五周再去組裝完成它猾漫。
現(xiàn)在的手機(jī)和電腦点晴,我們已經(jīng)習(xí)慣了它們是什么都能干的設(shè)備。
不過回溯歷史悯周,在通用計(jì)算機(jī)流行之前粒督,大部分所謂的計(jì)算機(jī)設(shè)備其實(shí)都是專用的。比如(待完善)
通用圖靈機(jī)(universal Turing machine禽翼,又稱Machine U)是圖靈機(jī)的一種屠橄,由艾倫·圖靈在1936年(理論上)提出的一種抽象計(jì)算機(jī)模型族跛,圖靈機(jī)模型有很多種,而通用圖靈機(jī)模型可以模擬大部分其它種的圖靈機(jī)模型锐墙。
其更抽象的意義為一種數(shù)學(xué)邏輯機(jī)礁哄,可以看作等價(jià)于任何有限邏輯數(shù)學(xué)過程的終極強(qiáng)大邏輯機(jī)器。
20世紀(jì)30年代中期(1936之拨?)掏膏。
德國科學(xué)家馮諾依曼大膽的提出,拋棄十進(jìn)制,采用二進(jìn)制作為數(shù)字計(jì)算機(jī)的數(shù)制基礎(chǔ)。
同時(shí),他還說預(yù)先編制計(jì)算程序,然后由計(jì)算機(jī)來按照人們事前制定的計(jì)算順序來執(zhí)行數(shù)值計(jì)算工作(這就引入了要存儲(chǔ)程序的需求)敦锌。
再回溯之前老師提供的Hack小電腦示意圖,下圖
存儲(chǔ)器(Memory),上周學(xué)習(xí)的佩脊,每個(gè)16位寄存器對應(yīng)一個(gè)地址(Address)蛙粘。
例如圖中 示意 Address157地址里放的就是16位 01011110011(好像不到16位,示意圖威彰,理解就好)出牧。
程序(在程序存儲(chǔ)區(qū)域)會(huì)按地址順序一步一步執(zhí)行,執(zhí)行的時(shí)候歇盼,就是把上面的 Address 157 里的 0101xxx 送入 CPU里執(zhí)行舔痕。
如果有計(jì)算結(jié)果,下部分還會(huì)有數(shù)據(jù)(data)再存儲(chǔ)回?cái)?shù)據(jù)存儲(chǔ)區(qū)域豹缀。
上圖涉及了三個(gè)基本的概念邢笙,本周之后課程會(huì)講到啸如。
第一:指令如何被執(zhí)行。
第二:如何控制指令執(zhí)行順序鸣剪。
第三:指令能操作啥组底。
先大概說下機(jī)器語言丈积。
機(jī)器語言(一行行的0101xxx),人類變態(tài)的情況下可以這么編程序债鸡,但是相當(dāng)繁瑣和困難也容易出錯(cuò)江滨,于是就發(fā)明了一種相對高級的語言(例如:匯編語言 (Assembly Language)),當(dāng)然同時(shí)也得準(zhǔn)備好對應(yīng)這個(gè)高級語言的編譯器(Compiler)(例如:對應(yīng) 匯編語言 的編譯器叫 匯編器(Assembler))厌均。
這樣人類就能更容易的編寫程序了唬滑,然后執(zhí)行的時(shí)候,就把人類的高級語言棺弊,通過那個(gè)對應(yīng)的 編譯器(compiler)翻譯成 機(jī)器語言晶密。
貌似我們可以跳過機(jī)器語言了,皆大歡喜模她,但是課程設(shè)計(jì)不允許稻艰,因?yàn)槲覀兊米约号鰝€(gè)編譯器。所以我們不能不會(huì)機(jī)器語言的運(yùn)行原理侈净。(這正是本課程的特色尊勿,什么都得自己做出來,很好很喜歡)
下圖 簡單對比一個(gè) “機(jī)器語言” 和 “匯編語言” 的例子(不用記畜侦,示意)元扔。
左邊的機(jī)器語言:0101xxx。
右邊的匯編語言:ADD 1旋膳,Mem[129]澎语。
129是一種表示存儲(chǔ)器的索引值,就像門牌號验懊,Mem[129]大概就可以理解成 第129號寄存器擅羞。
這節(jié)課大概縱覽了一下 通用計(jì)算機(jī) 的 機(jī)器語言 一些主要概念。
下節(jié)還是繼續(xù) 介紹 機(jī)器語言 主要概念的具體細(xì)節(jié)鲁森。
之后才是如何實(shí)現(xiàn)Hack小電腦的 機(jī)器語言 和 匯編語言 以及編譯器祟滴。