Большинство произвольных последовательностей слов будут представлять как действительные инструкции ARM, так и допустимые пары инструкций Thumb.В большинстве случаев, таким образом, не было бы 100% надежного способа различить два, если бы не можно было идентифицировать код, который, как известно, выполнялся, и который выполнял бы BX или BLX с известной целью перехода (в этом случае LSBtarget будет различать код ARM или Thumb).
Однако, с точки зрения эвристики, распределение битовых комбинаций, обнаруженных в типичном коде, будет очень разным в коде ARM и Thumb.Например, даже если кто-то ничего не знал о каких-либо конкретных инструкциях, он просто перечислял содержимое каждого 32-разрядного слова в виде 8-значного шестнадцатеричного числа, по одному на строку, и наблюдал распределение значений цифр в каждомВ столбце столбцы, все восемь столбцов, вероятно, дадут разные распределения с кодом ARM, но первые четыре столбца будут иметь распределение, подобное последним четырем, если дан код Thumb.Этот эффект обычно был бы особенно выражен, если бы посмотреть на столбец «код условия», так как большинство инструкций не указывают код условия.
Изучение битовых комбинаций, связанных с конкретными инструкциями, вероятно, позволило бы сканеруидентифицировать конструкции, которые не имели бы большого смысла для ARM, но имели бы смысл для большого пальца, или наоборот, но даже простое числовое распределение может быть адекватным во многих ситуациях.