@Gigabait

Выполнение кода во время дизассемблирования?

Интересует вопрос, каким образом реализовано выполнение ассемблера во время его дизассемблирования? Видел несколько проектов, в которых это было реализовано, например: высокое использование оперативной памяти во время процесса дизассемблирования, или высокая нагрузка на процессор в той же ida к примеру.
Можете скинуть статей по данной теме? В какую сторону гуглить? Т.к сам ничего не нашел по этой теме, либо это не сильно придаётся огласке...
  • Вопрос задан
  • 193 просмотра
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev
software engineer
Собственно гуглить нужно не "выполнение ассемблера во время дизасемблирования", это некорректная фраза. Процессор не выполняет ассемблер, он выполняет машинный код.
Это процесс дизасемблирования позволяет перевести машинный код в понятный человеку ассемблер.

Гуглить нужно "как работает отладчик".
Для программ это сделано на уровне операционной системы.
Есть специальный режим отладки, в котором отладчик запускает программу, что позволяет ему выполнять ее пошагово.

Отладка вне операционной системы, или отладка ядра операционной системы, уровень посложнее. Но он тоже предусмотрен уже в современных процессорах, когда ты отладчик вешает свой код на прерывание и переводит процессор в режим, чтобы после каждой инструкции выполнялся код отладчика.

На старых процессорах (где-то в районе 286 и раньше), такого режима вроде не было, там было чуток сложнее отлаживать по шагам, но с другой стороны все работали в едином пространстве, все процессы имели доступ друг к другу. Но тогда я был малой и зеленый, могу ошибаться.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы