2014-10-30 2 views
0

Я понимаю, что xor является эксклюзивным или и может быть использован для xorl %ebx %ebx может быть использован для очистки реестрапутаются исключающим использование в x86 сборке

однако во время чтения я наткнулся на другое использование xorl и путаюсь. xorl 12(%ebp),%eax, что означает eax = x^y

в этом контексте используется для экспоненциации x. Это неправильное использование? Благодарю.

+1

Символ '^' часто используется для указания операции XOR. Фактически, он используется как оператор XOR во многих языках программирования, включая C, Perl и Python. –

+0

ах, да, я смутился. Я сразу же подумал о работе с питанием, но я предполагаю, что он использовался в эксклюзиве или контексте. Благодарю. – gensou

+0

В этом контексте '^' является оператором C для исключительных или. Таким образом, 'x^y' означает' x xor y', а не 'x к мощности y'. Так что это не оператор возведения в степень. –

ответ

4

Здесь ^ означает XOR, как это используется в С.

Предположим, что мы используем AT & T нотации, то

xorl 12(%ebp), %eax 

будет xoreax со значением 12 байт от ebp (если я помню мой ассемблер), который обычно является локальной переменной. Таким образом, было бы правильнее сказать

eax ^= y 

(при условии, y находится в ebp+12), или

x ^= y 

если x хранится в eax регистре.

+1

Обозначение Intel? Похож на синтаксис AT & T для меня. – nrz

+0

@nrz doh - вот что я имел в виду, но тогда я написал не то. Спасибо - исправлено. – abligh

 Смежные вопросы

  • Нет связанных вопросов^_^