首页 > 解决方案 > 错误:没有给出指令助记符后缀,也没有寄存器操作数;无法调整大小指令

问题描述

我查看了以前的堆栈问题,但我仍然迷路了。帮助?

这是有问题的代码:

  float dotproduct(int x[], int y[], int len){

    int output = 0;

    int* x1 = x;
    int* x2 = y;

    asm(
        ".loop: \n \t"

        "mov        %1,  %%rax \n\t"
        "imul       %2, %%rax \n\t"
        "add        %%rax, %%rbx \n\t"

        "add    $8, %1 \n\t"
        "add    $8, %2 \n\t"
        "dec    %3 \n\t"

        "jnz .loop \n\t"

        "movl %%ebx, %0 \n\t"
        :"=g" (output)
        :"g" (x1), "g" (x2), "g" (len)
        :"rax", "%rbx", "%rcx", "%rdx"
    );

    return output;
}

错误:没有给出指令助记符后缀,也没有寄存器操作数;无法调整大小指令

Linux终端截图

标签: assemblyx86-64inline-assembly

解决方案


推荐阅读