国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

一起學習在linux下使用匯編語言(1)

2024-07-21 02:37:19
字體:
來源:轉載
供稿:網友

  作者:luster
  摘要:我開始學習在linux使用匯編語言了。我以前從來沒有在Linux下使用過匯編語言。我今天看到了一份文檔,是Linux Assembly HOWTO,我看了看,決定學習學習。下面是我的學習筆記。讓我一起學習吧。
  在Linux下使用匯編語言
  
    by Wang Hui(hwang@ustc.edu)
  
    2001/9/11
  
    我開始學習在Linux使用匯編語言了。我以前從來沒有在Linux下使用過匯編語言。我今天看到了一份文檔,是Linux Assembly HOWTO,我看了看,決定學習學習。下面是我的學習筆記。讓我一起學習吧。
  
    1. 你需要匯編語言嗎?
  
    匯編語言的優點和缺點
  
    匯編語言可以很直接的表達比較低層次的:
  
    · 你可以通過匯編代碼訪問與機器硬件直接相關的存儲器或者I/O口。
  
    · 你可以在一些要害的代碼區準確的控制某些代碼的行文,避免其他方法帶來的多線程共同訪問或者硬件設備共享引起的死鎖。
  
    · 你可以通過使用匯編打破通常的編譯器編譯的結果,例如你可以根據自己的考慮優化一些東西。
  
    · 我們可以在代碼分片之間建立一些接口。
  
    · 我們可以通過一些匯編代碼使處理器進入不平常的編程模式。例如16 bit mode to interface startup, firmware, or legacy code on Intel PCs.
  
    · 可以優化一些代碼,提高運行速度。
  
    · 可以為特定的應該編寫優化代碼。
  
    · 可以為某語言的編譯器編寫代碼。
  
    匯編語言是一種層次非常低的語言(僅僅高于手動編寫二進制機器指令碼),這就意味著:
  
    · 開始寫起來會很長而且單調
  
    · 很輕易出現bug
  
    · 程序中的bug非常難查找
  
    · 寫出來的代碼非常難懂,而且不好維護和修改
  
    · 而且結果是不能到其他體系結構的平臺上運行。
  
    · 代碼只能針對某特特定體系結構的特定型號的處理器優化。例如,在Intel兼容系列的CPU中,每一款CPU都有非凡的設計,變量也不一樣,都有特定的優化考慮。CPU的時間已經有很多了,例如:Intel 386, 486, Pentium, PPRo, PII, PIII, PIV; Cyrix 5x86, 6x86, M2; AMD K5, K6 (K6-2, K6-III), K7 (Athlon, Duron). 而且新的設計還不斷地出現。
  
    · 編寫匯編代碼時候,我們會花費很多的時間在一些細節事情上,而不能專注一些小的或者大的算法設計,而算法的優化能更快的提高程序運行的速度。例如,你可以用匯編加快一些數組的訪問和治理,但是總體上講,使用hash表會更大程度上加快訪問速度。
  
    · 一個算法上的小的改動,可能需要我們全部重新寫一段很長的代碼。
  
  "compilers make it a lot easier to use complex data strUCtures,
  and compilers don't get bored halfway through and generate
  reliably pretty good code."
  
    2. Linux 和匯編
  
    你可能已經注重到了,在linux下開發程序,通常不需要使用匯編語言。與DOS不一樣,你不需要使用匯編來編寫linux的驅動程序(當然,假如你非得用匯編寫,也可以)。而且現在的編譯器有很多優化器,可以針對不多的CPU優化尼的高級語言寫的代碼,例如C代碼。當然既然我們在討論這個問題,而且你都在閱讀本文了,luster知道你肯定有自己的理由去使用匯編而不是C或者C++了。:)
  
    你可能需要使用匯編,或者你不得不使用匯編。簡單的說,使用匯編的理由就是精簡代碼和libc無關性。還有一個理由就是,希望像一個以前的瘋狂的hacker那樣,這些20多歲的hacker的習慣就是用匯編寫任何代碼。
  
    然而,假如你要移植linux到某些嵌入式硬件環境下,你需要減少系統的大小,你需要將很多基本的系統精簡到很小的空間。其中的一個可行的方法就是,重新用匯編寫部分(或者全部?)代碼。例如,用匯編寫的簡單的http服務器程序可能少于600 bytes,這樣呢可以把建立一個webserver(包括一個內核和一個httpd),大小只有400KB或者更小。
是不是很爽?:)
  
    今天就學習到這里。下面就讓我們真正開始吧。
  
    待續'

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 襄城县| 长沙市| 海晏县| 新建县| 新绛县| 延吉市| 新巴尔虎右旗| 玉龙| 南充市| 乌恰县| 衡水市| 阿克苏市| 洮南市| 中山市| 洛阳市| 康保县| 涟源市| 海淀区| 鞍山市| 长春市| 淮滨县| 兴隆县| 马鞍山市| 炉霍县| 汉阴县| 镇宁| 博客| 临洮县| 攀枝花市| 策勒县| 荥经县| 雷山县| 天等县| 团风县| 吉安县| 康马县| 太原市| 黄平县| 墨竹工卡县| 稷山县| 海城市|