Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 047

Раздел: Ассемблер
/ вопрос открыт /

Привет всем.
Я хотел бы узнать в каком режиме работает процессор(виртуальный подx86; реальный; защищенный) по отношению к чужому приложению (32 битному). Сразу же напрашивается ответ, что в защищенном, но в защищенном режиме насколько я знаю нельзя изменять регистры cs, ds,es,ss, а программа их интенсивно меняет, потому и спрашиваю.
Надеюсь ктонибудь знает как разобраться.

SOA Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: SOA (статус: Посетитель)
Вопрос отправлен: 16 апреля 2010, 10:29
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, SOA!
при старте компьютера (или сброса процессора), он стартует в реальном режиме, а потом уже может быть переключен.
Windows переключает его в защищенный режим. Потому как только в этом режиме можно легко адресовать 4Гб памяти.

А то что "сегментные регистры" меняются, Вас тревожить не должно. У них в этом режиме другое предназначение. Они хранят селекторы. Используя селекторы, операционная система с процессором контролируют доступ к памяти (защита памяти) и организовывают виртуальные 4Гб каждому процессу. Чуть подробнее здесь http://avsdov.newmail.ru/modes/modes.htm

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 16 апреля 2010, 11:03
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 17 апреля 2010, 17:08; участников в обсуждении: 2.
SOA

SOA (статус: Посетитель), 16 апреля 2010, 12:12 [#1]:

Понимаете Вадим у вас написано все верно, но это не решает моей проблемы по определению в каком режиме работает процессор, потому что я читал в книге что значения сегментных регистров в защищенном режиме изменять нельзя, а программы, например написанные на том же ассемблере легко могут работать как в реальном, так и в виртуальном режиме x86, и конечно могут работать и в защищенном, что я подозреваю можно также реализовать и на Delphi и на C++, что собственно и заводит меня в тупик, возможно помимо сегментных регистров, есть какие либо другие регистры, указывающие на то в каком режиме работает процессор по отношению к данной программе(задаче), вы не в курсе?
SOA

SOA (статус: Посетитель), 16 апреля 2010, 12:15 [#2]:

P.S. спасибо за ссылку почитаю 8)
Вадим К

Вадим К (статус: Академик), 16 апреля 2010, 12:34 [#3]:

Цитата (SOA):

что значения сегментных регистров в защищенном режиме изменять нельзя,

= книги бывают разные
= конечно нельзя, их нет:) Сегментные регистры используются для другого.

Програмы на ассемблере могут работать в любом режиме. На делфи (если это только не первая делфи:) ) только в защищенном.

Вот здесь http://www.wasm.ru/print.php?article=pipm10 есть веселая статья на тему этой всей кухни. Но сайт иногда лежит, я брал с кеша http://webcache.googleusercontent.com/search?q=cache:Uz8p0S1yfC8J:www.wasm.ru/print.php%3Farticle%3Dpipm10+%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F+%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B0+%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0+%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9+%D0%B7%D0%B0%D1%89%D0%B8%D1%89%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9&cd=2&hl=uk&ct=clnk&gl=ua&client=opera
Галочка "подтверждения прочтения" - вселенское зло.
SOA

SOA (статус: Посетитель), 17 апреля 2010, 17:08 [#4]:

Спасибо за ссылку(http://avsdov.newmail.ru/modes/modes.htm) Вадим, оттуда узнал что
Защищенный режим можно по установленному нулевому биту регистра CR0
Виртуальный режим можно определить по установленному 17 биту регистра флагов
Реальный определяется по сбросу нулевого в CR0 и 17 в EFLAGS.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 28 марта 2023, 15:30
Выполнено за 0.02 сек.
Рейтинг@Mail.ru