• 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;
    }

    编译通过。

  • 相关阅读:
    微信小程序 实现滑块是矩形的slider组件
    消息队列全面解析
    js-nginx配置字段适配前端服务
    LintCode 1394 · Goat Latin (字符串处理题)
    接入网络技术
    php 小数计算 结果变无限小数解决方案
    【元宇宙欧米说】一个科幻 NFT,一场关于创作者经济的探索
    Java面试_并发编程_线程基础
    MySQL及MySQLworkbench安装教程
    机器学习笔记之条件随机场(一)背景介绍
  • 原文地址:https://blog.csdn.net/xiaozhiwise/article/details/126877994