热门问题
时间线
聊天
视角

組合語言

低级编程语言 来自维基百科,自由的百科全书

汇编语言
Remove ads

組合語言(英語:assembly language[註 1][1]是任何一種用於電腦微處理器微控制器,或其他可程式化器件的低階語言。在不同的裝置中,組合語言對應著不同的機器語言指令集。一種組合語言專用於某種電腦系統結構,而不像許多高階語言,可以在不同系統平台之間移植。

快速預覽 編程範型, 面市時間 ...

使用組合語言編寫的原始碼,然後通過相應的組譯程式將它們轉換成可執行的機器碼。這一過程被稱為組譯過程

組合語言使用輔助記憶碼(Mnemonics)來代替和表示特定低階機器語言的操作。特定的組譯目標指令集可能會包括特定的運算元。許多組譯程式可以辨識代表位址和常數的標籤(Label)和符號(Symbols),這樣就可以用字元來代表運算元而無需採取寫死的方式。普遍地說,每一種特定的組合語言和其特定的機器語言指令集是一一對應的。

許多組譯程式為程式開發、組譯控制、輔助除錯提供了額外的支援機制。有的組合語言編寫工具經常會提供巨集,它們也被稱為巨組譯器。

現在組合語言已不像其他大多數的程式設計語言一樣被廣泛用於程式設計,在今天的實際應用中,它通常被應用在底層硬體操作和高要求的程式優化的場合。驅動程式、嵌入式作業系統和實時運行程式中都會需要組譯語言。

Remove ads

工具

典型的現代組譯器assembler)建造目的碼,由解譯組語指令集的易記碼(Mnemonics)到操作碼英語OpCode,並解析符號名稱Symbolic names)成為記憶體位址以及其它的實體。使用符號參考symbolic references)是組譯器的一個重要特徵,它可以節省修改程式後人工轉址manual address updates)的乏味耗時計算。基本就是把機器碼變成一些字母而已,編譯的時候再把輸入的指令字母替換成為晦澀難懂的機器碼。

現狀

隨著現代軟體系統越來越龐大複雜,大量經過了封裝的高階語言如C/C++Pascal/Object Pascal也應運而生。這些新的語言使得程式設計師在開發過程中能夠更簡單,更有效率,使軟體開發人員得以應付快速的軟體開發的要求。而組合語言由於其複雜性使得其適用領域逐步減小。但這並不意味著組譯已無用武之地。由於組譯更接近機器語言,能夠直接對硬體進行操作,生成的程式與其他的語言相比具有更高的執行速度,占用更小的主記憶體,因此在一些對於時效性(timeliness)要求很高的程式以及工業控制方面大量應用。

因此,雖然有眾多程式語言可供選擇,但組譯依然是各大學電腦科學類專業學生的必修課,以讓學生深入了解電腦的執行原理。

組譯風格

Thumb
組合語言圖解
Thumb
Apple II時代的組合語言
Thumb
IBM 370系統的說明書中組合語言指令書

x86/amd64組譯指令的兩大風格分別是Intel組譯與AT&T組譯,分別被Microsoft Windows/Visual C++GNU/Gas採用(Gas也可使用Intel組譯風格):

更多資訊 專案, Intel風格 ...
Thumb
1979年打孔卡時代的彙編語言卡片於紐約大學圖書館

相關著作

  • 王爽的《組合語言》一書為組合語言的教程,已經被一些大學當作教程使用。[2]類似的教程還包括《Windows環境下32位元組合語言程式設計》等等。
  • 美國Duntemann, Jeff於2000年著作《組合語言步步學》 Assembly Language Step-by-Step。
  • 澳洲Jorgensen, Ed 《x86-64架構組合語言於Ubuntu系統》x86-64 Assembly Language Programming with Ubuntu。
  • 美國Waldron, John 的1998年著作《RISC系統下組合語言概論》 Introduction to RISC Assembly Language Programming. (ISBN 0-201-39828-1)

注釋

Loading content...

參考文獻

參閱

Loading content...

外部連結

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads