繁体   English   中英

c-在“ asm”中修复未知的寄存器名称“%xmm1”?

[英]c - fix unknown register name ‘%xmm1’ in ‘asm’?

我正在尝试为ubuntu 14.04 X86建立一个项目,但出现以下错误:

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 (

在功能上:

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

您可以使用以下命令检查gcc使用的特定于目标的选项: gcc -Q --help=target gcc -O3 -Q --help=target-O3相同。

为了编译此代码,您需要启用-mmmx-msse2 如果不是这种情况,则可以将它们通过命令行传递: gcc -mmmx -msse2 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM