機器碼 指令 組合語言 的關係

我妻禮彌發表於2019-05-03

機器碼

一組特定硬體(不光是計算機,手機、嵌入式系統等)能夠執行的程式碼,它是由0和1組成的二進位制序列。

不同的硬體平臺,執行同一個操作,對應的機器碼可能不同

指令

由於機器碼是有0和1組成的二進位制序列,可讀性實在太差,於是人們發明了指令。

指令就是把機器碼中特定的0和1序列,簡化成對應的指令(一般為英文簡寫,如mov,inc等),可讀性稍好

由於 不同的硬體平臺,執行同一個操作,對應的機器碼可能不同,所以 不同的硬體平臺的同一種指令(比如mov),對應的機器碼也可能不同。

指令集

不同的硬體平臺,各自支援的指令,是有差別的。因此每個平臺所支援的指令,稱之為對應平臺的指令集。 如常見的

  • x86指令集,對應的是x86架構的平臺
  • ARM指令集,對應的是ARM架構的平臺

組合語言

由於 指令 的可讀性還是太差,於是人們又發明了組合語言。

在組合語言中,用助記符(Mnemonics)代替機器指令的操作碼,用地址符號(Symbol)或標號(Label) 代替指令或運算元的地址

在不同的硬體平臺,組合語言對應著不同的機器語言指令集,通過彙編過程轉換成機器指令。普遍地說,特定的組合語言和特定的機器語言指令集是一一對應的,不同平臺之間不可直接移植。

三者關係

簡單理解就是

  • 每一種硬體平臺對應一種機器碼
  • 每一種機器碼對應一套指令集
  • 每一套指令集對應一種組合語言

相關文章