windows與linux 匯編差異
匯編語言有助記符,機器語言是純粹二進製。
CPU與OS確定的情況下,一句匯編語言可唯一確定一句對應的機器語言。
Linux下采用的是AT&T的匯編語法格式,Windows下麵采用的是Intel匯編語法格式。二者的主要區別在於:
1.指令操作數的賦值方向是不同的
Intel:第一個是目的操作數,第二個是源操作數
AT&T:第一個是源操作數,第二個是目的操作數
2.指令前綴
AT&T:寄存器前邊要加上%,立即數前要加上$
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.AT&T中跳轉指令標號後的後綴 表示跳轉方向,“f”表示向前,“b”表示向後
最後更新:2017-04-03 05:39:49