OSDev

для всех
Текущее время: 26 сен 2018, 12:44

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




Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 07:54 
Аватара пользователя

Зарегистрирован: 06 мар 2012, 20:05
Сообщения: 130
Откуда: Санкт-Петербург
Уважаемые знатоки, внимание, чёрный ящик!
Есть ОС. Её код расположен в 0x00000000 00401000. На этот же адрес устанавливается RSP при загрузке.
Внимание, вопрос: как обрабатывать ситуацию, когда rsp опускается ниже 0x00000000 00100000? Этакий Stack Overflow?
Гугл не спас...

_________________
We are back with a hard even better than before [D-Block & S-Te-Fan – Evolutionz {Ran-D remix}]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 08:01 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1346
Откуда: Зеленоград
Защитой памяти. Сразу под нижней границей стека разместить страницу, доступ к которой запрещён.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 09:55 
Аватара пользователя

Зарегистрирован: 06 мар 2012, 20:05
Сообщения: 130
Откуда: Санкт-Петербург
SII писал(а):
Защитой памяти. Сразу под нижней границей стека разместить страницу, доступ к которой запрещён.

А какой именно флаг поставить? Из PML4E ессно...
Первый бит снять, видимо?
И, да, ничего что эта страница будет 0x000FF000 (код BIOS)?


Вложения:
pml4e.png
pml4e.png [ 12.2 КБ | Просмотров: 5915 ]

_________________
We are back with a hard even better than before [D-Block & S-Te-Fan – Evolutionz {Ran-D remix}]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 10:00 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1346
Откуда: Зеленоград
DJ PhoeniX писал(а):
А какой именно флаг поставить? Из PML4E ессно...
Первый бит снять, видимо?


Документацию смотреть надо. Я с ИА-32 уже давно не работаю...

Цитата:
И, да, ничего что эта страница будет 0x000FF000 (код BIOS)?


А вот это может стать проблемой. Гарантии, что там нет кода 32/64-разрядного режима, дать никто не может: где что размещать, является личным делом разработчиков БИОСа. Хотя, с другой стороны, если Вы никак БИОС не вызываете, то он может вызываться "самопроизвольно" только в режиме управления системой (SMM), а ему глубоко без разницы, в каком процессор был режиме, как настроена защита и т.д.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 10:02 
Аватара пользователя

Зарегистрирован: 06 мар 2012, 20:05
Сообщения: 130
Откуда: Санкт-Петербург
Это AMD-64 (IA-64?)... После груба сразу прыгаю в лонгмод, и биос не трогаю.
Да, мне кажется, что грабель не возникнет, но, всё же, интересно знать правильное решение.

_________________
We are back with a hard even better than before [D-Block & S-Te-Fan – Evolutionz {Ran-D remix}]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 10:09 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1089
Цитата:
А вот это может стать проблемой. Гарантии, что там нет кода 32/64-разрядного режима, дать никто не может

SII, а если подумать? Какой нормальный разработчик ОС будет запихивать БИОС туда где у него стек кончается?
Я могу дать для своей ОС гарантии там биоса нет и небудет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 10:16 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1346
Откуда: Зеленоград
DJ PhoeniX писал(а):
Это AMD-64 (IA-64?)... После груба сразу прыгаю в лонгмод, и биос не трогаю.
Да, мне кажется, что грабель не возникнет, но, всё же, интересно знать правильное решение.


BIOS, скорей всего, неоднократно придётся дёргать в процессе инициализации системы -- ведь до тех пор, пока не будут загружены и инициализированы свои драйверы, кто-то должен работать как минимум с диском... В общем, так поступать рискованно.

Кстати говоря, IA-64 ни малейшего отношения к IA-32 не имеет. Это абсолютно другая архитектура, которая известна как Itanium. Само же название архитектуры для привычных ПКшных процов Интел не поменяла -- IA-32 так и осталась. Когда им надо подчеркнуть, что речь о процессорах, способных выполнять 64-разрядный код, они пишут Intel 64 -- но никак не IA-64.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 10:18 
Аватара пользователя

Зарегистрирован: 06 мар 2012, 20:05
Сообщения: 130
Откуда: Санкт-Петербург
SII писал(а):
BIOS, скорей всего, неоднократно придётся дёргать в процессе инициализации системы -- ведь до тех пор, пока не будут загружены и инициализированы свои драйверы, кто-то должен работать как минимум с диском... В общем, так поступать рискованно.
Не-не, все необходимые для загрузки дрова будут в initrd (или built-in).

_________________
We are back with a hard even better than before [D-Block & S-Te-Fan – Evolutionz {Ran-D remix}]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 11:18 
Аватара пользователя

Зарегистрирован: 20 апр 2011, 10:54
Сообщения: 145
Очистить флаг номер ноль. (Presented)

_________________
Found a CPU. LAPIC ID: 00


Последний раз редактировалось 418ImATeapot 07 янв 2013, 11:24, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 11:24 
Аватара пользователя

Зарегистрирован: 20 апр 2011, 10:54
Сообщения: 145
DJ PhoeniX писал(а):
Это AMD-64 (IA-64?)... После груба сразу прыгаю в лонгмод, и биос не трогаю.
Да, мне кажется, что грабель не возникнет, но, всё же, интересно знать правильное решение.

Не путайте IA-64 и AMD-64. IA-64 он же Itaniun - провальный VLIW/EPIC, не совместимый с IA-32. AMD-64 - он же x86-64 он же EM64T он же IA-32e он же Intel 64 - расширение i386, с ним совместимое.

_________________
Found a CPU. LAPIC ID: 00


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

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


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

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


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

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