В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > ARM
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Формат 19: Длинный переход со ссылкой

Формат 19
Рис. 57. Формат 19

Действие

Эта команда выполняют дальний переход со ссылкой. При формировании кода команды ассемблер выполняет "склейку" из двух 11-битных полей - половин, полученных из двух THUMB команд BL, следующих друг за другом. В итоге формируется 23-битное смещение со знаком, кратное длине одного полуслова, и при этом бит 0 игнорируется.

Команда 1 (H = 0). В первой команде поле смещения содержит старшие 11 бит адреса, по которому будет осуществлен переход. Это поле подвергается смещению влево на 12 бит и складывается с текущим содержимым регистра PC. Результат этого сложения размещается в регистре LR.

Команда 2 (H = 1). Во второй команде поле смещения содержит младшие 11 бит адреса, по которому будет осуществлен переход. Это поле подвергается смещению влево на 1 бит и складывается с уже измененным (при выполнении предыдущей команды) содержимым регистра LR. После чего полный 32-битный адрес перехода (из них 23 бита - смещение), к этому моменту уже хранящийся в регистре LR, копируется в регистр PC. Адрес команды, следующий сразу за этой командой BL, копируется в регистр LR, устанавливая в нем в единицу бит 0. При задании перехода необходимо учитывать результат работы операций предвыборки, что фактически вызовет увеличение регистра PC на 4 байта больше, чем адрес этой команды.

Синтаксис команды в ассемблере приведен в таблице 30.

Табл. 30. Команды формата 19

H THUMB ассемблер ARM эквивалент Действия
0 BL метка отсутствует LR := PC + OffsetHigh << 12
1     temp := адрес следующей команды
PC := LR + OffsetLow << 1
LR := temp | 1

Число машинных тактов при выполнении команд

Все команды этого формата эквивалентны командам в режиме ARM согласно таблице 30. Число машинных тактов выполнения этой команды в режиме THUMB идентично с числом тактов выполнения ее в режиме ARM. Примечание: для более подробной информации см. соответствующую главу.

Примеры

BL faraway    ; Безусловный переход к "faraway"
next ...      ; и размещение адреса следующий команды (т.е. "next")
              ; в регистре ссылки R14 (LR), установив в нем в 1 бит 0.
     ...      ; Примечание: фактически в код команды THUMB будет занесено 
              ; смещение, кратное числу полуслов.
faraway ...   ; Адрес метки должен быть выровнен по границе одного полуслова


<-- Предыдущая страница Оглавление Следующая страница -->