Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
MOV DR
Влияние команды на флаги и форматы команды:
? |
|
|
|
? |
? |
? |
? |
? |
0F 21 /r |
MOV r32,DRx |
DRx = r32 |
Intel386 |
mov eax,dr0 |
0F 23 /r |
MOV DRx,r32 |
r32 = DRx |
Intel386 |
mov dr0,eax |
Описание:
Команда MOV DR предназначена для пересылки данных между отладочными регистрами DR0, DR1, DR2, DR3, DR6 и DR7 и регистрами общего назначения. С этими командами всегда используются 32-битные операнды независимо от атрибута размера операнда.
В процессорах, начиная с Pentium, когда бит DE (расширенние отладки) в CR4 сброшен, команды MOV DR, работают аналогично тому, как это происходит в процессорах Intel386 и Intel486 (cсылки на регистры DR4 и DR5 перенаправляются на DR6 и DR7 соответственно). Когда же бит DE в CR4 установлен, попытки выполнить команду MOV, использующую DR4 или DR5, вызывают генерацию особой ситуации #UD.
Команды доступа к отладочным регистрам должны выполняться при уровне привилегий 0 или в реальном режиме, иначе будет сгенерирована особая ситуация #GP. Существует еще и сверхзащита отладчика, которая может быть включена при программировании отладочных регистров (бит DR7.GD).
Код операции для данной команды формируется с некоторыми особенностями. Поле reg байта ModR/M задает отладочный регистр, поле mod всегда находится в значении 11b, а поле r/m задает регистр общего назначения.
Операция:
IF (DE = 1) and (SRC or DEST = DR4 or DR5))
THEN #UD;
ELSE DEST = SRC;
FI;
Особые ситуации защищенного режима:
#GP(0), если текущий уровень привилегий не равен 0. #UD, если бит CR4.DE = 1 и команда MOV выполняется для DR4 или DR5.
#DB, если происходит попытка доступа к отладочным регистрам при DR7.GD = 1.
Особые ситуации режима реальной адресации:
#UD, если бит CR4.DE = 1 и команда MOV выполняется для DR4 или DR5.
#DB, если происходит попытка доступа к отладочным регистрам при DR7.GD = 1.
Особые ситуации режима V86:
#GP(0), при попытке выполнить команду.
Замечание:
В некоторых процессорах Intel возможна генерация особой ситуации #DB вместо #GP в режиме V86, когда DR7.GD =1 и производится попытка записи в регистр отладки. Обратитесь к технической документации Intel за описанием всех возможных случаев проявления ошибки.
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru