OSDev

для всех
Текущее время: 28 мар 2024, 22:20

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
СообщениеДобавлено: 04 июн 2019, 19:41 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
FreeProger писал(а):
Кто может подсказать? Я всегда считал что первые 1024Кб
Отводятся под вектора прерываний реального режима, разве они не должны быть отображены в карте памяти получаемой от BIOS функцией E820 прерывание 15h


Не Кб, а байта :) Ну а по существу вопроса -- если правильно помню, занятость этого килобайта функциями BIOS не отражается по той причине, что эта память занята под векторы именно реального режима и занята всегда, т.е. программист и так знает, может он её использовать или нет (если пишет код защищённого режима -- может, если работает в реальном -- может только подменять векторы на свои собственные для тех прерываний, которые сам будет обрабатывать). Т.е. функции BIOSа сообщают лишь о тех используемых областях, использование которых не является абсолютно стандартным.

ADD. Вроде бы вот здесь: https://osdev.fandom.com/ru/wiki/%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%8A%D1%91%D0%BC%D0%B0_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8 было всё описано верно, хоть и давно. Возможно, не отражены последние веяния, связанные с UEFI и т.п.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2019, 21:03 

Зарегистрирован: 22 май 2019, 12:08
Сообщения: 34
Спасибо phantom-84, все ещё больше прояснилось.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2019, 21:08 

Зарегистрирован: 22 май 2019, 12:08
Сообщения: 34
Цитата:
Не Кб, а байта :) Ну а по существу вопроса -- если правильно помню, занятость этого килобайта функциями BIOS не отражается по той причине, что эта память занята под векторы именно реального режима и занята всегда, т.е. программист и так знает, может он её использовать или нет (если пишет код защищённого режима -- может, если работает в реальном -- может только подменять векторы на свои собственные для тех прерываний, которые сам будет обрабатывать). Т.е. функции BIOSа сообщают лишь о тех используемых областях, использование которых не является абсолютно стандартным.

ADD. Вроде бы вот здесь: https://osdev.fandom.com/ru/wiki/%D0%9E ... 1%82%D0%B8 было всё описано верно, хоть и давно. Возможно, не отражены последние веяния, связанные с UEFI и т.п.




Спасибо. В принцыпе если по логике вы совершенно правы. Не знаю почему я сам к такому выводу не пришёл.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2019, 22:29 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
IVT, BDA не исключаются из карты памяти. Можете просто не использовать этот участок. Я обычно использую концовку этой страницы, не трогая начало. В остальном можете использовать любые участки типа 1, только учтите, что вам никто не гарантирует их выравнивание по границам страниц (нужно самому выравнивать). Лично я использую базовую память для спец. нужд и не помещаю ее в общий пул. Также нужно исключать участки выше 4 гиг, если вы не используете "64-разрядную пагинацию".
Код:
        cmp [di+ARDESC.Type],AR_MEMORY
        jne .loop

        mov edx,[di+ARDESC.BaseAddrLow]
        cmp edx,100000h
        jb .loop
        cmp [di+ARDESC.BaseAddrHigh],eax
        jne .loop


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу Пред.  1, 2, 3, 4

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB