2015-05-23 61 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'放到一個寄存器裏,它應該可以這樣工作嗎? –