Для семейства ARM доллар останавливается на ARM ARM (Справочное руководство по архитектуре ARM). Существует раздел набора команд ARM и раздел набора команд Thumb. В каждой из двух инструкций указывается, какое поколение (ARMvX, где X - это какое-то число, например 4 (arm7) или 5 (таймфрейм arm9) и т. Д.). Поскольку код операции и псевдокод указаны для каждой инструкции, вы должны быть в состоянии выяснить, что такое настоящая команда и, если есть, синтаксис для сохранения ввода на другой (например, push и pop).
В частности, для Cortex-m3 и thumb2 вам также необходимо ознакомиться с TRM (Техническое справочное руководство). У ARM, я забыл название, универсальный синтаксис, который они пытаются использовать, который должен работать как с Thumb, так и с ARM. Например, для ARM у вас есть три инструкции для регистрации:
add r1,r1,r2
На большом пальце есть только две операции с регистрами
add r1,r2
Желание в основном состоит в том, чтобы встретиться посередине, или, я бы сказал, более точно, чтобы побудить сборщиков ARM анализировать инструкции Thumb и кодировать их с помощью эквивалентной инструкции ARM без жалоб. Возможно, это началось с большого пальца, а не с большого пальца2. До недавнего времени я всегда разделял два синтаксиса в своем коде (и я все еще обычно использую синтаксис ARM для ARM и Thumb для большого пальца).
И затем да, вы должны увидеть, какова конкретная реализация инструмента ассемблера, в вашем случае binutils. Похоже, вы нашли секретное кольцо декодера binutils / gnu.