• asm:operand number missing after %-letter


    error: invalid 'asm': operand number missing after %-letter

    代码如下:

    int get_max(int *a, int len)
    {
        assert(l % 4 == 0);
        int ret, tmp[4];

        __asm__ __volatile__(
            "xorps %%xmm0, %%xmm0\n"
            "LP3:\n\t"
            "movdqa %%xmm0, %%xmm1\n\t"
            "pcmpgtd (%1), %%xmm1\n\t"
            "andps %%xmm1, %%xmm0\n\t"
            "andnps (%1), %%xmm1\n\t"
            "orps %%xmm1, %xmm0\n\t"        // %xmm0 -> %%xmm0
            "addl $16, %1\n\t"
            "subl $4, %2\n\t"
            "jnz LP3\n\t"
            "movdqu %%xmm0, (%3)\n\t"
            "movl (%3), %%eax\n\t"
            "cmpl 4(%3), %%eax\n\t"
            "cmovll 4(%3), %%eax\n\t"
            "cmpl 8(%3), %%eax\n\t"
            "cmovll 8(%3), %%eax\n\t"
            "cmpl 12(%3), %%eax\n\t"
            "cmovll 12(%3), %%eax\n\t"
            "movl %%eax, %0\n"
            :"=m"(ret)
            :"r"(a),"r"(len),"r"(tmp)
            :"%eax"
        );

        return ret;
    }

    修改成

    int get_max(int *a, int len)
    {
        assert(l % 4 == 0);
        int ret, tmp[4];

        __asm__ __volatile__(
            "xorps %%xmm0, %%xmm0\n"
            "LP3:\n\t"
            "movdqa %%xmm0, %%xmm1\n\t"
            "pcmpgtd (%1), %%xmm1\n\t"
            "andps %%xmm1, %%xmm0\n\t"
            "andnps (%1), %%xmm1\n\t"
            "orps %%xmm1, %%xmm0\n\t"        // %xmm0 -> %%xmm0
            "addl $16, %1\n\t"
            "subl $4, %2\n\t"
            "jnz LP3\n\t"
            "movdqu %%xmm0, (%3)\n\t"
            "movl (%3), %%eax\n\t"
            "cmpl 4(%3), %%eax\n\t"
            "cmovll 4(%3), %%eax\n\t"
            "cmpl 8(%3), %%eax\n\t"
            "cmovll 8(%3), %%eax\n\t"
            "cmpl 12(%3), %%eax\n\t"
            "cmovll 12(%3), %%eax\n\t"
            "movl %%eax, %0\n"
            :"=m"(ret)
            :"r"(a),"r"(len),"r"(tmp)
            :"%eax"
        );

        return ret;
    }

    编译通过。

  • 相关阅读:
    进程与线程
    Codeforces Round #835 (Div. 4) A. Medium Number
    Java异常该如何正确使用,避坑指南
    C6000教学实验箱_嵌入式操作教程_音频编码:3-7 G711A音频编码实验
    【算法题】2905. 找出满足差值条件的下标 II
    FFmpeg编译hevc版本,支持mac、linux系统
    【刷题笔记】二维数组中的查找
    设计模式-组合模式(决策树)
    基于SpringBoot的校园志愿者管理系统
    mysql超全语法大全
  • 原文地址:https://blog.csdn.net/xiaozhiwise/article/details/126877994