AT&T 汇编语法格式

AT&T 汇编语法格式

            1.寄存器引用  Mov %eax, %ebx

            2.操作数顺序  mov %eax(),%ebx(目的).

            3.常数/立即数的格式

            使用立即数,,要在数前面加$, mov $4, %ebx

            符号常数直接引用, mov value, %ebx

            引用符号地址在符号前加$,  mov  $value, %ebx

            4.操作数的长度  movw  %ax, %bx

            5.绝对转移和调用指令(jmp/call)的操作数前要加上’*’作为前缀.

            6.远转移指令和远调用指令的操作码,汇编格式为”ljmp””lcall”.

              ljmp $section, $offset

              lcall  $section, $offset

            远程返回指令

              lret $stack_adujst

            7.寻址方式

            section:disp(base,index,scale)表示,计算方法是  base+index*scale+disp

 

AT& T嵌入汇编

_asm_(“asm statements” : outputs : inputs : registers-modified);

: outputs : inputs : registers-modified  序号为1---9.

几个例子

1._asm_(“ pushl %%eax /n/t”

      “movl $0,%%eax /n/t”

      “popl %eax”);

%%,因为GCC编译过程中,会有个中间层.

 

 

 

 

 

2.{register char_res;/

 asm(*push %%fs /n/t”

 “movw %%ax,%%fs /n/t”

 “ movb %%fs:%2,%%al /n/t”

  “pop %%fs”

 :”=a(_res):” 0” (seg),”m”(*(addr)));/

 _res;}

 

 

 

3.int main()

{

  int a1=10, b1=0;

  _asm_(“movl %1,%%eax;/n/r”

  “movl %%eax,%%ecx;;”

  :”=a”(b1)

  :”b”(a1)

:”%eax”);

printf(“Result :%d,%d//n”,a1,b1);

}

输出结果: Result: 10,10

 

“a” ,”b”,”c”,”d”分别表示寄存器eax,ebx,ecx,edx

“s””d”寄存器 esi,edi

“r”  任何寄存器

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值