2015-05-23 18 views
-2

我试图在AMD64程序集中重新创建一个“小于”函数。组装不到

如在此情况下,我想返回1,如果在%RDI参数是小于3

 .globl f 
     .type f, @function 
f: 
     xor %rax, %rax 
     movq %rdi, %r10 
     cmpq $3, %r10 
     cmovlq $1, %rax 
     ret 

我从来没有使用过CMOV,我不知道如果我使用它的正确方法。我得到以下错误:

Error: suffix or operands invalid for cmovl

谁能帮助我在这里?

回答

3

你应该参考指令集的参考。没有允许立即操作数的cmov,您需要使用寄存器。

+0

好的,谢谢,所以如果我把'$ 1'放到一个寄存器里,它应该可以这样工作吗? –