Я искал некоторую сборку ARM, и я заметил, что EOR/XOR и AND установлены флаг C и O. Как это работает? Всегда ли они очищаются? какие условия они устанавливают?Флаг переноса ARM на EOR/XOR и AND
ответ
Если вы решили продолжить работу с ассемблером ARM, вам понадобится копия ARM ARM, которая является Справочным руководством по архитектуре ARM. Есть много версий, и у каждого есть свои «функции». Я рекомендую собирать столько, сколько вы можете, но это другая история. Существует несколько способов получить электронную копию бесплатно. В любом случае:
И вам нужен набор бит S, который для ARM означает использование ANDS вместо AND. Для режима большого пальца вы всегда используете ANDS, но газ, например, отказывается принимать ANDS в режиме большого пальца (но всегда разбирает его как ands).
If S==1 and Rd == R15 then
CPSR=SPSR
else if S==1
N Flag = Rd[31]
Z Flag = if Rd == 0 then 1 else 0
C Flag = shifter_carry_out
V flag = unaffected
ПНП является такой же, как и когда речь идет о флагах
Напомним, что вы можете произвольно сдвинуть результат после операции. Флаг переноса установлен на основе выполнения с баррель-переключателем. Флаг переполнения никогда не изменяется.
Я не верю, что нормальный AND/EOR установил флаги переноса и переполнения. Варианты ANDS и EORS (AND/EOR с набором) могут устанавливать перенос, но только если правая сторона является сдвинутым операндом. Ни один из них не влияет на флаг переполнения.
Например,
ANDS R0,R1,R2, LSR #1
будет установить перенос в зависимости от b0 R2. Если бит равен 1 (т. Е. R2 был нечетным), перенос будет установлен.
См. here для подробной информации (глава 3, набор инструкций).
Как отмечают другие плакаты, флаг C обновляется на основе сдвига, который необязательно применяется к одному из исходных регистров до операции.
Флаг V (переполнение) не подвержен этим инструкциям.
Флаг Z устанавливается, если результат равен нулю, а флаг N установлен, если результат является отрицательным, если рассматривать его как целое число с двумя дополнениями (то есть бит высокого порядка является одним).
ничего себе, что выглядит некрасиво, я не сделал формат правильно. В любом случае google ищет «руку» без кавычек, и первое попадание - это обход руки руки прямо с arm.com. –
Я исправил форматирование для вас. Выберите текст и нажмите кнопку поиска в двоичном формате. – 2009-08-02 16:15:57