閱讀187 返回首頁    go 阿裏雲 go 技術社區[雲棲]


windows與linux 匯編差異

匯編語言有助記符,機器語言是純粹二進製。

CPU與OS確定的情況下,一句匯編語言可唯一確定一句對應的機器語言。

 

Linux下采用的是ATT的匯編語法格式,Windows下麵采用的是Intel匯編語法格式。二者的主要區別在於:

 

1.指令操作數的賦值方向是不同的 

   Intel:第一個是目的操作數,第二個是源操作數 

   ATT:第一個是源操作數,第二個是目的操作數

2.指令前綴 

   ATT:寄存器前邊要加上%,立即數前要加上

   Intel:沒有這方麵的要求

3.內存單元操作數 

   Intel:基地址使用[] 

   AT&T:  基地址使用() 

  比如:intel中  mov  ax,[bx] 

              AT&T中 movl (%eax),%ebx

4.操作碼的後綴 

     AT&T中操作碼後麵有一個後綴字母:l” 32,w” 16,b” 8位 

     Intel卻使用了在操作數前麵加dword ptr, word ptr, byte ptr的格式 

   例如:mov al,bl (Intel) 

             movb %bl %al (AT&T)

5.ATT中跳轉指令標號後的後綴 表示跳轉方向,“f”表示向前,“b”表示向後

 

 

 

最後更新:2017-04-03 05:39:49

  上一篇:go Swift標識符和關鍵字
  下一篇:go Android 自定義控件開發入門(二)