OSDev Wiki
Регистрация
Нет описания правки
Нет описания правки
Строка 4: Строка 4:
   
 
В вариантах архитектуры, поддерживающих [[Команды набора Thumb|систему команд Thumb]] (ARMv4T и последующие) появилась [[Инструкция BX (ARM)|инструкция <tt>BX</tt>]], предназначенная для перехода к выполнению кода Thumb. Она копирует в PC содержимое заданного регистра общего назначения и дополнительно устанавливает младший бит PC, что является признаком работы в режиме Thumb.
 
В вариантах архитектуры, поддерживающих [[Команды набора Thumb|систему команд Thumb]] (ARMv4T и последующие) появилась [[Инструкция BX (ARM)|инструкция <tt>BX</tt>]], предназначенная для перехода к выполнению кода Thumb. Она копирует в PC содержимое заданного регистра общего назначения и дополнительно устанавливает младший бит PC, что является признаком работы в режиме Thumb.
  +
  +
Для вызова из кода ARM подпрограмм, использующих систему команд Thumb, может использоваться комбинация из команды, заносящей в LR правильный адрес возврата, и собственно [[Инструкция BX (ARM)|инструкции <tt>BX</tt>]]. Начиная с процессоров версии ARMv5, появилась [[Инструкция BLX (ARM)|команда <tt>BLX</tt>]], обеспечивающая занесение в LR адреса возврата и переход к подпрограмме Thumb, причём адрес перехода может либо находиться в каком-либо регистре общего назначения (подобно [[Инструкция BX (ARM)|инструкции <tt>BX</tt>]]), либо задаваться смещением, что обеспечит переход в пределах 32 Мбайт вперёд или назад (подобно [[Инструкции B, BL (ARM)|команде <tt>BL</tt>]]).
  +
   
 
[[Категория:Архитектура ARM]]
 
[[Категория:Архитектура ARM]]

Версия от 07:47, 23 сентября 2010

Все версии архитектуры ARM поддерживают команду перехода B, обеспечивающую переход в пределах 32 Мбайт вперёд или назад. Кроме того, поскольку счётчик команд PC является одним из регистров общего назначения, переход может быть выполнен записью в него нового значения, дальность перехода при этом не ограничена. Условные и безусловные переходы выполняются одними и теми же командами, поскольку все они включают в свой состав поле кода условия.

Для вызова подпрограмм используется специальная разновидность обычной команды перехода Bинструкция BL. Она также осуществляет переход в пределах 32 Мбайт вперёд или назад, но дополнительно заносит адрес возврата в регистр связи LR (R14). Специальной команды для возврата из подпрограммы не предусмотрено; для этого может использоваться, например, команда пересылки MOV PC, LR.

В вариантах архитектуры, поддерживающих систему команд Thumb (ARMv4T и последующие) появилась инструкция BX, предназначенная для перехода к выполнению кода Thumb. Она копирует в PC содержимое заданного регистра общего назначения и дополнительно устанавливает младший бит PC, что является признаком работы в режиме Thumb.

Для вызова из кода ARM подпрограмм, использующих систему команд Thumb, может использоваться комбинация из команды, заносящей в LR правильный адрес возврата, и собственно инструкции BX. Начиная с процессоров версии ARMv5, появилась команда BLX, обеспечивающая занесение в LR адреса возврата и переход к подпрограмме Thumb, причём адрес перехода может либо находиться в каком-либо регистре общего назначения (подобно инструкции BX), либо задаваться смещением, что обеспечит переход в пределах 32 Мбайт вперёд или назад (подобно команде BL).