Консультация № 193902
14.11.2018, 09:43
0.00 руб.
0 5 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

Допустим написали маленькую программку на Ассемблеле. Существует ли возможность: каждую команду, исполненную процессором сбрасывать в текстовый файл в двоичном коде?
С уважением.

Обсуждение

давно
Посетитель
7438
7205
14.11.2018, 11:26
общий
Адресаты:
Примерно так и работают отладчики. Только не "сбрасывают в файл", а выводят на экран.
Кстати, под ДОС, Windows или Linux? Реализация разная.
Хотя суть та же: получать управление после каждой команды.
Только скажу прямо, это задачка не для начинающих... Фактически, надо написать свой отладчик.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
402455
2
15.11.2018, 20:39
общий
Адресаты:
Вопрос 193902. Под Windows. Именно надо в файл. Для дальнейшей обработки. Насколько трудоемко ? Отладчик то не нужен.
давно
Старший Модератор
31795
6196
16.11.2018, 21:12
общий
это ответ
Здравствуйте, vkruglenko!

Есть такое понятие трасеры или трекеры, они вешаются над процессором и исполняемым кодом, позволяют контролировать каждый шаг процессора, в том числе запись, каждого шага в файл.

Но ОСь грузится в 16-ть битном режиме, переходит в PROTECT-MODE и потом организовывает кучу менеджеров: память, ресурсы(внешние устройства, HHD, в том числе), многозадачность, т.е. доступ к ресурсам процессора.
При переходе из REAL-MODE => PROTECT-MODE, все, что было в REAL-MODE, игнорируется в PROTECT-MODE.

Вся проблема в том, что тр..ров(трасеры или трекеры), какие могут контролировать даже работу ОСи (REAL-MODE => PROTECT-MODE,)- нет.

Для решения проблем пользователя, есть отладчик ICE, который может работать на уровне ядря. Есть ещё и IDA Pro 6++, платная, которая совмещает в себе отладчик+дизассемблер.

Но такой программы, которая контролирует всё и вся нет.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
402455
2
18.11.2018, 12:05
общий
Адресаты:
Спасибо за разъяснения. Понятно, что внутренние конструкции весьма специфичны. Но я так и не понял. Какую достройку надо сделать в программе, чтобы каждую исполненную команду процессором сбрасывать в текстовый файл!? Из Ваших ответов я понял, что возможность существует и что это не так просто! Спасибо.
давно
Старший Модератор
31795
6196
21.11.2018, 01:02
общий
Адресаты:
Вот Вам картинка, упрощенная структура ОСи WIN.

1-программа пользователя;
2-виртуальная машина;
3-отладчик;
4-операционная система;
5-ядро ОСи;
6-функции уровня пользователя(3);
7-драйверы прописанные в системе(1..2);
8-функции уровня ядра(0);
9-менеджер ресурсов, т.е. всего, что есть на материнской плате;
0-материнская плата, т.е. сам процессор, мосты, память, видео-адаптер, клавиатура, диски: HDD, FDD, SDD, Flash, LAN и остальное

Теперь просмотрим цепочку: пользователь запускает программу, ОСь нагружает менеджер ресурсов(9)- выделить новой программе память, процессорное время и прочее, под новую программу создается виртуальная машина,(2) которая будет посредником, между программой и операционкой

Если программа пользователя, к примеру хочет вывести сообщение: она вызывает MessageBox, запрос получает виртуальная машина(2), обрабатывает и передает его функции уровня пользователя(6), после этого запрос передается функции уровня ядра(8), которая запрашивает менеджер ресурсов(9), в данном случае менеджер видеоадаптера на вывод информации. С помощью менеджера ресурсов, организовывается многозадачность, т.е. распределение процессорного времени между программами.

Если программа запускается под отладчиком, под программу отладчик создает "аналог" виртуальной машины(2'), некоторые операции он эммулирует, остальные передает виртуальной машине (2) операционной системы.

Трассеры вешаются на функции уровня ядра(8), ниже им не даст опустится сама ОСь.

Для простых процессоров, типа Z80, возможно создать эммулирующие отладчики, которые будут находится между (9) и (0), из-за простоты организации кода.

Создания такого отладчика под х86, очень трудоемко как в реализации, так и в человеко-часах, из-за сложности формирования кода операции..
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа