在学习汇编代码时,我看到了下面的代码段。我有点困惑。

mov $0x0, %ecx
lea  0x3(%rdi), %eax
cmp $0xffffffffffffffff, %edi    ; ???
cmovle %eax, %rdi

我已经标线了???。我不明白为什么在汇编代码中使用该行?

程序集:x86 64 位

编辑:我的代码中没有任何比较。出于这个原因,我想知道为什么?

注意:我没有找到该问题的相关标题。如果你找到了,请帮助并通知我。所以,我可以改变

最佳答案

它将寄存器 %edi 与常量 $0xffffffffffffffff 进行比较,后者实际上是常量 -1

关于assembly - 为什么 cmp $0xffffffffffffffff, %edi 用于汇编?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7977061/

10-11 15:38