OSDev http://osdev.su/ |
|
Stack overflow? http://osdev.su/viewtopic.php?f=5&t=671 |
Страница 1 из 4 |
Автор: | DJ PhoeniX [ 07 янв 2013, 07:54 ] |
Заголовок сообщения: | Stack overflow? |
Уважаемые знатоки, внимание, чёрный ящик! Есть ОС. Её код расположен в 0x00000000 00401000. На этот же адрес устанавливается RSP при загрузке. Внимание, вопрос: как обрабатывать ситуацию, когда rsp опускается ниже 0x00000000 00100000? Этакий Stack Overflow? Гугл не спас... |
Автор: | SII [ 07 янв 2013, 08:01 ] |
Заголовок сообщения: | Re: Stack overflow? |
Защитой памяти. Сразу под нижней границей стека разместить страницу, доступ к которой запрещён. |
Автор: | DJ PhoeniX [ 07 янв 2013, 09:55 ] | ||
Заголовок сообщения: | Re: Stack overflow? | ||
SII писал(а): Защитой памяти. Сразу под нижней границей стека разместить страницу, доступ к которой запрещён. А какой именно флаг поставить? Из PML4E ессно... Первый бит снять, видимо? И, да, ничего что эта страница будет 0x000FF000 (код BIOS)?
|
Автор: | SII [ 07 янв 2013, 10:00 ] |
Заголовок сообщения: | Re: Stack overflow? |
DJ PhoeniX писал(а): А какой именно флаг поставить? Из PML4E ессно... Первый бит снять, видимо? Документацию смотреть надо. Я с ИА-32 уже давно не работаю... Цитата: И, да, ничего что эта страница будет 0x000FF000 (код BIOS)? А вот это может стать проблемой. Гарантии, что там нет кода 32/64-разрядного режима, дать никто не может: где что размещать, является личным делом разработчиков БИОСа. Хотя, с другой стороны, если Вы никак БИОС не вызываете, то он может вызываться "самопроизвольно" только в режиме управления системой (SMM), а ему глубоко без разницы, в каком процессор был режиме, как настроена защита и т.д. |
Автор: | DJ PhoeniX [ 07 янв 2013, 10:02 ] |
Заголовок сообщения: | Re: Stack overflow? |
Это AMD-64 (IA-64?)... После груба сразу прыгаю в лонгмод, и биос не трогаю. Да, мне кажется, что грабель не возникнет, но, всё же, интересно знать правильное решение. |
Автор: | pavia [ 07 янв 2013, 10:09 ] |
Заголовок сообщения: | Re: Stack overflow? |
Цитата: А вот это может стать проблемой. Гарантии, что там нет кода 32/64-разрядного режима, дать никто не может SII, а если подумать? Какой нормальный разработчик ОС будет запихивать БИОС туда где у него стек кончается? Я могу дать для своей ОС гарантии там биоса нет и небудет. |
Автор: | SII [ 07 янв 2013, 10:16 ] |
Заголовок сообщения: | Re: Stack overflow? |
DJ PhoeniX писал(а): Это AMD-64 (IA-64?)... После груба сразу прыгаю в лонгмод, и биос не трогаю. Да, мне кажется, что грабель не возникнет, но, всё же, интересно знать правильное решение. BIOS, скорей всего, неоднократно придётся дёргать в процессе инициализации системы -- ведь до тех пор, пока не будут загружены и инициализированы свои драйверы, кто-то должен работать как минимум с диском... В общем, так поступать рискованно. Кстати говоря, IA-64 ни малейшего отношения к IA-32 не имеет. Это абсолютно другая архитектура, которая известна как Itanium. Само же название архитектуры для привычных ПКшных процов Интел не поменяла -- IA-32 так и осталась. Когда им надо подчеркнуть, что речь о процессорах, способных выполнять 64-разрядный код, они пишут Intel 64 -- но никак не IA-64. |
Автор: | DJ PhoeniX [ 07 янв 2013, 10:18 ] |
Заголовок сообщения: | Re: Stack overflow? |
SII писал(а): BIOS, скорей всего, неоднократно придётся дёргать в процессе инициализации системы -- ведь до тех пор, пока не будут загружены и инициализированы свои драйверы, кто-то должен работать как минимум с диском... В общем, так поступать рискованно. Не-не, все необходимые для загрузки дрова будут в initrd (или built-in).
|
Автор: | 418ImATeapot [ 07 янв 2013, 11:18 ] |
Заголовок сообщения: | Re: Stack overflow? |
Очистить флаг номер ноль. (Presented) |
Автор: | 418ImATeapot [ 07 янв 2013, 11:24 ] |
Заголовок сообщения: | Re: Stack overflow? |
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, с ним совместимое. |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |