December 17 2017 17:43:41
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
КОМАНДЫ ПОДДЕРЖКИ ЯЗЫКОВ ВЫСОКОГО УРОВНЯ
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

Команды этой группы (табл. 2.24) обеспечивают реализацию ряда процедур, широко используемых при программировании на языках высокого уровня.

Команда BOUND проверяет, находится ли содержимое регистра, адресуемое полем reg байта MODR/M, в заданных пределах. Если содержимое регистра меньше нижнего или больше верхнего предела, то процессор переходит к выполнению программы обработки прерывания типа 5 - «превышение границы». Содержимое регистра рассматривается как число со знаком. Значения верхнего и нижнего пределов размещаются в двух последовательно расположенных 16- или 32-разрядных ячейках памяти, адресуемых с помощью байта MODR/M: в первой ячейке задается нижняя граница диапазона, во второй ячейке - верхняя граница. При этом не допускается использование регистровой адресации, т. е. в байте MODR/M должно быть указано значение поля mod = 11. Если команда будет иметь поле mod = 11, то выполняется прерывание с номером Ne = 6 - «неправильный код операции». Данная команда служит для проверки нахождения индекса в заданных границах.

Команда ENTER создает стековый кадр заданного размера для размещения параметров процедуры. Перед этим кадром в стек помещается список указателей на стековые кадры, созданные ранее выполняемыми вложенными процедурами. Таким образом обеспечивается возможность из текущей процедуры обращаться к параметрам других процедур. Обычно команда ENTER является первой командой выполнения определенной процедуры.

Размер стекового кадра, создаваемого командой ENTER, определяется содержимым первого операнда im8. Второй операнд 18 может иметь значения от 0 до 31 и указывает уровень вложенности текущей процедуры. Этот уровень определяет количество указателей (относительных адресов) предыдущих стековых кадров, помещаемых в стек перед образуемым стековым кадром. При поступлении команды ENTER содержимое регистра ЕВР (или ВР) посылается в стек, а последнее значение указателя стека ESP (или SP) заносится в ЕВР (или ВР), после чего содержимое ESP (или SP) уменьшается на величину im8, образуя стековый кадр заданного размера. Однако, если второй непосредственный байт 18 > 0, то после содержимого ЕВР (или ВР) в стек заносится n = (I8) слов (32- или 16-разрядных) из последовательно расположенных 32- или 16-разрядных ячеек памяти, адрес которых задается содержимым регистра ЕВР (или ВР), последовательно уменьшаемым на 4 (или 2).

При выполнении команды выхода из процедуры LEAVE содержимое регистра ЕВР (или ВР) заносится в регистр ESP (или SP), восстанавливая значение указателя стека, которое было до входа в процедуру с помощью предыдущей команды ENTER. Затем из стека извлекается старое значение ЕВР (или ВР). Таким образом, производится подготовка к возврату в предыдущую процедуру. Обычно команда LEAVE является последней в программе реализации вызванной процедуры, и следующая за ней команда RET обеспечивает возврат к выполнению предыдущей процедуры.

Таблица 2.24 Команды поддержки языков высокого уровня и управления защитой памяти

Синтаксис команды Операция
BOUND r(16,32) m(16:16,32:32) EFLAGS.CS.EIP ® стек, Ve(#S) ® CS, EIP,
если (r16,32) выходит за границы диапазона
ENTER im16, I8 EBP ® стек; если n=(18) ¹ 0, то т(ЕВР) ® стек,
ЕВР - 4 ® ЕВР, выполняется n раз; ESP ® ЕВР,
ESP - im8 ® ESP
LEAVE
ЕВР ® ESP, стек ® ЕВР
LGDT
SGDT
LIDT
SIDT
LLDT
SLDT
LTR
STR
m16:32
m16:32
m16:32
m16:32
r/m16
r/m(16,32)
r/m16
r/m16
m16:32 ® GDTR
GDTR ® m16:32
m16:32 ® IDTR
IDTR ® m16:32
r/m16 ® LDTR
LDTR ® r/m( 16,32)
r/m16 ® LTR
TR ® r/m16
CLTS
LAR
LSL

r(16,32), r/m(16,32)
r(16,32), r/m(16,32)
0 ® TS (бит З регистра CRD)
Биты доступа сегмента (селектор r/m16,32) ® r(16,32)
Размер сегмента (селектор r/m16,32) ® r(16,32)
ARPL r/m16, r16 1 ® ZF, RPL<src> ® RPL<dst>,
если RPL<dst> < RPL<src>
VERR r/m16 1 ® ZF, если чтение сегмента разрешено
VERW r/m16 1 ® ZF, если запись в сегмент разрешена
LMSW
SMSW
r/m16
r/m
r/m16 ® MSW (биты 15-0 регистра CRD)
MSW ® r/m16
Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.07 секунд 2,299,332 уникальных посетителей