&引用;不一致的操作数约束“;使用GCC实现内联ASM

&引用;不一致的操作数约束“;使用GCC实现内联ASM,gcc,assembly,x86,inline-assembly,Gcc,Assembly,X86,Inline Assembly,尝试使用GCC编译此源文件时出现此错误: “cryptonight_aesni.c:162:4:错误:操作数约束不一致” 具体而言: uint64_t hi, lo; // hi,lo = 64bit x 64bit multiply of c[0] and b[0] __asm__("mulq %3\n\t" : "=d" (hi), "=a" (lo) : "%a" (c[0]), "rm" (b[0])

尝试使用GCC编译此源文件时出现此错误:

“cryptonight_aesni.c:162:4:错误:操作数约束不一致”

具体而言:

      uint64_t hi, lo;
 // hi,lo = 64bit x 64bit multiply of c[0] and b[0]

  __asm__("mulq %3\n\t"
      : "=d" (hi),
        "=a" (lo)
      : "%a" (c[0]),
        "rm" (b[0])
      : "cc" );

甚至很难找出这个错误的含义,但单是如何修复它,这段代码中的指令
mulq
就是x86 64位指令。所有参数都是64位值,不能放入32位寄存器(为32位x86平台编译时)
–Michael Petch

此代码中的指令
mulq
是一条x86 64位指令。所有参数都是64位值,不能放入32位寄存器(为32位x86平台编译时)
–Michael Petch

您的目标处理器是什么?英特尔32位,填充此代码中的指令
mulq
是一条x86 64位指令。所有参数都是64位值,无法放入32位寄存器(为32位x86平台编译时)啊,是的,安装mingw64很有意义,谢谢!您的目标处理器是什么?英特尔32位,填充此代码中的指令
mulq
是一条x86 64位指令。所有参数都是64位值,无法放入32位寄存器(为32位x86平台编译时)啊,是的,安装mingw64很有意义,谢谢!