有關(guān)匯編的小知識(shí) 謝謝
有關(guān)匯編的小知識(shí) 謝謝
word ptr表示后面的內(nèi)存數(shù)據(jù)取一字,地址用[ ] 這個(gè)。
mov ax,word ptr [7800+1]
mov eax,dword ptr [7800+1]
word是數(shù)據(jù)大小描述符,后面地址用方括號(hào),圓括號(hào)表示優(yōu)先運(yùn)算。
設(shè)計(jì)操作系統(tǒng)需要哪些方面的知識(shí)?除了《計(jì)算機(jī)組成原理》、《C語(yǔ)言》、《匯編語(yǔ)言》?
計(jì)算機(jī)組成原理、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)原理、微機(jī)原理、c語(yǔ)言、匯編語(yǔ)言、目標(biāo)機(jī)器的硬件知識(shí)、軟件工程等,還需要熟悉一些標(biāo)準(zhǔn),比如POSIX等。
推薦你看以下書(shū)籍:
于淵的《自己動(dòng)手設(shè)計(jì)操作系統(tǒng)》,在x86保護(hù)模式下從系統(tǒng)引導(dǎo)到IO管理。x86保護(hù)模式比較難于理解,但功能強(qiáng)大。
坦尼保姆的《操作系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》,介紹Minix的設(shè)計(jì)與實(shí)現(xiàn),太復(fù)雜。
李紅衛(wèi)的《操作系統(tǒng)原理與實(shí)踐教程》,我最近正在看,上面提供了一個(gè)在x86實(shí)模式下設(shè)計(jì)的一個(gè)教學(xué)使用的MOS操作系統(tǒng),從系統(tǒng)的引導(dǎo)開(kāi)始設(shè)計(jì),代碼好像只有2000余行,對(duì)初學(xué)者了解操作系統(tǒng)知識(shí)和設(shè)計(jì)操作系統(tǒng)可能有一定的幫助,在網(wǎng)上能找到mOS的原代碼,好像還有個(gè)教學(xué)網(wǎng)站,你找找吧。在實(shí)模式下設(shè)計(jì),比保護(hù)模式要簡(jiǎn)單。
前輩,如果真想開(kāi)發(fā)機(jī)器語(yǔ)言,和匯編語(yǔ)言。需要些什么條件?比如說(shuō)軟件掌握哪些知識(shí)。硬件又需要些什么~!
其實(shí)要做中文編程的話(huà),不用自己開(kāi)發(fā)機(jī)器語(yǔ)言和匯編語(yǔ)言,機(jī)器語(yǔ)言的形式是由CPU的體系結(jié)構(gòu)決定的,現(xiàn)在的CPU是用很多晶體管組成一系列的開(kāi)關(guān)電路來(lái)工作,而開(kāi)關(guān)只有兩種狀態(tài),要么開(kāi),要么關(guān),如果把“開(kāi)”這一狀態(tài)用“1”來(lái)表示,把“關(guān)”用“0”來(lái)表示,那么這就是所謂的機(jī)器語(yǔ)言,機(jī)器語(yǔ)言就是直接控制CPU里面哪些開(kāi)關(guān)打開(kāi),哪些開(kāi)關(guān)關(guān)閉,從而完成相應(yīng)的功能,現(xiàn)在的計(jì)算機(jī)都是以二進(jìn)制形式工作,就是這個(gè)原因。也有人希望能徹底的改變現(xiàn)在的計(jì)算機(jī)體系,就像有人提出的下一代計(jì)算機(jī),“生物計(jì)算機(jī)”,其CPU由活性生物分子組成,而不是半導(dǎo)體晶體管,這樣就能完全顛覆現(xiàn)在的機(jī)器語(yǔ)言,有人做過(guò)實(shí)驗(yàn),用老鼠的腦細(xì)胞來(lái)構(gòu)成CPU,能夠完成一些簡(jiǎn)單的功能。但是生物計(jì)算機(jī)現(xiàn)在只處于實(shí)驗(yàn)階段,還不能真正使用。
如果你要自己開(kāi)發(fā)一個(gè)匯編語(yǔ)言,那你就要改變CPU的電路結(jié)構(gòu),比如說(shuō)你把串聯(lián)改為并聯(lián)?,F(xiàn)在的CPU有兩種體系,一種是X86體系,是通用式設(shè)備(比如電腦)上采用的體系,使用的是X86匯編語(yǔ)言,另一種是ARM體系,是嵌入式設(shè)備(比如手機(jī))上采用的體系,使用的是ARM匯編語(yǔ)言。要想自己開(kāi)發(fā)一套匯編語(yǔ)言,你就得先開(kāi)發(fā)出一種不同的CPU體系,這是硬件開(kāi)發(fā)者的事,而不是軟件開(kāi)發(fā)人員能勝任的。再者,假設(shè)你真的開(kāi)發(fā)出了一種不同的CPU體系,而且有了自己的匯編語(yǔ)言,如果要使全球的程序員都用你的匯編語(yǔ)言,你就得讓你的CPU占有全球大部分市場(chǎng),也就是說(shuō)你要把Intel 公司或是ARM公司拉下馬。
要做中文編程,只要開(kāi)發(fā)出一種全新的高級(jí)語(yǔ)言就行了,這并不是簡(jiǎn)單的事。首先,你必須明確你的語(yǔ)言所適用的方向,比如java適用于網(wǎng)絡(luò)編程,C++適用于平臺(tái)開(kāi)發(fā)。如果你想讓你的語(yǔ)言具有良好的兼容性,能在各種平臺(tái)上運(yùn)行,你就要考慮語(yǔ)言的安全性和可移植性,同時(shí)你必須放棄執(zhí)行速度和執(zhí)行效率。所以java能在各種平臺(tái)上運(yùn)行,但效率不高,C++效率很高,但只能在特定的平臺(tái)上運(yùn)行。其次,要使你的語(yǔ)言有比較大的創(chuàng)新,這樣的語(yǔ)言才能影響全球,如果你的語(yǔ)言對(duì)現(xiàn)在的計(jì)算機(jī)語(yǔ)言沒(méi)多大改進(jìn),那就沒(méi)必要花那么多精力再自己開(kāi)發(fā)出一種語(yǔ)言。正是有了面向?qū)ο?、可移植性、高安全性這些創(chuàng)新,java和C++才如此受歡迎。
要說(shuō)掌握哪些知識(shí),首先,你要對(duì)計(jì)算機(jī)結(jié)構(gòu)體系有深刻的了解,你可以學(xué)一學(xué)模擬電路(這是基礎(chǔ)),數(shù)字電路,微機(jī)原理(包括X86體系和ARM體系),另外,你必須對(duì)CPU的原材料--半導(dǎo)體--有一定了解,有一門(mén)學(xué)科叫半導(dǎo)體物理學(xué),你可以學(xué)一學(xué)。同時(shí)還要了解CPU的體系,現(xiàn)在是馮·諾依曼體系,說(shuō)不定你能提出另一種完全不同的體系讓CPU的執(zhí)行效率更高。其次,對(duì)于軟件,你可以學(xué)一學(xué)編譯原理,再深入研究幾門(mén)不同適用方向的計(jì)算機(jī)語(yǔ)言(網(wǎng)絡(luò)語(yǔ)言java,平臺(tái)語(yǔ)言C++,腳本語(yǔ)言javascript,數(shù)據(jù)庫(kù)語(yǔ)言delphi等等),而不用研究很多門(mén)語(yǔ)言,很多人都用過(guò)C語(yǔ)言,但是有多少人真正了解C語(yǔ)言?當(dāng)你在使用C語(yǔ)言里面的printf這個(gè)函數(shù)的時(shí)候,你是否知道你的內(nèi)存里面的數(shù)據(jù)發(fā)生了什么變化,各個(gè)寄存器里面的值又有什么改變,CPU是如何控制這些改變?nèi)缓笤賹⒔Y(jié)果呈現(xiàn)在你的面前?另外,C語(yǔ)言里面的每個(gè)函數(shù)都是有函數(shù)原型的,不同的代碼可以使用不同的方式控制CPU,國(guó)際標(biāo)準(zhǔn)協(xié)會(huì)在制定C語(yǔ)言標(biāo)準(zhǔn)的時(shí)候?yàn)槭裁匆眠@些代碼來(lái)實(shí)現(xiàn)相應(yīng)的功能,而不用其它代碼?如果讓你來(lái)寫(xiě)這個(gè)函數(shù),你會(huì)怎么做?如果你了解這些東西,你自己開(kāi)發(fā)出的語(yǔ)言才會(huì)很優(yōu)秀。這些知識(shí)固然重要,但更重要的是要善于觀察,善于思考,善于創(chuàng)新。希望這些東西對(duì)你有所幫助,最后,祝你成功!
聲明:農(nóng)機(jī)大全所有(圖文、音視頻)均由用戶(hù)自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,版權(quán)歸原作者。若您的權(quán)利被侵害,請(qǐng)聯(lián)系 56325386@qq.com 刪除。
載注明出處:http://www.121vipspeaking.com/news/231712.html