使用GCC的Inline ASM“不一致的操作数约束”

时间:2016-12-28 08:57:43

标签: gcc assembly x86 inline-assembly

尝试使用GCC编译此源文件时出现此错误: https://github.com/wolf9466/cpuminer-multi/blob/master/cryptonight_aesni.c

“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" );

很难找出这个错误甚至意味着什么,但单独如何解决它

1 个答案:

答案 0 :(得分:0)

此代码中的指令mulq是x86 64位指令。所有参数均为64位值,并且不适合32位寄存器(针对32位x86平台进行编译时)                     –迈克尔·佩奇