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

UptoLike

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

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