Я столкнулся с этой проблемой в своем текущем проекте, который требует рассуждения о коде на двоичном уровне.С учетом адреса инструкции можно определить начальный адрес функции, входящей в нее?
Я думаю, что мы можем определить начальное местоположение всех функций в программе, посмотрев инструкции операнда на CALL. После того, как у нас есть этот список, мы можем определить, какая функция содержит адрес, просто отыскивая назад, пока мы не найдем начальный адрес? IE является начальным адресом функции, содержащей инструкцию, наибольший адрес функции, который меньше адреса инструкции?
Если приведенный выше метод неверен, существует ли другой способ найти начальный адрес функции, содержащей инструкцию?
Редактировать: Добавлено уточнение вопроса.
изменить2: Возможно, мой метод неправильный. Компиляторам не гарантировано разместить функциональные тела в смежных областях машинного кода.
Язык ассемблера даже не требуется для использования функций. Это может быть просто большой спагетти беспорядков gotos. –
Вы правы в контексте языка ассемблера. Контекст этого - результат скомпилированного языка. – lea