Как отладчик сборки управляет регистрами? - PullRequest
0 голосов
/ 24 ноября 2018

Как отладчик манипулирует регистрами на работающем процессоре?

Я использую nasm и afd с dosbox (не знаю и не могу использовать никакие альтернативные настройки, потому что мой университет требует этой настройки).работает win 10. действительно новинка в сборке.прочитайте эту ветку но все просто пошло мне на ум.поэтому, пожалуйста, объясните, как я 5. Может быть, некоторые ссылки на стартеры

1 Ответ

0 голосов
/ 24 ноября 2018

Встроенный в DOSBOX отладчик прост: у него есть побочный канал для доступа ко всему состоянию машины.

В многозадачной ОС существуют системные вызовы, такие как Linux ptrace, которые могут манипулироватьсостояние другого процесса.

В DOS отладчик должен вставлять себя в область памяти, отличную от отлаживаемой программы.ISA x86 имеет функции отладки, такие как TF во FLAGS (Trace Flag) для одного шага.

Как только отладчик контролирует ЦП (т. Е. ЦП выполняет код отладчика), он может сохранить старые значения:регистрируется где-то (в стеке или в статических местоположениях).

Он может восстановить их все (с инструкциями mov) и вернуться к отлаживаемой программе, используя iret, который загружает CS: IP и FLAGS.из памяти.SS: SP должен быть действительным, чтобы это работало (возвращаемая информация будет прямо под SS:SP отлаживаемого процесса).Таким образом, отладка DOS в реальном режиме является «навязчивой» и будет сокращать пространство под SS: SP.В отличие от многозадачной ОС с виртуальной памятью.

Другой способ вернуться к отлаживаемому процессу без использования каких-либо регистров (т. Е. После восстановления всего) - это far jmp cs:[mem] с использованием режима абсолютной адресации.Но это не может восстановить флаги, поэтому не будет работать, если вы захотите установить TF при возобновлении выполнения отлаживаемого процесса.

...