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