首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C-修复‘asm’中未知的寄存器名称‘%xmm1’?

C-修复‘asm’中未知的寄存器名称‘%xmm1’?
EN

Stack Overflow用户
提问于 2015-03-30 02:36:10
回答 1查看 3.3K关注 0票数 2

我正在尝试为ubuntu14.04 X86构建一个项目,我得到了以下错误:

代码语言:javascript
运行
复制
error: unknown register name ‘%xmm1’ in ‘asm’
         asm volatile (
         ^
   error: unknown register name ‘%xmm0’ in ‘asm’
   error: unknown register name ‘%mm1’ in ‘asm’
   error: unknown register name ‘%mm0’ in ‘asm’
   error: unknown register name ‘%xmm0’ in ‘asm’
         asm volatile (
             ^
   error: unknown register name ‘%mm0’ in ‘asm’
          asm volatile (

在函数中:

代码语言:javascript
运行
复制
static inline void
hev_bytes_xor_sse (guint8 *data, gsize size, guint8 byte)
{
    gsize i = 0, c = 0, p128 = 0, p64 = 0;
    guint64 w = (byte << 8) | byte;

    asm volatile (
        "movq %0, %%mm0\t\n"
        "pshufw $0x00, %%mm0, %%mm1\t\n"
        "movq2dq %%mm1, %%xmm0\t\n"
        "pshufd $0x00, %%xmm0, %%xmm1\t\n"
        ::"m"(w)
        :"%mm0", "%mm1", "%xmm0", "%xmm1"
    );

gcc 4.8.2版

EN

回答 1

Stack Overflow用户

发布于 2015-03-30 17:45:02

您可以使用:gcc -Q --help=target检查gcc使用的特定于目标的选项。除了对-O3gcc -O3 -Q --help=target做了同样的事情。

为了编译这段代码,您需要启用-mmmx-msse2。如果不是这样,您可以通过命令行传递它们:gcc -mmmx -msse2 ...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29333185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档