(no title)
AT&T汇编学习
汇编格式主要包括Intel和AT&T汇编格式两种,两种汇编语言的格式在使用上有较大的差别,我们上一章讲解的汇编格式是以intel的风格为例的,但是在Unix和Linux系统中,大部分的汇编语言采用的是AT&T格式。
注:本节中的实例均以i386处理器中汇编指令为例
AT&T汇编与intel汇编格式对比
AT&T | intel | 说明 |
---|---|---|
pushl %eax | push eax | 在AT&T格式中,需要在寄存器前面加上% |
pushl $1 | push 1 | 在AT&T中使用$作为前缀表示立即数操作 |
addl $1 %eax | add eax 1 | AT&T格式的目的操作数和源操作数的顺序与intel格式相反 |
movl val,%al | mov al, byte ptr val | AT&T格式操作数的长度由操作符的最后一个字母标识,分别是(movw[word],movl(long)movb[byte]) |
section:disp(base, index, scale) | section:[base + index*scale + disp] | 内存寻址方式不同 |
简单汇编代码分析
下面一段代码的作用是在屏幕上打印helloworld。