|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Мар 12, 2004 15:27:35 Есть так называемый Unreal mode, когда размер сегмента можно сделать не равным 64 кб. Где то видел упоминание о похожей вещи: говорилось, что в реальном режиме можно сделать страничную адресацию. Вот меня и заинтересовал вопрос: правда ли это? И если правда, то как можно это реализовать? Как с Unreal mode у меня что то не получалось: компьютер вис при попытке выйти из защищенного режима. |
|
|
Дата: Мар 12, 2004 22:07:40 |
|
|
Дата: Мар 13, 2004 02:37:55 Icebp У меня сбросить бит PE без бита PG не получается - генерируется исключение, как и написанно у интела: MOV—Move to/from Control Registers ... Protected Mode Exceptions #GP(0) If the current privilege level is not 0. If an attempt is made to write invalid bit combinations in CR0 (such as setting the PG flag to 1 when the PE flag is set to 0, or setting the CD flag to 0 when the NW flag is set to 1). If an attempt is made to write a 1 to any reserved bit in CR4. If any of the reserved bits are set in the page-directory pointers table (PDPT) and the loading of a control register causes the PDPT to be loaded into the processor. |
|
|
Дата: Мар 13, 2004 22:36:51 Johnikum: Исходник, который ты привел это flat real mode interface. То есть это пример применения Unreal mode. Я же спрашивал про страничную адресацию, а Unreal mode упомянул как некоторую аналогию. Похожая аналогия: использование команды lidt в реальном режиме. При этом в реальном режиме можно переместить таблицу прерываний из начала памяти в другую область. Запущенные после этого резидентные программы не будут нормально функционировать. Black_mirror: У меня тут появилась одна мысль. Попробую на своем домашнем компьютере испытать, а то компьютер, за которым я сейчас сижу, под linux-ом, а он , как известно создан не для настоящих программистов и не позволяет многих вещей (я почти не понимаю чем он так нравится людям). Так что если удастся, то я напишу об этом позже. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.037 |