gcc内联 - 'cmp'的操作数类型不匹配

问题描述 投票:3回答:1

我收到以下错误:

汇编程序消息: 错误:“cmp”的操作数类型不匹配

我的代码中唯一的cmp是:

"cmpl %eax, $15\n\t"

我没有弄到底有什么问题 - 我有一个寄存器和一个立即值,它应该隐式地扩展到32位。

gcc inline-assembly
1个回答
0
投票

我有同样的问题,但在我的情况下错误是

cmp $0xFFFFFFFFFFFFFFFF, %rdx

解决方案就是这样做

movq $0xFFFFFFFFFFFFFFFF, %rcx

先,然后

cmp %rcx, %rdx

(afaik,对于更大的数字,cmp需要两个寄存器,而不是const和寄存器)

© www.soinside.com 2019 - 2024. All rights reserved.