青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 47, 文章 - 10, 評論 - 8, 引用 - 0
數(shù)據(jù)加載中……

簡明x86匯編語言教程(一)

原創(chuàng):司徒彥南

第○章 寫在前面

我不想夸大或者貶低匯編語言。但我想說,匯編語言改變了20世紀(jì)的歷史。與前輩相比,我們這一代編程人員足夠的幸福,因為我們有各式各樣的編程語言,我們可以操作鍵盤、坐在顯示器面前,甚至使用鼠標(biāo)、語音識別。我們可以使用鍵盤、鼠標(biāo)來駕馭“個人計算機”,而不是和一群人共享一臺使用笨重的繼電器、開關(guān)去操作的巨型機。相比之下,我們的前輩不得不使用機器語言編寫程序,他們甚至沒有最簡單的匯編程序來把助記符翻譯成機器語言,而我們可以從上千種計算機語言中選擇我們喜歡的一種,而匯編,雖然不是一種“常用”的具有“快速原型開發(fā)”能力的語言,卻也是我們可以選擇的語言中的一種。

每種計算機都有自己的匯編語言——沒必要指望匯編語言的可移植性,選擇匯編,意味著選擇性能而不是可移植或便于調(diào)試。這份文檔中講述的是x86匯編語言,此后的“匯編語言”一詞,如果不明示則表示ia32上的x86匯編語言。

匯編語言是一種易學(xué),卻很難精通的語言。回想當(dāng)年,我從初學(xué)匯編到寫出第一個可運行的程序當(dāng)時我學(xué)過BASIC, Fortran和Pascal,寫的是一個對一個包含100個32bit整數(shù)的數(shù)組進行快速排序,并且輸出出來的小程序。,只用了不到4個小時;然而直到今天,我仍然不敢說自己精通它。編寫快速、高效、并且能夠讓處理器“很舒服地執(zhí)行”的程序是一件很困難的事情,如果利用業(yè)余時間學(xué)習(xí),通常需要2-3年的時間才能做到。這份教材并不期待能夠教給你大量的匯編語言技巧。對于讀者來說,x86匯編語言"就在這里"。然而,不要僵化地局限于這份教材講述的內(nèi)容,因為它只能告訴你匯編語言是“這樣一回事”。學(xué)好匯編語言,更多的要靠一個人的創(chuàng)造力于悟性,我可以告訴你我所知道的技巧,但肯定這是不夠的。一位對我的編程生涯產(chǎn)生過重要影響的人曾經(jīng)對我說過這么一句話:

寫匯編語言程序不是匯編語言最難的部分,創(chuàng)新才是。

我想,愿意看這份文檔的人恐怕不會問我“為什么要學(xué)習(xí)匯編語言”這樣的問題;不過,我還是想說幾句:首先,匯編語言非常有用,我個人主張把它作為C語言的先修課程,因為通過學(xué)習(xí)匯編語言,你可以了解到如何有效地設(shè)計數(shù)據(jù)結(jié)構(gòu),讓計算機處理得更快,并使用更少的存儲空間;同時,學(xué)習(xí)匯編語言可以讓你熟悉計算機內(nèi)部運行機制,并且,有效地提高調(diào)試能力。就我個人的經(jīng)驗而言,調(diào)試一個非結(jié)構(gòu)化的程序的困難程度,要比調(diào)試一個結(jié)構(gòu)化的程序的難度高很多,因為“結(jié)構(gòu)化”是以犧牲運行效率來提高可讀性與可調(diào)試性,這對于完成一般軟件工程的編碼階段是非常必要的。然而,在一些地方,比如,硬件驅(qū)動程序、操作系統(tǒng)底層,或者程序中經(jīng)常需要執(zhí)行的代碼,結(jié)構(gòu)化程序設(shè)計的這些優(yōu)點有時就會被它的低效率所抹煞。另外,如果你想真正地控制自己的程序,只知道源代碼級的調(diào)試是遠(yuǎn)遠(yuǎn)不夠的。

