Формат 18: Безусловный переход
Рис. 56. Формат 18
Действие
Эта команда выполняют относительную запись или чтение регистра SP. Синтаксис команды в ассемблере приведен в таблице 29.
Табл. 29. Команда безусловного перехода
THUMB ассемблер |
ARM эквивалент |
Действия |
B метка |
BAL метка (кратно одному полуслову) |
Перейти по адресу PC + (Смещение << 1), где адрес метки может быть смещен относительно текущего значения PC в диапазоне +2048 байт. |
Примечания: Смещение, заданное в этой команде, является 12-битным адресом с дополнением до двух (со знаком), поэтому должен быть выровнен по границе одного полуслова (т.е. бит 0 должен быть равен нулю). При этом ассемблер при формировании команды фактически выполнить деление на 2 (#Imm >> 1), чтобы получить верное значение поля 11-битного смещения со знаком.
Число машинных тактов при выполнении команд
Все команды этого формата эквивалентны командам в режиме ARM согласно таблице 29. Число машинных тактов выполнения этой команды в режиме THUMB идентично с числом тактов выполнения ее в режиме ARM. Примечание: для более подробной информации см. соответствующую главу.
Примеры
here B here ; Бесконечный цикл. Код такой команды: 0xE7FE
B jimmy ; Перейти по адресу метки "jimmy"
... ; Примечание: фактически в код команды будет занесено смещение
... ; содержащее число полуслов до метки " jimmy "
;
jimmy ... ; Адрес метки должен быть выровнен по границе одного полуслова
|
|