Chinaunix首页 | 论坛 | 博客

Art

  • 博客访问: 56863
  • 博文数量: 39
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 400
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-11 17:10
文章分类

全部博文(39)

文章存档

2010年(1)

2009年(14)

2008年(24)

我的朋友

分类:

2009-02-17 15:19:19

格式: _asm_("asm statements": outputs: inputs: registers-modified);
其中,"asm statements"是汇编语句表达式,可以是不止一句
     outputs是汇编语句执行完后输出到的寄存器
     inputs是输入到某个寄存器
     registers-modified则表明了值将会改变的寄存器
     outputs,inputs,register-modified都是可选参数,以冒号隔开,且一次以0~9 编
     号,故outputs的寄存器是0号,inputs寄存器是1号,往后依次类推。
另外,a,b,c,d分别表示寄存器eax,ebx,ecx,edx
     S,D分别表示寄存器esi,edi
     r表示任意寄存器
     //0表示使用上一个寄存器
如: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)}
把输出寄存器eax里的内容赋给b1,把a1的内容赋给输入寄存器ebx,会改变的寄存器位eax,主体表示把第一号参数也就是ebx的内容赋给eax,然后把eax的内容赋给ecx,结果为:a1 = 10, b1 = 10
     
阅读(492) | 评论(0) | 转发(0) |
0

上一篇:VM的网络连接

下一篇:XQuery简介

给主人留下些什么吧!~~