Системное программное обеспечение. Особенности программирования 32-разрядных процессоров. Рощин А.В. - 137 стр.

UptoLike

Составители: 

137
В пошаговом режиме выполнение программы осуществляется по
одной команде. После выполнения каждой команды вызывается
исключение 1 (исключение отладки).
Пошаговый режим задается установкой в единицу флага TF (Trap
Flag – флаг ловушки).
Регистры отладки
Отладочные регистры появились в архитектуре микропроцессоров
семейства х86, начиная с процессора Intel386. Эти регистры позволяют
выставлять точки останова и перехватывать обращения
процессора к
памяти. В процессорах Pentium и выше можно останавливаться и по
обращениям ввода-вывода.
(В свое время, в ЭВМ первого-второго и даже третьего поколений
такие точки останова можно было задать на переключателях пульта
оператора или системного инженера).
Отладочных регистров у процессора восемь: DR0...DR7.
Первые четыре регистра: DR0...DR3 используются для
задания до
четырех 32-разрядных адресов точек останова. Заданный адрес указывает
байт, слово или двойное слово, попадание в который(ое) вызывает
срабатывание ловушки останова. Что именно указывает адрес
определяется полем LENi (i = 0...3) в регистре DB7. В этом же регистре, но
только в поле RWi, задается тип перехватываемого обращения к памяти:
00 – выборка
команды из памяти
01 – запись данных в память
10 – обращение к портам ввода-вывода (только для Pentium и выше
при включении расширения отладки: бит DE регистра CR4)
11 – чтение или запись данных памяти.
Генерируемые при этом исключения различаются по типу. При
выборке команды исключение классифицируется как отказ (fault) и
обрабатывается до выполнения (этой выбираемой
из памяти) команды. В
     В пошаговом режиме выполнение программы осуществляется по
одной   команде.   После   выполнения        каждой   команды   вызывается
исключение 1 (исключение отладки).
     Пошаговый режим задается установкой в единицу флага TF (Trap
Flag – флаг ловушки).
     Регистры отладки
     Отладочные регистры появились в архитектуре микропроцессоров
семейства х86, начиная с процессора Intel386. Эти регистры позволяют
выставлять точки останова и перехватывать обращения процессора к
памяти. В процессорах Pentium и выше можно останавливаться и по
обращениям ввода-вывода.
     (В свое время, в ЭВМ первого-второго и даже третьего поколений
такие точки останова можно было задать на переключателях пульта
оператора или системного инженера).
     Отладочных регистров у процессора восемь: DR0...DR7.
     Первые четыре регистра: DR0...DR3 используются для задания до
четырех 32-разрядных адресов точек останова. Заданный адрес указывает
байт, слово или двойное слово, попадание в который(ое) вызывает
срабатывание    ловушки    останова.    Что     именно   указывает   адрес
определяется полем LENi (i = 0...3) в регистре DB7. В этом же регистре, но
только в поле RWi, задается тип перехватываемого обращения к памяти:
     00 – выборка команды из памяти
     01 – запись данных в память
     10 – обращение к портам ввода-вывода (только для Pentium и выше
при включении расширения отладки: бит DE регистра CR4)
     11 – чтение или запись данных памяти.
     Генерируемые при этом исключения различаются по типу. При
выборке команды исключение классифицируется как отказ (fault) и
обрабатывается до выполнения (этой выбираемой из памяти) команды. В


                                       137