зависит от того, что вы подразумеваете под точкой входа. и ответ находится в этом определении. Операционная система должна иметь определение, потому что оно должно быть в правильном режиме. так что либо операционная система всегда будет определять режим руки, например, а затем код может переключиться, если он захочет. Или если вы используете формат файла, такой как эльф с точкой входа, тогда вы МОЖЕТЕ уйти с четным адресом, являющимся рукой, а нечетным адресом является большой палец, соответствующий команде bx/blx.
Если вы говорите об одном из сердечников, то armv7m всегда будет запускаться и должен оставаться в режиме большого пальца. armv7a и r начнут работать в ручном режиме (сброс, другие будут определены в документах рук, вероятном режиме руки), а затем код может переключиться.
Если вы просто пытаетесь разобрать какой-то общий файл объекта, то вы, возможно, не сможете это понять. визуально, как человек, смотрящий на двоичный бит руки в гексагоне, когда вы видите много 0xE (начало каждого слова), которое, вероятно, представляет собой код руки, 0x6 или 0x7 и не много 0xE или ни одного (каждое полуслова), то это, вероятно, большой палец код. но это не то, на что вы можете положиться на эту задачу, поскольку первые несколько команд, вероятно, будут переключаться между режимами, если произойдет переход.
также если файл эльфа, который вы могли бы сказать из заголовков блоков, я думаю, что так выглядят инструменты gnu, поскольку они, конечно, не обнаруживают его на лету. так что, скорее всего, как вы хотите это сделать, изучите файл эльфа. если это необработанный двоичный код, просто инструкции и данные ... удача ...
Это может зависеть от того, является ли начальный адрес четным или нечетным. –
@RossRidge ты имеешь в виду полуслова? шахта начинается по адресу, выровненному по слову –
Я имею в виду даже или нечетное.Инструкции BX/BXL переключаются в режим ARM и Thumb в зависимости от того, является ли адрес четным или нечетным. –