浮躁的人喜歡說,用C++寫程序足夠了,甚至說,他不僅僅掌握C++,而且精通STL、MFC。我不贊成這個觀點,掌握上面的那些是每一個編程人員都應(yīng)該做到的,然而C++只是我們"常用"的一種語言,它不是編程的全部。低層次的開發(fā)者喜歡說,嘿,C++是多么的強大,它可以做任何事情——這不是事實。便于維護、調(diào)試,這些確實是我們的追求目標(biāo),但是,寫程序不能僅僅追求這個目標(biāo),因為我們最終的目的是滿足設(shè)計需求,而不是個人非理性的理想。

這份教材適合已經(jīng)學(xué)習(xí)過某種結(jié)構(gòu)化程序設(shè)計語言的讀者。其內(nèi)容基于我在1995年給別人講述匯編語言時所寫的講義。當(dāng)然,如大家所希望的,它包含了最新的處理器所支持的特性,以及相應(yīng)的內(nèi)容。我假定讀者已經(jīng)知道了程序設(shè)計的一些基本概念,因為沒有這些是無法理解匯編語言程序設(shè)計的;此外,我希望讀者已經(jīng)有了比較良好的程序設(shè)計基礎(chǔ),因為如果你缺乏對于結(jié)構(gòu)化程序設(shè)計的認(rèn)識,編寫匯編語言程序很可能很快就破壞了你的結(jié)構(gòu)化編程習(xí)慣,大大降低程序的可讀性、可維護性,最終讓你的程序陷于不得不廢棄的代碼堆之中。

基本上,這份文檔撰寫的目標(biāo)是盡可能地便于自學(xué)。不過,它對你也有一些要求,盡管不是很高,但我還是強調(diào)一下。


學(xué)習(xí)匯編語言,你需要

  • 膽量。不要害怕去接觸那些計算機的內(nèi)部工作機制。
  • 知識。了解計算機常用的數(shù)制,特別是二進制、十六進制、八進制,以及計算機保存數(shù)據(jù)的方法。
  • 開放。接受匯編語言與高級語言的差異,而不是去指責(zé)它如何的不好讀。
  • 經(jīng)驗。要求你擁有任意其他編程語言的一點點編程經(jīng)驗。
  • 頭腦。
     

祝您編程愉快!

第一章 匯編語言簡介

先說一點和實際編程關(guān)系不太大的東西。當(dāng)然,如果你迫切的想看到更實質(zhì)的內(nèi)容,完全可以先跳過這一章。

那么,我想可能有一個問題對于初學(xué)匯編的人來說非常重要,那就是:

匯編語言到底是什么?
匯編語言是一種最接近計算機核心的編碼語言。不同于任何高級語言,匯編語言幾乎可以完全和機器語言一一對應(yīng)。不錯,我們可以用機器語言寫程序,但現(xiàn)在除了沒有匯編程序的那些電腦之外,直接用機器語言寫超過1000條以上指令的人大概只能算作那些被我們成為“圣人”的犧牲者一類了。畢竟,記憶一些短小的助記符、由機器去考慮那些瑣碎的配位過程和檢查錯誤,比記憶大量的隨計算機而改變的十六進制代碼、可能弄錯而沒有任何提示要強的多。熟練的匯編語言編碼員甚至可以直接從十六進制代碼中讀出匯編語言的大致意思。當(dāng)然,我們有更好的工具——匯編器和反匯編器。

簡單地說,匯編語言就是機器語言的一種可以被人讀懂的形式實際上用匯編器寫出的機器碼與在調(diào)試器中用它附帶的匯編程序?qū)懗龅臋C器碼還是有一些細(xì)微差別的,前者更大,然而卻可能更高效,因為匯編器能夠將代碼放置到適合處理器的地方,只不過它更容易記憶。至于宏匯編,則是包含了宏支持的匯編語言,這可以讓你編程的時候更專注于程序本身,而不是忙于計算和重寫代碼。

