2011-01-14 4 views
1

Я новичок в сборке, и это довольно весело. В любом случае я один вопрос ...простой вопрос сборки

cmpw cr7, %r29, %r8 

Это код эквивалент if cr7 > %r29 and %r8?

+1

Это, вероятно, поможет другим предоставить вашу архитектуру. – ktm5124

+0

Похоже, PowerPC –

+0

да, это PPC – Mark

ответ

1

Он сравнивает r29 с r8 и помещает результат в cr7, я считаю.

Другими словами:

CR7 = R29 - r8

После прочтения некоторых PPC документы, это выглядит как CR (регистр сравнения), получает кодовое значение, представляющее меньше, больше, равно.

less: 0x100 
greater: 0x010 
equal: 0x001 

В других архитектур, таких как x86, нет CR сами по себе, а группа флагов, таких, как ZF, SF и CF (ноль, знак, и нести флаги). Они всегда устанавливаются во время арифметических операций, таких как вычитание. Следовательно, сравнение в основном такое же, как и вычитание.

+0

Спасибо, это имеет смысл. Но почему отрыв? – Mark

+1

Сравнение действительно просто вычитание. Если вы сравниваете A и B, A меньше B, если A-B отрицательный. Это больше, чем B, если A-B положителен, и они равны, если A-B == 0. Тем не менее, я не уверен на 100%, что PPC сохраняет вычитаемый результат. Я нашел некоторую документацию, в которой говорится, что cr получает значения 4, 2 и 1, для меньшего, большего, равного, соответственно. –

+0

А, ладно. Вот полный код: cmpw cr7,% r29,% r8 beq cr7, loc_152A13 – Mark

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