2012-03-25 53 views
0

有人可以告诉我如何比较ASM x64中的两个参数(RDIRSI)吗?比较两个参数ASM x64

我对编译一个问题,当我使用:

cmp byte[rdi+rax],byte[rsi+rax] 

我得到一个错误:

"error: invalid combination of opcode and operands" 
+2

您不能有两个内存操作数。先将一个加载到一个寄存器中。 – harold 2012-03-25 17:08:19

+0

好的,谢谢。像那样 :? MOV RCX,RDI CMP字节[RDI + RAX],字节[RCX + RAX] 我有一个错误太.. :( – Zat42 2012-03-25 17:13:10

+1

喜欢的是:'MOV CL,字节[RDI + RAX]; CMP CL ,字节[rsi + rax]' – 2012-03-25 17:32:21

回答

4

cmp指令,像大多数的x86/x86-64的指令,允许最多只有一个内存操作数。因此,要比较两个内存位置的内容,需要将其中至少一个加载到一个寄存器中:

mov cl, byte[rdi+rax] 
cmp cl, byte[rsi+rax]