ВУЗ:
Составители:
34
CS? Для этого можно воспользоваться искусственно сконструированной
командой дальнего перехода, которая, как известно, приводит к смене
содержимого и IP, и CS. Строки 89 – 91 демонстрируют эту методику. В
реальном режиме мы поместили бы во второе слово адреса сегментный
адрес сегмента команд, в защищенном же мы записываем в него селектор
этого сегмента (число 16).
Команда дальнего перехода, помимо загрузки в CS селектора,
выполняет еще одну функцию – она очищает очередь команд в блоке
предвыборки команд процессора. Как известно, в современных
процессорах с целью повышения скорости выполнения программы
используется конвейерная обработка команд программы, позволяющая
совместить во времени фазы их обработки. Одновременно с выполнением
текущей (первой) команды осуществляется выборка операндов следующей
(второй), дешифрация третьей и выборка из памяти четвертой команды.
Таким образом, в момент перехода в защищенный режим уже могут быть
расшифрованы несколько следующих команд и выбраны из памяти их
операнды. Однако эти действия выполнялись, очевидно, по правилам
реального, а не защищенного режима, что может привести к нарушениям в
работе программы. Команда перехода очищает очередь предвыборки,
заставляя процессор заполнить ее заново уже в защищенном режиме.
Следующий фрагмент примера программы (строки 100 – 113)
является чисто иллюстративным. В нем инициализируется (по правилам
защищенного режима!) сегментный регистр ES и в видеобуфер выводится
сообщение 'A message in protected mode' (зеленым цветом на синем фоне),
так, что оно располагается в середине пятой строки экрана, чем
подтверждается правильное функционирование программы в защищенном
режиме.
Как уже отмечалось выше, для того, чтобы не нарушить
работоспособность DOS, процессор следует вернуть в реальный режим,
CS? Для этого можно воспользоваться искусственно сконструированной командой дальнего перехода, которая, как известно, приводит к смене содержимого и IP, и CS. Строки 89 – 91 демонстрируют эту методику. В реальном режиме мы поместили бы во второе слово адреса сегментный адрес сегмента команд, в защищенном же мы записываем в него селектор этого сегмента (число 16). Команда дальнего перехода, помимо загрузки в CS селектора, выполняет еще одну функцию – она очищает очередь команд в блоке предвыборки команд процессора. Как известно, в современных процессорах с целью повышения скорости выполнения программы используется конвейерная обработка команд программы, позволяющая совместить во времени фазы их обработки. Одновременно с выполнением текущей (первой) команды осуществляется выборка операндов следующей (второй), дешифрация третьей и выборка из памяти четвертой команды. Таким образом, в момент перехода в защищенный режим уже могут быть расшифрованы несколько следующих команд и выбраны из памяти их операнды. Однако эти действия выполнялись, очевидно, по правилам реального, а не защищенного режима, что может привести к нарушениям в работе программы. Команда перехода очищает очередь предвыборки, заставляя процессор заполнить ее заново уже в защищенном режиме. Следующий фрагмент примера программы (строки 100 – 113) является чисто иллюстративным. В нем инициализируется (по правилам защищенного режима!) сегментный регистр ES и в видеобуфер выводится сообщение 'A message in protected mode' (зеленым цветом на синем фоне), так, что оно располагается в середине пятой строки экрана, чем подтверждается правильное функционирование программы в защищенном режиме. Как уже отмечалось выше, для того, чтобы не нарушить работоспособность DOS, процессор следует вернуть в реальный режим, 34
Страницы
- « первая
- ‹ предыдущая
- …
- 32
- 33
- 34
- 35
- 36
- …
- следующая ›
- последняя »