ARM v7 ORRS мнемоника без операнда2 - PullRequest
2 голосов
/ 11 июля 2011

Что значит:

ORRS R1, R3 до?

Это просто R1 | = R3, возможно установка флагов N или Z?

Это может быть очевидным, но я не нашел документации, описывающей мнемонику ORR без операнд2.

Обратная связь с благодарностью.

-b.

Ответы [ 3 ]

3 голосов
/ 12 июля 2011

В сборке ARM инструкции, в которых регистр назначения (Rd) совпадает с регистром источника (Rn), могут опускать Rd. Таким образом, они одинаковы и будут собираться по одной и той же инструкции.

orrs r1, r1, r3
orrs r1, r3

add r1, r1, #5
add r1, #5

и т. Д.

3 голосов
/ 12 июля 2011

Это инструкция Thumb . В 16-битном опкоде Thumb вы можете использовать только два операнда, вы не получите дополнительные operand2.

Как вы уже догадались, он делает R1 |= R3. Наличие флага S указывает, что эта инструкция является частью блока If-Then (что Thumb имеет вместо надлежащего условного выполнения ARM); ORR и ORRS генерируют один и тот же код операции и отличаются только контекстом.

1 голос
/ 12 июля 2011

Это может быть в armv7m trm или его собственном trm, но у них есть, я не помню термин унифицированный, язык ассемблера, поэтому

add r0, r3

будет собираться длякак для руки, так и для большого пальца, для большого пальца это то же самое, что и для руки, выше приравнивается к добавлению r0, r0, r3.Для большого пальца вы не получите опцию трех регистра, но подразумевается функциональность r0 = r0 + r3.

...