OSDev

для всех
Текущее время: 17 ноя 2019, 23:01

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Определение размера памяти.
СообщениеДобавлено: 31 май 2011, 17:23 
Аватара пользователя

Зарегистрирован: 20 апр 2011, 10:54
Сообщения: 145
Руддщ, Цщкдв!

Хочу определить размер памяти через загрузчик в Unrealmode. Я знаю, что для этого есть какие-то функции BIOS, но они ведь нестандартные.

Нашел на wasm.ru пример и переделал его под свои нужды:
Код:
   memscan:;в FS Unreal-mode сегмент
     mov edx,10000h
     xor bx,bx
    .lop:
     mov byte al,[fs:edx]
     inc al
     mov byte [fs:edx],al
     mov byte ah,[fs:edx]
     cmp al,ah
     jne .hole
     dec al
     mov byte [fs:edx],al
     inc bx
    .hole:
     add edx,10000h
     and edx,edx
     jnz .lop
     mov word [ds:memsize],bx
     ret 

Проверяю в QEMU. Ставлю -m 16. Он мне выдает 17Ah. Полез напрямую в память, в BX - то же самое! Ставлю -m 8 - выдает 0FAh. То есть разница всегда 7Ah! Подскажите пожалуйста, это какие-то служебные участки?

Спасибо.

_________________
Found a CPU. LAPIC ID: 00


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение размера памяти.
СообщениеДобавлено: 31 май 2011, 17:57 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1391
Почитайте нашу вику, там про определение памяти написано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение размера памяти.
СообщениеДобавлено: 31 май 2011, 20:16 
Аватара пользователя

Зарегистрирован: 20 апр 2011, 10:54
Сообщения: 145
В вике три правила и сто одно исключение :-(. Но в принципе это не важно. Скажите пожалуйста, а использовать эту лишнюю память не опасно? В смысле, не вызовет какую-нибудь гадость типа SMM после записи? (всякие ACPI пока подождут).
Спасибо.

_________________
Found a CPU. LAPIC ID: 00


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение размера памяти.
СообщениеДобавлено: 31 май 2011, 20:38 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1117
Всё-таки совет использовать. Функцию E820h прерывания INT 15h
В вике описано.
Стандартов как вы заметили нет. Но есть спецификации принятые мировыми гигантами. И их можно считать стандартом.
Одной из таких спецификаций является ACPI и там эта функция описана.


Цитата:
Скажите пожалуйста, а использовать эту лишнюю память не опасно? В смысле, не вызовет какую-нибудь гадость типа SMM после записи?

На коком нибудь RD8600 если тупо тыкать можно попасть на SMM. А у нормальных разработчиков SMM лежит в теневой области под видео буфером 0A0000h-0BFFFFh

По поводу кода в 1 посте. Скорее всего вы попали на память устройств PCI или на порты PCI которые отображены в память.
В вике про это сказано. Поэтому такой метод не годится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение размера памяти.
СообщениеДобавлено: 31 май 2011, 20:52 
Аватара пользователя

Зарегистрирован: 20 апр 2011, 10:54
Сообщения: 145
Спасибо, что наставили на путь истинный!

_________________
Found a CPU. LAPIC ID: 00


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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


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

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


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

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