大家好,今天小編關(guān)注到一個(gè)比較有意思的話題,就是關(guān)于機(jī)械原理答案查詢***的問題,于是小編就整理了1個(gè)相關(guān)介紹機(jī)械原理答案查詢***的解答,讓我們一起看看吧。
CPU是如何識(shí)別代碼的?他的工作原理是怎樣的?
首先謝謝邀請(qǐng)。
其實(shí),CPU也不知道我們敲得代碼是什么意思。想要讓一段代碼編程可執(zhí)行的程序,需要進(jìn)行一系列的操作。
關(guān)于CPU識(shí)別程序的問題,細(xì)講起來是比較麻煩的一件事情,我們來分步驟逐一解釋。
在具體將這個(gè)問題之前,我們先來了解一下半導(dǎo)體的特性。
顧名思義,半導(dǎo)體就是一種介于導(dǎo)體和絕緣體中間的物質(zhì),它具有以下特性。
比如上圖,如果電流是從A端流向C端,則電路通暢;反過來的話就不行了。大家可以把它理解一種單方向控制電流的設(shè)備。
電流只有兩種情況:開路和閉路,將開路規(guī)定為0,閉路規(guī)定為1,這也就是我們所熟知的二進(jìn)制。
根據(jù)這種特性,設(shè)計(jì)者們開發(fā)出了“與”,“或”,“非”,“異或”四種情況:
1+1=1; 1+0=0; 0+1=0; 0+0=0
1+1=1; 1+0=1; 0+1=1; 0+0=0
提前備注:回答比較硬核,我會(huì)盡量軟化,但想了解知識(shí)還是需要耐心。CPU內(nèi)傳輸?shù)?a href="http://xiupc.cn/tags-x-h.html" target="_blank" class="QIHEIHQ1c0207340b5cb833 relatedlink">信號(hào)有兩種:高電壓和低電壓,分別代表數(shù)字信號(hào)“1”和“0”,因此CPU唯一能理解(問題中的“認(rèn)識(shí)”)的語言就是由“1”和“0”寫成的機(jī)器語言。
由于程序(代碼)存儲(chǔ)在電腦硬盤中時(shí),也是“1”和“0”的形式,是否就意味著,只要程序存到硬盤中,CPU就能認(rèn)識(shí)呢?
答案是CPU仍然看不懂這些程序,因?yàn)橐浴?”和“0”形式存儲(chǔ)的程序和以“1”和“0”寫成的語言完全是兩回事,兩者的區(qū)別類似于漢語書和英語書都用紙和油墨印制,但依然是兩種不同的語言,不會(huì)英語的依然看不懂英語書。
要讓CPU能看懂代碼,要做相當(dāng)多的工作。
現(xiàn)在的程序都是由C++和J***a等高級(jí)語言寫成,這些語言是為方便人類編程發(fā)明的,不是為方便電腦執(zhí)行而設(shè)計(jì)。
說到這里,需要進(jìn)一步說說機(jī)器語言和高級(jí)語言的差別。機(jī)器語言的最大特點(diǎn)是面向計(jì)算機(jī)硬件編程,簡(jiǎn)單說就是程序員需要通曉計(jì)算機(jī)硬件知識(shí),寫的程序要真實(shí)表示數(shù)據(jù)是如何被計(jì)算機(jī)操縱的。對(duì)程序員來說這就比較頭大,畢竟上得了“廳堂”下得了“廚房”只有少數(shù)大神能做到,加上機(jī)器語言純用“0”和“1”序列組成,既對(duì)視力是一種摧殘,也是對(duì)編程趣味的扼殺。
于是,有一幫人開始琢磨了:能不能將計(jì)算機(jī)硬件從編程中分離出來,讓硬件知識(shí)小白也能編程?
最先開竅的是藍(lán)色巨人IBM,它在其System/360計(jì)算機(jī)中引入了ISA(Instruction Set Architecture)概念,將編程所需要了解的硬件信息從硬件中抽象出來,這樣編程人員就可以面向ISA編程。由于ISA是用來描述編程時(shí)用到的抽象機(jī)器(不是具體的電腦CPU),包括了一套指令集和一些寄存器,因此,程序員只要知道ISA,不需要了解具體的硬件知識(shí)(每一兩年硬件都會(huì)換新),就可以編寫程序,在ISA相同的電腦上運(yùn)行。
這樣一來,程序員不必了解過于專業(yè)的計(jì)算機(jī)硬件知識(shí),不需要下得了廳堂,可以專心在“廚房”烹調(diào)程序大餐。
由此也可以看出,程序員很多都是不了解計(jì)算機(jī)硬件的,所以妹子們不要指望自己的程序員男朋友給你DIY電腦,或者電腦壞了,他能給你省下一筆修理費(fèi)。他說不會(huì)修,那就是真的不會(huì)修。
什么是代碼?代者,替換也。
***如你設(shè)計(jì)一個(gè)數(shù)字電路,包括一個(gè)加法器和一個(gè)乘法器。
你希望根據(jù)需要,有時(shí)對(duì)輸入數(shù)據(jù)做加法,有時(shí)對(duì)輸入做乘法,該怎樣做呢?
顯而易見的方法是手工控制加法器和乘法器的使能端,每次只讓一個(gè)電路工作。那么當(dāng)兩個(gè)使能端為01,就是加法器工作,是10,就是乘法器工作。
然后為了讓電路根據(jù)要求的順序做加法和乘法,你把一系列01、10存儲(chǔ)起來,當(dāng)你要做加法,加法,乘法,加法時(shí),存儲(chǔ)的就是01011001。你增加了一個(gè)時(shí)序電路,每次讀出兩個(gè)位,把高低電平加在兩個(gè)使能端上,替代你的手工接線。01和10這兩個(gè)數(shù)碼能控制電路的行為,起名叫機(jī)器碼。
然而這樣二進(jìn)制的東西并不好記憶。于是你給01起了個(gè)名字,叫add,10起名叫mul。你的這組運(yùn)算就記為add,add,mul,add。
add,mul這種助記符,就叫代碼,具體說是匯編代碼;你會(huì)找一個(gè)悲催的助手,幫你把代碼替換成01,10這種機(jī)械碼。
由代碼翻譯成機(jī)器碼的過程,后來也由機(jī)器來做,這種機(jī)器(軟件)就叫編譯器。
因此所謂cpu認(rèn)識(shí)代碼,是一種擬人化的修辭,偏文藝了。cpu只是一種根據(jù)高低電平輸入,產(chǎn)生特定的高低電平輸出的機(jī)器。代碼不過是助記符。
后來你覺得add,add,add,add,add這類寫法太煩,于是發(fā)明了五連加,7連乘之類的寫法——高級(jí)語言代碼誕生了。
到此,以上就是小編對(duì)于機(jī)械原理答案查詢***的問題就介紹到這了,希望介紹關(guān)于機(jī)械原理答案查詢***的1點(diǎn)解答對(duì)大家有用。