視頻:
如果本次課程對(duì)應(yīng)的 Coursera 的視頻打不開(kāi),可以點(diǎn)擊下面鏈接
P1W4U4.2 - Machine Languages-Elements
在開(kāi)始 講 Hack小電腦 的 機(jī)器語(yǔ)言前浅辙,老師要先講講通用的基本概念扭弧。
因?yàn)椴还釮ack小電腦的設(shè)計(jì)原則是這樣,事實(shí)上大部分計(jì)算機(jī)的設(shè)計(jì)都符合這些基本概念记舆。
理解這些不光幫助我們?cè)谥蟾玫闹谱鱄ack小電腦鸽捻,也能舉一反三的理解其它計(jì)算機(jī)的架構(gòu)設(shè)計(jì)。
機(jī)器語(yǔ)言 是神秘的 軟件 和 硬件的交匯點(diǎn)泽腮,初高中時(shí)御蒲,第一次接觸電腦,特別好奇就是這里诊赊。
(其實(shí)在第二周U2.4 ALU的那節(jié)課已經(jīng)隱約能體會(huì)到)
接下來(lái)說(shuō)說(shuō)下圖里的三問(wèn)厚满,也是本節(jié)要說(shuō)明的基本概念。
1.操作指令都是什么碧磅?
2.這些指令怎么操作數(shù)據(jù)碘箍?
3.如何控制指令執(zhí)行順序?
1.操作指令都是什么?
機(jī)器語(yǔ)言 的各種操作秆撮,實(shí)際上往往都對(duì)應(yīng)著硬件的實(shí)現(xiàn)四濒。
操作基本分三種:
算術(shù)操作:加、減职辨。有的還有乘盗蟆、除。等等
邏輯操作:與拨匆、或姆涩、非等等
指令順序控制:跳轉(zhuǎn)、判斷等等惭每。
有區(qū)別的地方骨饿,比如乘除的實(shí)現(xiàn),HACK電腦就沒(méi)有乘除的硬件實(shí)現(xiàn)台腥,而是之后在Part2軟件部分去實(shí)現(xiàn)的宏赘。
另外數(shù)據(jù)類(lèi)型,有的有浮點(diǎn)數(shù)黎侈,有的數(shù)據(jù)位更寬(64位)或者更短(8位)察署。
2.這些指令怎么操作數(shù)據(jù)峻汉?
在說(shuō)如何操作數(shù)據(jù)前贴汪,先說(shuō)一下數(shù)據(jù)是如何在存儲(chǔ)里讀取的脐往。
事實(shí)上訪問(wèn)這些存儲(chǔ)是相對(duì)消耗資源的。
需要提供一個(gè)長(zhǎng)長(zhǎng)的地址來(lái)對(duì)應(yīng)存儲(chǔ)扳埂。
把存儲(chǔ)的數(shù)據(jù)放入CPU也要花費(fèi)一定時(shí)間业簿。
為了解決訪問(wèn)速度和存儲(chǔ)量的擴(kuò)大間的沖突。
解決辦法:把存儲(chǔ)分層級(jí)來(lái)區(qū)分阳懂。(如下圖)
離CPU最近的是很少的寄存器(Register梅尤,物理上,在CPU內(nèi)部)岩调,也是讀取速度是最快的巷燥。
然后下一級(jí)可能是Cache(可以對(duì)應(yīng)理解為電腦CPU上的一級(jí)緩存,二級(jí)緩存号枕?)缰揪,存儲(chǔ)單元就多了些,同時(shí)訪問(wèn)速度也相對(duì)離CPU最近的Register慢了一些堕澄。
然后是主存儲(chǔ)(Main Memory邀跃,可以對(duì)應(yīng)理解為電腦里的內(nèi)存條?)蛙紫,同理存儲(chǔ)比Cache大拍屑,速度就再慢了一些。
最后是Disk(對(duì)應(yīng)理解為硬盤(pán)就好了)坑傅。
下面主要說(shuō)一下寄存器
寄存器主要分兩種:(如下圖)
一種數(shù)據(jù)寄存器(Data Registers):存的就是數(shù)據(jù)僵驰,例如 R1、R2
一種地址寄存器(Address Registers):存的是其它寄存器的地址唁毒,例如 A
現(xiàn)在知道了上圖兩種寄存器粉私,那么回到問(wèn)題2(2.這些指令怎么操作數(shù)據(jù)?)
如下圖近零,四種操作數(shù)據(jù)的方式:
數(shù)據(jù)寄存器 操作诺核,比如
Add R1,R2
解釋?zhuān)篟1 + R2 再存到 R2
直接尋址 操作久信,比如
Add R1窖杀,M[200]
解釋?zhuān)篟1 + 門(mén)牌號(hào)為200的寄存器里的數(shù)值,結(jié)果再存入200號(hào)寄存器
地址寄存器 間接尋址 操作裙士,比如
Add R1入客,@A
解釋?zhuān)篟1 + 門(mén)牌號(hào)為地址寄存器里存的地址數(shù)值,結(jié)果再存回去。區(qū)別上面的就是桌硫,200不是直接給出的夭咬。而是需要從A里的地址所指的寄存器里取出。
立即數(shù) 操作铆隘,比如
Add 73皱埠,R1
解釋?zhuān)?3 + R1,在存回R1咖驮。區(qū)別第一種,就是不用變量名R1训枢、R2托修。直接就是一個(gè)數(shù)值。
這里順帶提了一下 外圍設(shè)備 (輸入輸出設(shè)備恒界,例如 顯示器睦刃,鍵盤(pán),等等)的訪問(wèn)十酣。
實(shí)際上也是存儲(chǔ)器的訪問(wèn)涩拙。利用了一種 存儲(chǔ)映射方式(memory mapping)。
這里就不說(shuō)泛泛概念了耸采,后面U4.5課程有詳細(xì)說(shuō)明兴泥。
3.如何控制指令執(zhí)行順序?
最后一個(gè)基本概念虾宇,就是對(duì)程序順序的控制搓彻。
默認(rèn)CPU是順序執(zhí)行程序的。
但有時(shí)需要特殊控制一下嘱朽,例如跳回前一步執(zhí)行旭贬,以實(shí)現(xiàn)循環(huán)執(zhí)行的目的。
這里涉及兩種控制:
1.無(wú)條件跳轉(zhuǎn)
2.有條件跳轉(zhuǎn)
如下圖 先說(shuō) 無(wú)條件跳轉(zhuǎn)
無(wú)條件跳轉(zhuǎn) 也是一個(gè)指令搪泳,例如稀轨,讓CPU執(zhí)行的下一步 跳(jump) 到 第2行,那么命令就是 “jump 第二行”岸军,但我們很難知道第二行命令指令的具體在存儲(chǔ)中的地址奋刽,所以為了簡(jiǎn)化方便,程序也會(huì)提供一些功能來(lái)標(biāo)識(shí)第二行的位置凛膏。例如下圖 loop杨名,這樣命令就變成 “jump loop”(不用記這些命令,只是示意)
如下圖 再說(shuō) 有條件跳轉(zhuǎn)
注:JGT(J = Jump = 跳猖毫、GT = Greater Than = 大于)
JGT R1台谍,0,cont
解釋?zhuān)喝绻鸕1 大于 0 跳到 cont。否則趁蕊,順序執(zhí)行下一行坞生。
這節(jié)講解完了 通用計(jì)算機(jī)的 機(jī)器語(yǔ)言的 通用基本概念。
下面幾節(jié)掷伙,開(kāi)始來(lái)看看我們要實(shí)現(xiàn)的Hack小電腦里的機(jī)器語(yǔ)言具體是什么樣子的是己。
- 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)秽梅,“玉大人抹蚀,你說(shuō)我怎么就攤上這事∑罂眩” “怎么了环壤?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)钞诡。 經(jīng)常有香客問(wèn)我镐捧,道長(zhǎng),這世上最難降的妖魔是什么臭增? 我笑而不...
- 正文 為了忘掉前任懂酱,我火速辦了婚禮,結(jié)果婚禮上誊抛,老公的妹妹穿的比我還像新娘列牺。我一直安慰自己,他們只是感情好拗窃,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布瞎领。 她就那樣靜靜地躺著,像睡著了一般随夸。 火紅的嫁衣襯著肌膚如雪九默。 梳的紋絲不亂的頭發(fā)上,一...
- 那天宾毒,我揣著相機(jī)與錄音驼修,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乙各,可吹牛的內(nèi)容都是我干的墨礁。 我是一名探鬼主播,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼耳峦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼恩静!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蹲坷,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤驶乾,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后循签,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體轻掩,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年懦底,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罕扎。...
- 正文 年R本政府宣布臀蛛,位于F島的核電站亲桦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏浊仆。R本人自食惡果不足惜客峭,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抡柿。 院中可真熱鬧舔琅,春花似錦、人聲如沸洲劣。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)囱稽。三九已至郊尝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間战惊,已是汗流浹背流昏。 一陣腳步聲響...
- 正文 我出身青樓铺遂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親茎刚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子襟锐,可洞房花燭夜當(dāng)晚...