Thumb

Материал из Википедии — свободной энциклопедии
Версия от 18:53, 5 сентября 2025; imported>Sldst-bot (Уточнение даты установки ш:Нет источников: 2011-02-03 (до 2024-10-19 ш:Rq с параметром sources))
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Thumb — режим процессоров ARM, в котором используется сокращённая система команд. Она состоит из 36 команд, взятых из стандартного набора 32-разрядных команд архитектуры ARM и преобразованных до 16-разрядных кодов.

Длина команд Thumb составляет половину длины стандартных 32-разрядных команд, что позволяет существенно сократить необходимые объёмы памяти программ (порядка 30 %) и, кроме того, позволяет использовать более дешёвую 16-разрядную память.

При выполнении эти команды дешифруются процессором в эквивалентные операции ARM, выполняемые за то же количество тактов. Переключение ARM <-> THUMB возможно командой BX либо переключением режима работы по прерыванию/исключению.

Набор команд THUMB неортогонален и малоэлегантен. Команды позволяют работать напрямую лишь с 8 младшими РОН; к 8 старшим РОН (включая SP, LR, PC) применимы лишь несколько операций. В наборе недоступны следующие возможности ARM: умножение с накоплением/расширением, сопроцессорные операции, доступ к PSR и регистрам других контекстов, атомарный обмен SWAP. Недоступны условное исполнение, сдвиг 2-го операнда в командах общего назначения, трёхадресные операции (кроме ADD и SUB), автоинкрементный и автодекрементный режимы адресации. Все команды обработки данных устанавливают коды условий. Команда BL вынужденно кодируется в два слова, причём смещение ограничено 23 битами. Доступ к стеку (мультирегистровые команды PUSH и POP) организован принудительно по 13-у регистру, стек растёт вниз.

Шаблон:Compu-stub

См. также

Шаблон:Нет источников