Подтвердить что ты не робот

Что такое инструкция ARM Thumb Instruction?

в разделе "Набор инструкций Thumb" в разделе 1-34 "ARM11TechnicalRefManual" он сказал, что:

"Набор инструкций Thumb является подмножеством наиболее часто используемых 32-битных инструкций ARM. Тонкие инструкции имеют длину 16 бит и имеют соответствующую 32-разрядную инструкцию ARM, которая оказывает такое же влияние на модель процессора."

может ли кто-нибудь объяснить это особенно второе предложение и сказать, как процессор выполняет его?

4b9b3361

Ответ 1

Процессор ARM имеет 2 набора инструкций, традиционный набор ARM, где все инструкции 32-разрядные, и более сконденсированный набор Thumb, где наиболее распространенные инструкции - 16-разрядные (и некоторые из них 32-разрядные). Какой набор команд для запуска может быть выбран разработчиком, и только один набор может быть активным (то есть, как только процессор переключится в режим Thumb, все команды будут декодированы с использованием Thumb вместо ARM).

Хотя они представляют собой разные наборы инструкций, они имеют сходную функциональность и могут быть представлены с использованием одного и того же языка ассемблера. Например, инструкция

ADDS  R0, R1, R2

может быть скомпилирован в ARM (E0910002/11100000 10010001 00000000 00000010) или Thumb (1888/00011000 10001000). Конечно, они выполняют ту же функцию (добавьте r1 и r2 и сохраните результат в r0), даже если у них разные кодировки. Это означает, что инструкции Thumb имеют длину 16 бит и имеют соответствующую 32-битную инструкцию ARM, которая оказывает такое же влияние на модель процессора.

Каждая * инструкция в кодировке Thumb также имеет соответствующую кодировку в ARM, что подразумевается под предложением подмножества.


*: Не строго верно, в ARM нет инструкции "IT", хотя ARM в любом случае не нуждается в "IT" (это будет проигнорировано ассемблером).