首页 > 汇编语言 > AT&T与Intel汇编 阅读:57,774

AT&T汇编语法与Intel语法的比较

AT&TIntel汇编都是X86汇编。Windows一般使用的是Intel汇编,而Linux系统一般使用的是AT&T汇编语法。只要掌握其中一种,通过差异比较,很容易上手另一种汇编语法。如下图所示,一些常见的intelAT&T汇编语法格式的对比图:

 

1intel语法操作的操作数长度体现在寄存器名称上。以ax寄存器为例,8位用al或者ah1个字节用ax4个字节用eax,地址宽度用byte ptr/word ptr/dword ptr。而AT&T汇编还会在指令后面加后缀:

movb/movw/movl

2Intel中寄存器的名字写法:eax,而AT&T中寄存器的写法%eax

3Intel汇编数据移动方向是从右往左,而AT&T是从左往右,比如把bl寄存器中的值移动到al中,那么分别写法:

Intel:          mov al,bl

AT&T:        movb %bl,%al

4Intel语法中立即数为:0ffehAT&T中立即数写法:$0xffe

5base+index*scale+disp寻址写法,比如:

intel中:       sub eax,[ebx+ecx*4h-20h]

AT&T中:    subl -0x20(%ebx,%ecx,0x4),%eax

 

intel中:       sub eax,[ebx+ecx*4h]

AT&T中:    subl (%ebx,%ecx,0x4),%eax

 

intel中:       sub eax,[ebx -20h]

AT&T中:    subl -0x20(%ebx),%eax

 

intel中:       sub eax,[ebx+ecx*4h]

AT&T中:    subl (%ebx,%ecx,0x4),%eax

周哥教IT,分享编程知识,提高编程技能,程序员的充电站。跟着周哥一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

当你决定关注「周哥教IT」,你已然超越了90%的程序员!

IT黄埔-周哥教IT技术交流QQ群:213774841,期待您的加入!

二维码
微信扫描二维码关注