匯編語言除了機器語言之外最接近計算機硬件的編程語言。由于它如此的接近計算機硬件,因此,它可以最大限度地發(fā)揮計算機硬件的性能。用匯編語言編寫的程序的速度通常要比高級語言和C/C++快很多--幾倍,幾十倍,甚至成百上千倍。當(dāng)然,解釋語言,如解釋型LISP,沒有采用JIT技術(shù)的Java虛機中運行的Java等等,其程序速度更無法這句話假定兩個程序進行了同等程度的優(yōu)化,一個寫的不好的匯編程序和一個寫的很好的C程序相比,匯編程序不一定更快。與匯編語言程序同日而語 。

永遠(yuǎn)不要忽視匯編語言的高速。實際的應(yīng)用系統(tǒng)中,我們往往會用匯編徹底重寫某些經(jīng)常調(diào)用的部分以期獲得更高的性能。應(yīng)用匯編也許不能提高你的程序的穩(wěn)定性,但至少,如果你非常小心的話,它也不會降低穩(wěn)定性;與此同時,它可以大大地提高程序的運行速度。我強烈建議所有的軟件產(chǎn)品在最后Release之前對整個代碼進行Profile,并適當(dāng)?shù)赜脜R編取代部分高級語言代碼。至少,匯編語言的知識可以告訴你一些有用的東西,比如,你有多少個寄存器可以用。有時,手工的優(yōu)化比編譯器的優(yōu)化更為有效,而且,你可以完全控制程序的實際行為。

我想我在羅嗦了。總之,在我們結(jié)束這一章之前,我想說,不要在優(yōu)化的時候把希望完全寄托在編譯器上——現(xiàn)實一些,再好的編譯器也不可能總是產(chǎn)生最優(yōu)的代碼。

?

