Может ли кто-нибудь объяснить, что делает эта инструкция, и перевести ее на C?
ubfx.w r3, r11, #0xE, #1
Согласно справочному руководству ARM, он выполняет " битовое поле со знаком и без знака * ", ноЯ не хорош со всеми этими побитовыми вещами.
UBFX просто извлекает битовое поле из исходного регистра и помещает его в младшие значащие биты регистра назначения.
Общая форма:
UBFX dest, src, lsb, width
, что в C будет:
dest = (src >> lsb) & ((1 << width) - 1);
Эквивалент C приведенного вами примера будет:
r3 = (r11 >> 14) & 1;
т.е. r3 будет 1, если установлен бит 14 в r11, в противном случае он будет равен 0.
См .: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Cjahjhee.html