Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 61

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 55 56 57 58 59 60 < 61 > 62 63 64 65 66 67 .. 528 >> Следующая

ячейки памяти с адресом (SYSENTER_CS_MSR) + 16, в регистр SS-из ячейки с
адресом (SYSENTER_CS_MSR) + 24, в регистр SS - из регистра EDX, в регистр
ESP - из регистра ЕСХ. В эти регистры и ячейки памяти предварительно
должно быть записано содержимое, обеспечивающее переход к необходимой
профамме пользователя.
Команды управления признаками (табл. 2.23) обеспечивают запись-чтение
содержимого регистра признаков и их изменение. Команды LAHF и SAHF
выполняют загрузку младшего байта из регистра EFLAG в регистр АН и
заполнение младшего байта в EFLAGS из регистра АН. Команды POPF, PUSHF
производят загрузку в стек или выборку из стека содержимого FLAGS при
обработке 16-разрядных операндов или EFLAGS при обработке 32-разрядных
операндов. Команды CLC, STC осуществляют установку значений признака
переноса CF = О, CF = 1, а команда СМС вызывает инвертирование значения
этого признака. Команды CLD, STD устанавливают значения признака
направления DF = О, DF = 1. Команды CLI, ST/ выполняют соответственно
установку значений признака разрешения прерываний IF=0 (запрещение
прерываний), IF=1 (разрешение прерываний). В защищенном режиме изменение
значения IF с помощью этих команд производится при выполнении условия CPL
< IOPL, как и для команд IN, OUT, INS, OUTS. При нарушении этого условия
реализуется исключение типа #GP ("нарушение защиты").
Необходимо отметить, что команды IRET, POPF в защищенном режиме могут
изменить значение признака IF в регистре EFLAGS только при выполнении
такого же условия: CPL < IOPL. Содержимое поля IOPL в регистре EFLAGS эти
команды могут изменять только при наиболее высоком уровне привилегий
текущей программы: CPL = 0.
2.3.2. КОМАНДЫ ПОДДЕРЖКИ ЯЗЫКОВ ВЫСОКОГО УРОВНЯ
Команды этой группы (табл. 2.24) обеспечивают реализацию ряда процедур,
широко используемых при программировании на языках высокого уровня.
Команда BOUND проверяет, находится ли содержимое регистра, адресуемое
полем гед байта MODWM, в заданных пределах. Если содержимое регистра
меньше нижнего или больше верхнего предела, то процессор переходит к
выполнению программы обработки прерывания типа 5 - "превышение границы".
Содержимое регистра рассматривается как число со знаком. Значения
верхнего и нижнего пределов размещаются в двух последовательно
расположенных 16- или 32-разрядных ячейках памяти, адресуемых с помощью
байта MODWM: в первой ячейке задается нижняя граница диапазона, во второй
ячейке - верхняя граница. При этом не допускается использование
регистровой адресации, т. е. в байте MODFt/М должно быть указано значение
поля mod =11. Если команда будет иметь поле mod =11, то выполняется
прерывание с номером Ne = 6- "неправильный код операции". Данная команда
служит для проверки нахождения индекса в заданных границах.
Команда ENTER создает стековый кадр заданного размера для размещения
параметров процедуры. Перед этим кадром в стек помещается список
указателей на стековые кадры, созданные ранее выполняемыми вложенными
процедурами. Таким образом обеспечивается возможность из текущей
процедуры обращаться к параметрам других процедур. Обычно команда ENTER
является первой командой выполнения определенной процедуры.
Размер стекового кадра, создаваемого командой ENTER, определяется
содержимым первого операнда im8. Второй операнд 18 может иметь значения
от 0 до 31 и указывает уровень
СИСТЕМА КОМАНД: ОПЕРАЦИИ УПРАВЛЕНИЯ
Таблица 2.24
Команды поддержки языков высокого уровня и управления защитой памяти
Синтаксис команды
Операция
BOUND г( 16,32) т(16:16,32:32)
EFLAGS,CS.EIP -ч стек, Ve(#S) -> CS, EIP, еспи (г16,32) выходит за
границы диапазона
ENTER im16, 18
EBP -> стек; если n=(l8) 10, то т(ЕВР) -> стек, EBP - 4 -т EBP,
выполняется п раз; ESP -ч EBP, ESP - im8 -ч ESP
LEAVE
EBP -> ESP, стек -ч EBP
LGDT т16:32 m16:32 -> GDTR
SGDT m16:32 GDTR -> m16:32
LIDT m16:32 m16:32 -> IDTR
SIDT m16:32 IDTR -> m16:32
LLDT r/m16 r/m16 -> LDTR
SLDT r/m( 16,32) LDTR -> r/m(16,32)
LTR r/m16 r/m16 -> LTR
STR r/m 16 TR -> r/m16
CLTS
LAR
LSL
r(16,32), r/m(16,32) r( 16,32), r/m(16,32)
0 -> TS (бит 3 регистра CRD)
Биты доступа сегмента (селектор r/m16,32) -ч г(16,32) Размер сегмента
(селектор r/m16,32) -ч г(16,32)___________
ARPL r/m16, г16
1 -ч ZF, RPL<src> -ч RPL<dst>, если RPL<dst> < RPL<src>
VERR r/m16
¦ ZF, если чтение сегмента разрешено
VERW r/m16
1 -> ZF, если запись в сегмент разрешена
LMSW
SMSW
r/m 16 r/m
r/m16 -> MSW (биты 15-0 регистра CRD) MSW -ч r/m16
вложенности текущей процедуры. Этот уровень определяет количество
указателей (относительных адресов) предыдущих стековых кадров, помещаемых
в стек перед образуемым стековым кадром. При поступлении команды ENTER
содержимое регистра EBP (или ВР) посылается в стек, а последнее значение
указателя стека ESP (или SP) заносится в EBP (или ВР), после чего
содержимое ESP (или SP) уменьшается на величину im8, образуя стековый
кадр заданного размера. Однако, если второй непосредственный байт 18 > 0,
Предыдущая << 1 .. 55 56 57 58 59 60 < 61 > 62 63 64 65 66 67 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed