學習匯編語言,你需要
學習匯編語言,你需要
第一章 匯編語言簡介
先說一點和實際編程關系不太大的東西。當然,如果你迫切的想看到更實質的內容,完全可以先跳過這一章。
那么,我想可能有一個問題對于初學匯編的人來說非常重要,那就是:
匯編語言到底是什么?
匯編語言是一種最接近計算機核心的編碼語言。不同于任何高級語言,匯編語言幾乎可以完全和機器語言一一對應。不錯,我們可以用機器語言寫程序,但現在除了沒有匯編程序的那些電腦之外,直接用機器語言寫超過1000條以上指令的人大概只能算作那些被我們成為“圣人”的犧牲者一類了。畢竟,記憶一些短小的助記符、由機器去考慮那些瑣碎的配位過程和檢查錯誤,比記憶大量的隨計算機而改變的十六進制代碼、可能弄錯而沒有任何提示要強的多。熟練的匯編語言編碼員甚至可以直接從十六進制代碼中讀出匯編語言的大致意思。當然,我們有更好的工具——匯編器和反匯編器。
簡單地說,匯編語言就是機器語言的一種可以被人讀懂的形式,只不過它更容易記憶。至于宏匯編,則是包含了宏支持的匯編語言,這可以讓你編程的時候更專注于程序本身,而不是忙于計算和重寫代碼。
匯編語言除了機器語言之外最接近計算機硬件的編程語言。由于它如此的接近計算機硬件,因此,它可以最大限度地發揮計算機硬件的性能。用匯編語言編寫的程序的速度通常要比高級語言和C/C++快很多--幾倍,幾十倍,甚至成百上千倍。當然,解釋語言,如解釋型LISP,沒有采用JIT技術的Java虛機中運行的Java等等,其程序速度更無法與匯編語言程序同日而語 。
永遠不要忽視匯編語言的高速。實際的應用系統中,我們往往會用匯編徹底重寫某些經常調用的部分以期獲得更高的性能。應用匯編也許不能提高你的程序的穩定性,但至少,如果你非常小心的話,它也不會降低穩定性;與此同時,它可以大大地提高程序的運行速度。我強烈建議所有的軟件產品在最后Release之前對整個代碼進行Profile,并適當地用匯編取代部分高級語言代碼。至少,匯編語言的知識可以告訴你一些有用的東西,比如,你有多少個寄存器可以用。有時,手工的優化比編譯器的優化更為有效,而且,你可以完全控制程序的實際行為。
我想我在羅嗦了。總之,在我們結束這一章之前,我想說,不要在優化的時候把希望完全寄托在編譯器上——現實一些,再好的編譯器也不可能總是產生最優的代碼。
第二章 認識處理器
----獻給教PC技術的朋友!
中央處理器(CPU)在微機系統處于“領導核心”的地位。匯編語言被編譯成機器語言之后,將由處理器來執行。那么,首先讓我們來了解一下處理器的主要作用,這將幫助你更好地駕馭它。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |