Thumb код в действии
Простая подпрограмма на языке C
Ниже приводится простая подпрограмма на языке C, показывающая различия между кодами ARM и Thumb. Эта подпрограмма возвращает абсолютную величину целого числа C, переданного ему как параметр.
Код на языке C:
if (x>=0)return x;
else
return -x;
Эквивалент ARM ассемблерной версии - (исключая преамбулу):

Версия Thumb ассемблирования:

Размеры кода для обоих версий показываются в таблице.
Таблица 1: Размер кода для подпрограммы абсолютной величины

Меньший размер ассемблированного кода Thumb
Сравнение, приведенное в таблице 1 показывает, что код Thumb - на 33 % плотнее кода ARM, реализующего точно такую же функцию. Обратите внимание на то, что для выполнения задачи в коде Thumb необходимо большее количество команд чем в эквиваленте ARM. Однако, поскольку формат команды Thumb - только половина длины команд ARM, то общий размер подпрограммы в коде Thumb все же меньше.
Пример кодирования вручную
Как пример кодирования вручную, рассмотрим пример преобразования двоичного значения в шестнадцатиричное :
Код ARM:
Код Thumb:

Cоответствующие размеры ARM и Thumb кодов показаны ниже.
Таблица 2: Размеры кодов подпрограмм преобразования двоичной величины в шестнадцатиричную
В данном случае код Thumb оказывается на 45% более плотным чем эквивалентный код ARM, в точно таком же алгоритме.
Таблица 3: Система команд Thumb:

Mаршрут разработки программного обеспечения
Мы рекомендуем использовать комплекта инструментальных средств разработки программного обеспечения фирмы ARM (ARM Software Development Toolkit).
Previous page: Thumb -ориентированные ядра и их развитие
Next page: Тестирование Thumb