当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

MMX指令集在C++中的使用

上次在《关于内联汇编的几个技巧》一文中只是简单地介绍了如何在C++中使用内联汇编,这一次先对上一次的文章作一补充,然后介绍如何使用MMX指令。
 
  一、 内联汇编的一般原则:
 
  1、 自由使用通用寄存器;(EAX,EBX,ECX和EDX)
 
  2、 其它寄存器利用堆栈保留,使用,最后恢复;
 
  一般的像下面这样:
 
 __asm{
  push ebp
  push esp
  ……….//使用EBP和ESP
  pop esp
  pop  ebp
}

  二、 内联汇编__asm可以单独使用:
 
  例如:
 
 __asm mov eax,anyval1
__asm mov ebx,anyval2

  三、 函数返回值可以直接放到eax中,可以不理会警告
 
  例如:
 
 int anyfun(……/*anyparm*/)
{
  int irtn;  //函数返回值
  ……    //函数语句
  __asm mov eax,irtn    //代替return irtn;但编译器会发出警告,可以不理它
}

  四、 内联汇编不区分大小写,语法同普通汇编
 
  例如:
 
 __asm{
  mov eax,ebx
  MOV EAX,EBX    //同上一句
}


  注意:C++的变量还是区分大小写的
 
  五、 内联汇编尽量使用__asm或_asm关键字,而不用标准C++的asm关键字(这个是微软说的)
 
  以上只是一些关于内联汇编的补充,我将出一系列围绕内联汇编的文章,下面接着上一次的话题详细一点地讲一下MMX指令的调用
 
  1、 MMX指令集简介:
 
  [数据传输指令]
 
  movq //传输64位整数
 
  movd //传输32位整数
 
  [数据打包转换指令]
 
  PACKSSWB //Pack words into bytes with signed saturation.

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接