Если вы случайно пропустили порядок байтов, применяется следующее. Некоторая информация, вероятно, будет полезна, даже если порядок байтов в исходном примере правильный.
extab
и exidx
— это разделы, добавленные AAPCS, который является более новым ARM ABI.
Для более старых APCS указатель кадра или fp
является корнем ссылки активной процедуры обратно на основную процедуру (или _start). С помощью AAPCS записи создаются и размещаются в разделах exidx
и extab
. Они необходимы для очистки стеков (и ресурсов), когда fp
используется в качестве универсального регистра.
exidx
представляет собой упорядоченную таблицу начальных адресов подпрограмм и индекс extab
(или не может раскручиваться). PC
(счетчик программ) можно просмотреть и выполнить поиск по таблице, чтобы найти соответствующую запись extab
.
В документации ARM EHABI есть раздел 6. в разделе Записи таблицы обработки исключений. Это extab
записей, и вы можете хотя бы начать с них, чтобы узнать больше. Есть два определенных,
- Общий (или С++)
- АРМ компактный
Модель compact будет использоваться для большей части кода на языке C. В стеке нет объектов, подлежащих уничтожению, как в C++. Шестигранник 8003aab0
дает,
1000
b для ведущего полубайта, так что это компактно.
0000
b для индекса. Su16—короткий
03
h — извлечь 16 байт, некоторые локальные переменные или отступы.
aa
h - поп r4-r6
b0
h - финиш
Таблица 4, Определенные ARM инструкции раскручивания кадра содержат данные раскручивания каждого байта.
Следующим является 0x002c002a
, который является смещением к общему подпрограмме личности. Следующие четыре значения должны быть 8.2 Data Structures, которые представляют собой размер и должны быть равны нулю... Следующим будет шаг, а затем четырехбайтовая информация о типе объекта. Смещение 0x2c002a должно вызывать деструктор объектов или какую-то оболочку для этого.
Я думаю, что весь код C++ предназначен для использования этого метода Generic. Другие методы предназначены для разных языков и компиляторов НЕ.
Связанные вопросы и ответы и ссылки:
person
artless noise
schedule
11.08.2019
0xb0aa0380
, а не litte-endian0x8003aab0
? - person artless noise   schedule 11.08.2019