各位大侠,在下想在函数中直接用SSE指令,可是用内联汇编编译不过,我的开发环境是VC6+SP5。显然是编译器不认识这些新的指令。这个问题如何解决?

解决方案 »

  1.   

    先用汇编编译器找到sse指令的机器码,
    然后在内联汇编中用_emit指令直接插入代码。
    _emit是一条伪指令,直接在相应位置插入一个字节的数据,类似于汇编中的DD,DB指令。
    :)结贴吧
      

  2.   

    sse 是什么指令哦,怎么我用masm编译器都不行???
      

  3.   

    To:BlueSky2008() 
    请详细讲一下你的思路,我比较菜:),_emit如何用?最好给一个例子。
      

  4.   

    还有种方法,到intel官方网站下载一个c++编译器,他能作为一个插件和vc++整合在一起,能自动针对SSE优化。只能免费下载试用版的,正式版要付费的。
      

  5.   

    AMD的CPU好像只支持MMX,MMX+,3DNow!,3DNow!+  吧!AMD的CPU能执行SSE指令的程序吗?
      

  6.   

    http://msdn.microsoft.com/vstudio/downloads/tools/ppack/default.asp下载 Visual C++ 6.0 Processor Pack ,就应该可以编译通过了
      

  7.   

    用 _emit 也可以,直接 _emit 指令机器码 也可以执行,只不过太麻烦了。
      

  8.   

    _emit 简单说就是人工手动编译成机器码,举个例子比如mov ax,bx的机器码是0x4A ,0x43,0x43假如你的编译器不支持这条指令,那你只好写成
    __asm _emit 0x4A __asm _emit 0x43 __asm _emit 0x4B
    或者是
    #define mov __asm _emit 0x4A __asm _emit 0x43 __asm _emit 0x4B
     .
     .
     .
    __asm {
         mov
         }
    但是你必须提前知道汇编指令的机器码才可以
      

  9.   

    呵呵,看样子大家对我的问题还是很感兴趣的嘛,_emit的意思我基本明白了,我正在尝试gboy(★)(★) 提供的方法,如果能行的话那真的是一劳永逸...