posted on 2006-11-03 17:41 編程之道 閱讀(379) 評論(0)  編輯 收藏 引用 所屬分類: 開發(fā)相關(guān)ASM

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产一区二区三区免费不卡| 欧美成人午夜视频| 欧美成人午夜免费视在线看片 | 亚洲激精日韩激精欧美精品| 久久永久免费| 久久夜色精品国产欧美乱极品| 欧美亚洲综合网| 久久高清一区| 久久久国产91| 久久五月天婷婷| 免费看的黄色欧美网站| 亚洲电影在线播放| 久久综合九色99| 亚洲国产高清自拍| 亚洲福利在线看| 一本色道久久| 亚洲欧美日韩天堂| 久久久91精品国产一区二区精品| 久久精品国产精品亚洲| 蜜桃精品久久久久久久免费影院| 欧美大片在线影院| 国产精品福利av| 狠狠色狠狠色综合日日五| 亚洲狠狠丁香婷婷综合久久久| aa亚洲婷婷| 久久精品在这里| 亚洲国产岛国毛片在线| 亚洲视频免费| 久久综合一区二区| 欧美视频中文在线看| 极品尤物久久久av免费看| 亚洲人成网在线播放| 亚洲免费视频中文字幕| 欧美.www| 亚洲主播在线播放| 米奇777在线欧美播放| 国产精品捆绑调教| 亚洲国产精品久久精品怡红院| 亚洲视频播放| 欧美大片免费久久精品三p | 国产日本亚洲高清| 亚洲免费高清| 久久久久久久成人| 亚洲永久精品国产| 欧美jizzhd精品欧美喷水 | 亚洲无限av看| 欧美高清视频| 伊人成人在线视频| 久久本道综合色狠狠五月| 亚洲激精日韩激精欧美精品| 欧美一区日韩一区| 国产精品区免费视频| 99国产精品视频免费观看| 久久天天狠狠| 亚洲欧美制服另类日韩| 欧美日韩在线播放三区| 亚洲人成啪啪网站| 欧美成人免费网| 久久精品一本久久99精品| 国产精品午夜电影| 亚洲欧美在线x视频| 中日韩视频在线观看| 欧美日韩精选| 一本色道久久综合狠狠躁的推荐| 欧美成人免费在线观看| 久久精品在线视频| 最新国产精品拍自在线播放| 午夜精品一区二区三区在线| 国产精品v欧美精品v日韩精品 | 欧美freesex8一10精品| 在线观看成人小视频| 免费看亚洲片| 欧美成人一区二区| 亚洲理伦在线| 一本不卡影院| 国产精品一区二区三区乱码| 欧美一级在线视频| 亚洲综合国产精品| 一区二区三区在线看| 亚洲高清在线| 欧美视频不卡中文| 西西裸体人体做爰大胆久久久| 亚洲欧美日韩精品久久亚洲区| 国产精品人人做人人爽| 久久久国产精品一区二区三区| 欧美一区二区三区婷婷月色| 黄色精品一区二区| 亚洲国产精品成人综合色在线婷婷| 欧美福利专区| 亚洲影院色无极综合| 欧美一级二区| 一区二区亚洲| 亚洲尤物影院| 亚洲福利av| 欧美体内谢she精2性欧美| 欧美一区日韩一区| 久久天天狠狠| 亚洲视频在线视频| 久久精品视频va| 日韩一区二区高清| 亚洲欧美精品suv| 亚洲经典在线| 亚洲天堂av在线免费观看| 伊人久久大香线蕉av超碰演员| 亚洲电影免费在线观看| 国产精品一二一区| 亚洲二区视频| 国产美女精品在线| 亚洲国产精品精华液2区45| 国产精品久久91| 欧美福利视频网站| 国产日韩视频| 亚洲美女视频在线观看| 黄色亚洲在线| 亚洲免费在线播放| 一区二区欧美在线观看| 欧美影院成年免费版| 中文久久乱码一区二区| 久久久久国产一区二区三区| 亚洲一区三区电影在线观看| 免费观看在线综合| 久久久久久高潮国产精品视| 国产精品多人| 久久激情网站| 久久精品国产亚洲高清剧情介绍| 国产一区二区三区四区五区美女 | 亚洲精品中文字幕有码专区| 国产欧美一区二区三区久久| 亚洲精品一区二区三区99| 欧美不卡在线| 免费在线一区二区| 韩国视频理论视频久久| 午夜精品久久久久久久久久久 | 国产麻豆精品视频| 一区二区三区回区在观看免费视频| 亚洲国产成人精品视频| 久久婷婷丁香| 久久久久久精| 国产一区再线| 久久av在线| 久久香蕉精品| 在线免费高清一区二区三区| 欧美一区二区三区四区视频| 欧美一二三区精品| 国产乱子伦一区二区三区国色天香| 亚洲少妇最新在线视频| 亚洲欧美国产不卡| 国产精品免费一区二区三区在线观看| 亚洲精品国产精品国自产观看浪潮 | 裸体丰满少妇做受久久99精品| 国产精品一国产精品k频道56| 一区二区三区日韩欧美精品| 亚洲伊人伊色伊影伊综合网| 欧美日韩理论| 亚洲小说春色综合另类电影| 校园春色综合网| 国产三级欧美三级| 久久久不卡网国产精品一区| 欧美成人高清| 中日韩高清电影网| 国产精品亚洲第一区在线暖暖韩国| 亚洲一区精品视频| 久久综合狠狠综合久久激情| 亚洲电影在线免费观看| 欧美国产三区| 亚洲私人影院| 美女露胸一区二区三区| 亚洲青涩在线| 国产精品v欧美精品∨日韩| 午夜一区二区三区不卡视频| 麻豆freexxxx性91精品| 99re6热在线精品视频播放速度 | 欧美精品色网| 亚洲无吗在线| 免费精品视频| 亚洲小视频在线| 国产中文一区| 欧美精品在线看| 午夜久久99| 亚洲人成久久| 久久久欧美精品| 日韩系列在线| 欧美三级网页| 欧美主播一区二区三区美女 久久精品人 | 欧美大胆a视频| 午夜精品亚洲| 亚洲一区在线观看免费观看电影高清| 亚洲欧美日韩国产综合精品二区| 日韩亚洲不卡在线| 午夜欧美精品| 亚洲精品视频中文字幕| 午夜久久美女| 麻豆成人在线| 一区二区日韩伦理片| 免费国产一区二区| 久久综合狠狠| 亚洲第一黄色| 亚洲男人第一网站| 欧美日韩久久久久久| 日韩视频在线观看一区二区|