2012-03-25 16 views
0

Kann mir jemand sagen, wie man zwei Argumente (RDI und RSI) in ASM x64 vergleicht?Vergleichen Sie zwei Argumente ASM x64

ich ein Problem auf Kompilation haben, wenn ich benutze:

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

Ich erhalte eine Fehlermeldung:

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

Sie können nicht zwei Speicheroperanden haben. Laden Sie zuerst eins in ein Register. – harold

+0

Ok danke. So wie das :? mov rcx, rdi cmp byte [rdi + rax], byte [RCX + rax] ich auch einen Fehler haben .. :( – Zat42

+1

wie folgt aus:. 'Mov cl, byte [rdi + rax]; cmp cl , byte [rsi + rax] ' –

Antwort

4

cmp Anweisung, wie die Mehrheit der x86/x86-64 Anweisungen erlaubt höchstens ein Speicheroperand. Um also den Inhalt von zwei Speicherplätzen zu vergleichen, müssen Sie mindestens einen von ihnen in ein Register laden:

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