主題: 組合語言
瀏覽單個文章
darkangel
Major Member
 
darkangel的大頭照
 

加入日期: Aug 2001
文章: 211
引用:
作者jenzh
x86還有一個叫「保護模式」東西,這個東西早在386就有了。

但是國內組合語言書本卻很少提到它,大多都是在講DOS的中斷呼叫、BIOS呼叫。

不過我是認為學BIOS呼叫是比較有用,DOS中斷呼叫(int 21)的話呢…

換個作業系統,int 21就失靈了。


還有像是mmx、sse、3DNow,這些東西要翻intel or amd的CPU手冊才知道。


以我的印象,我記得 Protected Mode 是從 286 就有的,只是 286 時的 Protected Mode 設計得很爛,所以大家都當做286沒保護模式,一直到 386 之後的保護模式才算是較為完整,也才有人針對 386 保護模式設計軟體,如當時紅極一時的 Watcom C 的 DOS4GW.EXE,第一代的 Doom 其實就是靠這東西解決大解析圖片翻轉的問題,如果老玩家有印象,應該記得最早沒使用 DOS4GW.EXE 的 Demo 版本是如何的慢。
此外,以前最有名的軟體除錯器 S-ICE 其實也是利用 386 的保護模式機制的軟體之一,因此以前做保護有一些手段來防 S-ICE 例如把 Debug Register 拿來用。
還有,中斷的分類方式並不是 BIOS 與 DOS 這種分法,而應該是 Hardware, Software, 是否為 NMI 等分法...
組合語言真的沒想像中的難,我覺得組合語言不會比 BASIC 難到哪去,debug 開下去,有耐心點 trace 觀察暫存器變化跟用力查資料,你會發現組合語言真的不難。
我覺得難的地方是電腦系統架構、作業系統、硬體規格與演算法,組合語言反而是其次。
此外,以我碰過的組合語言來說,x86 的組合語言比起其他 RISC (MIPS, ARM...) 的組語來說,算是比較複雜的。
如果是非必要,其實用 C 來寫程式會比較有效率,只要你對 C 夠熟,用C也不見得會比組合語言慢到哪去。
__________________
滿招損 謙受益
舊 2008-05-30, 01:41 AM #20
回應時引用此文章
darkangel離線中