第一百零五章 OPCODE
古希臘一個哲學(xué)家有這樣一句名言——
人的知識就好比一個圓圈,圓圈里面是已知的,圓圈外面是未知的。你知道得越多,圓圈也就越大,你不知道的也就越多。
林鴻是在一本文學(xué)類的雜志上看到這句話的。
他對這句話的感觸很深,所以印象也特別清楚。
他經(jīng)常會不由自主地想起這句話,例如此時此刻。
顯示器中,一個白色的小球,在顯示器上不斷地來回撞擊彈回,四周都有白色的圍墻擋著。
當(dāng)小球和墻面撞擊的時候,就會發(fā)生鏡面彈射,并且音箱中會同時發(fā)出“咚”地一聲響。
林鴻坐在蘋果機(jī)面前,呆呆地看著顯示器,眼神的焦點(diǎn)卻不知道已經(jīng)發(fā)散到了何處。
他從學(xué)校回來之后,腦海中就不斷浮現(xiàn)著許文靜問他的那個問題。
長大后,想要成為一個什么樣的人?
這是他從來沒有想過的事情,在此之前,他最大的夢想就是想一家三口團(tuán)聚,自己能夠像其他家庭一樣,過上正常的生活。
不過他從來沒有對自己的未來有過什么展望。
像其他同學(xué)那樣,夢想成為科學(xué)家?畫家?音樂家?
亦或者像徐爺爺那樣連國家都重視的無線電專家?
他所接觸到的職業(yè)還有廠長、武術(shù)宗師、軍人、教師……
對于這些職業(yè),他都沒有什么太大的感覺,雖然有些是自己喜歡的,但卻不能確定,是不是可以將其作為自己為之一生奮斗的目標(biāo)。
他所知道的東西,就像是一個很小的圓,周圍所能接觸到的外界實(shí)在太小,以至于無法給出足夠的信息,讓他作出正確的決定和得到滿意的答案。
林鴻并不知道,他此刻的狀態(tài),在心理學(xué)上,實(shí)際上是一個高層次“自我意識”認(rèn)識反省的過程。
他開始意識到自己的不足,自己的缺陷,然后會有意識地去采取措施彌補(bǔ)這些不足。
一般情況下,如果沒有人刻意引導(dǎo),或者受到獨(dú)特的刺激,這個過程是需要在二十多歲到三十歲的時候才能夠出現(xiàn)的,在那個年齡階段人的知識結(jié)構(gòu)和生活經(jīng)歷都有了足夠的積累,自然而然會產(chǎn)生這種“自我意識”認(rèn)識和反省。
林鴻想了半天,始終無法得到想要的答案,于是只能暫時放棄。
“順其自然吧。”
林鴻給了自己一個安慰,這句話是他師父經(jīng)常對人說的一句話。
有些事情,勉強(qiáng)反倒不美,可能會造成相反的效果。
將這個心思放下,他開始繼續(xù)閱讀紅皮書。
除了顯示器固件方面的內(nèi)容,其他常見的外部設(shè)備固件代碼和原理他也看得差不多了。
現(xiàn)在他要看的,是計(jì)算機(jī)里面最核心的部位——中央微處理芯片,也即CPU。
APPLE_II采用的芯片是MOS科技出品的6502芯片,這是八位微處理器,在問世時,是當(dāng)時效能最強(qiáng)的CPU。當(dāng)然,在蘋果機(jī)問世時,它已經(jīng)不是最強(qiáng)的了,實(shí)際上,剛開始做樣機(jī)的時候,設(shè)計(jì)者沃茲尼亞克使用的芯片并不是6502,后來之所以改為了這個型號,主要是為了考慮節(jié)約成本。
6502的價(jià)格只有其他同類產(chǎn)品的六分之一甚至更低,但是性能方面卻相差無幾,甚至比別的公司的八位微處理器還要更快。正是由于這種無法忽視地有點(diǎn),讓很多計(jì)算機(jī)或者游戲機(jī)廠商最終選擇了它作為CPU。
APPLE_II蘋果機(jī)就是使用這個芯片的偉大產(chǎn)品之一,另外一個比較著名的產(chǎn)品,就是任天堂的家庭游戲機(jī),俗稱紅白機(jī)。
中央處理器,被稱作計(jì)算機(jī)的“大腦”和“心臟”,這并不是隨便叫的。因?yàn)橛?jì)算機(jī)中所有的執(zhí)行和計(jì)算,都必須通過CPU來完成。
所謂計(jì)算機(jī)的可編程性主要是指對CPU的編程,只不過平時針對它的操作,被層層封裝隔離,使用高級語言的程序員,甚至不用知道CPU的存在以及其具體運(yùn)作原理,只要編寫“1+1”這樣的計(jì)算等式,然后執(zhí)行編譯就會出現(xiàn)結(jié)果。而實(shí)際上,在那察覺不到的一瞬間,這其中經(jīng)過了一個非常繁雜的過程。
首先編譯器要將程序編譯為計(jì)算機(jī)能夠理解的機(jī)器語言,然后開始將程序交給CPU來控制,經(jīng)過提取、解碼、執(zhí)行、寫回……等一系列的動作,最終計(jì)算出結(jié)果,然后再將其顯示在顯示器中。
這個過程雖然繁雜,但是速度非常快,計(jì)算機(jī)剛剛誕生的那會兒,速度可能和用算盤計(jì)算差不多,但是到了現(xiàn)在,已經(jīng)只是一瞬間的事情了。
小小的一塊芯片里面,蘊(yùn)含的東西卻是非常多的。
在以前,CPU是使用繼電器之類的基本開關(guān)元器件來實(shí)現(xiàn)的,這些元器件不但體積龐大,而且不可靠,很容易破碎。真空管的出現(xiàn)逐漸代替了繼電器,直到后來晶體管的出現(xiàn)才是CPU技術(shù)的第一次飛躍。
集成電路將大量的晶體管都集中在一個小小的芯片上,大大縮小了CPU的體積,并且不容易損壞,穩(wěn)定性也得到了極大的提升。這個時期計(jì)算機(jī)才真正有了走向千家萬戶的可能,微型計(jì)算機(jī)應(yīng)運(yùn)而生。
紅皮書中,對6502的介紹非常詳細(xì),大到CPU芯片各個針腳的功能和作用,小到累加器、指令解碼器以及各種各樣的寄存器的詳細(xì)結(jié)構(gòu)都配有詳細(xì)的插圖。
這些插圖,全部是手繪的,原作者正是蘋果公司的天才計(jì)算機(jī)工程師沃茲尼亞克。
連線條都有些彎曲的手繪圖形出現(xiàn)在計(jì)算機(jī)手冊中,這要是在今天,會給人一種非常不專業(yè)的感覺,但是在紅皮書出版發(fā)行的時候,正是這些手繪插圖讓全世界所有計(jì)算機(jī)愛好者和研究人員為之癡迷。
可以說,APPLE_II完全是為了計(jì)算機(jī)愛好者而設(shè)計(jì)的,包括紅皮書,也是為這些專業(yè)人士而撰寫的,因?yàn)槠湓O(shè)計(jì)者是伍茲尼亞克,一個純粹的技術(shù)人員。
不過蘋果公司的CEO喬布斯對此意見很大,他并不是技術(shù)人員,他也不希望使用蘋果計(jì)算機(jī)的用戶僅僅局限于專業(yè)人員和計(jì)算機(jī)愛好者。
這不是喬布斯想要的產(chǎn)品,所以此后蘋果公司后來陸陸續(xù)續(xù)推出了很多版本其他類型的計(jì)算機(jī),不過卻一直無法超越APPLE_II,并且由于過于保守,最終讓公司陷入了面臨倒閉的危機(jī)邊緣,直到很久以后才重新崛起——這是后話。
林鴻對這部分內(nèi)容看得尤其仔細(xì),對照著CPU里面各部件的電路原理圖,他在腦海中模擬著整個CPU的運(yùn)算流程。原本他還以為自己理解起來會有一定難度,但是后來發(fā)現(xiàn),他很順利地就理解了整個CPU的運(yùn)作原理。
算術(shù)邏輯單元、累加器、計(jì)數(shù)器、時鐘發(fā)生器、寄存器組……
林鴻一方面驚詫于這一塊小小的芯片上面竟然集成了這么多復(fù)雜的部件,另外一方面又沉迷在這些設(shè)計(jì)精妙的電路中無法自拔。
無線電臺的元器件電路和原理,都是可以看得見摸得著的,可是CPU中的這些東西,卻被封裝在這么小的一塊芯片內(nèi),只能通過外部的引腳對其進(jìn)行操作,這不得不讓林鴻感到非常震驚。
這就一個黑匣子,所有輸入輸出信號,全靠那幾根針腳來實(shí)現(xiàn),通過對針腳上面施加各種高低不同的電平電壓,就實(shí)現(xiàn)了數(shù)據(jù)的處理和運(yùn)算,這種巧奪天工的設(shè)計(jì),不得不讓人擊節(jié)贊嘆!
通過巧妙的電路處理,計(jì)算機(jī)科學(xué)家們發(fā)明了一種被稱為“OPCODE”的機(jī)器語言,以此來對CPU進(jìn)行指令控制,從而實(shí)現(xiàn)計(jì)算。
機(jī)器語言就是指二進(jìn)制代碼語言,是最低級最原始的語言,也是計(jì)算機(jī)微處理器可以直接理解的語言。例如“0000”表示讓CPU加載程序,而“0001”則告訴它要存儲東西了。
四位數(shù),每一位都有兩種可能,那么則可以表示2x2x2x2總共16種不同的操作。
16種操作在剛開始的時候還能滿足需求,可是到了后面計(jì)算機(jī)的CPU越來越復(fù)雜,操作指令也越來越多,這已經(jīng)無法滿足需求了,于是便開始進(jìn)行擴(kuò)充,用8位或者12位二進(jìn)制進(jìn)行標(biāo)示。
直接用二進(jìn)制來編寫程序,實(shí)在是太讓人蛋疼了,滿屏幕都是密密麻麻的0和1,眼睛都能看成斗雞眼去。
后來有猛人們便想出一個法子,將二進(jìn)制轉(zhuǎn)換為十六進(jìn)制進(jìn)行處理,每四位二進(jìn)制正好對應(yīng)一個十六進(jìn)制正好對應(yīng),這樣就大大簡化了對記憶以及輸入量的要求。
再到后來,大家覺得記十六進(jìn)制代碼也是一件難以接受的事情,于是開始用字母單詞的縮寫來對應(yīng)計(jì)算機(jī)的操作指令,機(jī)器碼助記符和匯編語言便由此而誕生。
例如“MOV”指令,就是英文“MOVE”的縮寫,意思就是移動,功能也是將一個數(shù)據(jù)從一個地方移動到另外一個地方。
這個指令很有用,例如想要在顯示器上顯示字母“A”就只要將A對應(yīng)的機(jī)器語言“MOV”到對應(yīng)的顯存位置上去,顯示器上就會將“A”顯示出來。
紅皮書在這個章節(jié)里面,詳細(xì)介紹了6502的OPCODE機(jī)器碼,主板上的電路,就是對這些機(jī)器碼的一個實(shí)現(xiàn)。
林鴻直到此刻才算真正理解了,為什么說計(jì)算機(jī)的世界就是0和1組成的世界。
====
推薦朋友現(xiàn)代修真作品
[bookid=2330003,bookname=《最強(qiáng)仙王》]
,