Я новичок в сборке, и это довольно весело. В любом случае я один вопрос ...простой вопрос сборки
cmpw cr7, %r29, %r8
Это код эквивалент if cr7 > %r29 and %r8
?
Я новичок в сборке, и это довольно весело. В любом случае я один вопрос ...простой вопрос сборки
cmpw cr7, %r29, %r8
Это код эквивалент if cr7 > %r29 and %r8
?
Он сравнивает r29 с r8 и помещает результат в cr7, я считаю.
Другими словами:
CR7 = R29 - r8
После прочтения некоторых PPC документы, это выглядит как CR (регистр сравнения), получает кодовое значение, представляющее меньше, больше, равно.
less: 0x100
greater: 0x010
equal: 0x001
В других архитектур, таких как x86, нет CR сами по себе, а группа флагов, таких, как ZF, SF и CF (ноль, знак, и нести флаги). Они всегда устанавливаются во время арифметических операций, таких как вычитание. Следовательно, сравнение в основном такое же, как и вычитание.
Спасибо, это имеет смысл. Но почему отрыв? – Mark
Сравнение действительно просто вычитание. Если вы сравниваете A и B, A меньше B, если A-B отрицательный. Это больше, чем B, если A-B положителен, и они равны, если A-B == 0. Тем не менее, я не уверен на 100%, что PPC сохраняет вычитаемый результат. Я нашел некоторую документацию, в которой говорится, что cr получает значения 4, 2 и 1, для меньшего, большего, равного, соответственно. –
А, ладно. Вот полный код: cmpw cr7,% r29,% r8 beq cr7, loc_152A13 – Mark
Это, вероятно, поможет другим предоставить вашу архитектуру. – ktm5124
Похоже, PowerPC –
да, это PPC – Mark