指令到底是什么?机器码又是什么?
在初學(xué)C語言編程的時候,有這么一個概念——程序是由指令構(gòu)成,若干條指令按照一定的順序排列,來完成某個特定的任務(wù)。
我就在想指令到底是什么?
網(wǎng)絡(luò)上說:“高級語言被翻譯成匯編指令,匯編指令又被轉(zhuǎn)換為可執(zhí)行機(jī)器碼。”
那么,匯編指令到底是什么?
匯編里的mov,add,sub,到底是什么?
教材里說匯編指令就是機(jī)器碼,那機(jī)器碼又是什么?
我們都知道計(jì)算機(jī)是由硬件電路組成的,而基本的硬件電路,只能完成最簡單的功能。
這肯定不能滿足需求,于是人們把這些基本的硬件電路組合成復(fù)雜的電路,來實(shí)現(xiàn)復(fù)雜的功能。
——————————————————————————————————————————
假設(shè)我們有一塊復(fù)雜的電路,它只能完成“加”和“減”兩個功能,這兩個功能是由兩個單獨(dú)的部件實(shí)現(xiàn),加法電路和減法電路。
要驅(qū)動電路工作,就必須給它一個電信號,加法的電信號與減法的電信號肯定不同。
因?yàn)殡娐繁旧頉]有智慧,如果信號相同,它無法區(qū)別到底使用哪一個部件。
這兩個不同的信號就能實(shí)現(xiàn)兩個不同的功能。
要想實(shí)現(xiàn)更多的功能,比如乘法,除法,就往它身上上添加新的硬件電路。
最后添加完成的復(fù)雜電路,就叫做微體系結(jié)構(gòu)。
回到當(dāng)初的問題,指令到底是什么?
指令(機(jī)器碼)就是信號,不同的電信號就能驅(qū)動不同的硬件,來實(shí)現(xiàn)不同的功能。
許許多多各不相同的指令(機(jī)器碼),人們給它歸納匯總,就是指令集系統(tǒng)。
———————————————————————————————————————————
指令就是信號說起來蠻簡單。
機(jī)器碼在我們?nèi)祟惪磥硭褪莻€二進(jìn)制數(shù),又怎么變成信號了?
實(shí)際上在cpu內(nèi)部,指令的具體執(zhí)行還是挺麻煩的。
一條指令通常可以被分成兩個部分:操作碼 地址碼
計(jì)算機(jī)在執(zhí)行一條指令的時候,常規(guī)步驟如下:
1. 從內(nèi)存里取出指令;
2. 把該指令放到指令寄存器;
3. cpu內(nèi)部有一個硬件電路叫做譯碼器,它就負(fù)責(zé)把指令寄存器中的指令操作碼進(jìn)行“翻譯”,翻譯結(jié)果交給操作控制器(硬件電路),控制器產(chǎn)生控制信號!
4. 指令寄存器中那條指令的地址碼,被送到地址寄存器;
到了第3步,指令到信號的轉(zhuǎn)換才真正完成。
所以硬件才是程序能夠運(yùn)行的基礎(chǔ)。
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)就是軟硬件的接口,人們在這個部分設(shè)置一系列的規(guī)范,硬件的開發(fā)者按照規(guī)范去實(shí)現(xiàn)硬件。
把規(guī)范的每一條指令都用邏輯電路去實(shí)現(xiàn)。
值得注意的是,每一條指令都有邏輯電路實(shí)現(xiàn),這句話還可以細(xì)分。
有些指令它的邏輯電路屬于共用實(shí)現(xiàn),也就是說好幾個邏輯電路配合起來完成該指令,這些邏輯電路也可以是另一條指令的組成部分。
有些指令它的邏輯電路屬于專用實(shí)現(xiàn),比如x86的mmx或sse擴(kuò)展指令,每一條mmx或sse指令都對應(yīng)了專用的硬件電路。
很簡單就能想到——指令越多,硬件電路也越多越復(fù)雜。
這樣上層依賴于指令的高級語言,才能完成各種功能,如果沒有底層指令支持,程序是無法運(yùn)行的。
所以在學(xué)習(xí)過程中,遇到一條指令,“為什么會有這個指令?”,“為什么指令是這個格式?”
諸如此類的問題,那是因?yàn)樽畛踉谟?jì)算機(jī)系統(tǒng)結(jié)構(gòu)部分(分析+評測),被人為規(guī)定好的!
先有規(guī)范,再去實(shí)現(xiàn)硬件!
————————————————
版權(quán)聲明:本文為CSDN博主「dark_tone」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/dark_tone/article/details/52426886
總結(jié)
以上是生活随笔為你收集整理的指令到底是什么?机器码又是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iconfont图标_除了iconfon
- 下一篇: 星链劲敌OneWeb完成太空互联网部署