Извлечение битового поля ARM? - PullRequest
3 голосов
/ 03 декабря 2011

Может ли кто-нибудь объяснить, что делает эта инструкция, и перевести ее на C?

ubfx.w          r3, r11, #0xE, #1

Согласно справочному руководству ARM, он выполняет " битовое поле со знаком и без знака * ", ноЯ не хорош со всеми этими побитовыми вещами.

1 Ответ

6 голосов
/ 03 декабря 2011

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

...