В сборке ARM немедленные кодируются 8-битным повернутым значением, что означает, что мы можем только кодировать
(0-256)^2n.
Теперь моя проблема в том, что я хочу очистить старшие 16 бит r0 и заменить его полусловом, хранящимся в r1. Но из-за ограниченного круга непосредственных участников я должен сделать: -
bic r0, r0, #0xff000000
bic r0, r0, #0x00ff0000
add r0, r0, r1, LSL #16
Можно ли заменить 2 двухсторонние инструкции одной инструкцией? 0xffff0000 не кодируется. Возможно, мне следует использовать другую логическую операцию, чтобы очистить старшие 16 бит?
Спасибо
РЕДАКТИРОВАТЬ: Извините, я забыл сказать, что старшие 16 бит R1 пуст, и я использую ARM7TDMI