Сравните два аргумента ASM x64 - PullRequest
0 голосов
/ 25 марта 2012

Кто-то может сказать мне, как сравнить два аргумента (RDI и RSI) в ASM x64?

У меня проблема с компиляцией при использовании:

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

Я получаю сообщение об ошибке:

"error: invalid combination of opcode and operands"

1 Ответ

4 голосов
/ 23 апреля 2012
Инструкция

cmp, как и большинство инструкций x86 / x86-64, допускает не более одного операнда памяти.Итак, для сравнения содержимого двух ячеек памяти вам необходимо загрузить хотя бы одно из них в регистр:

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