OSDev http://osdev.su/ |
|
не грузится ядро http://osdev.su/viewtopic.php?f=6&t=701 |
Страница 3 из 3 |
Автор: | Fatal_Error [ 03 мар 2013, 18:04 ] |
Заголовок сообщения: | Re: не грузится ядро |
pavia писал(а): phantom-84, по моему ты ошибаешься в расчётах. В каких? |
Автор: | phantom-84 [ 03 мар 2013, 18:22 ] |
Заголовок сообщения: | Re: не грузится ядро |
pavia писал(а): phantom-84, по моему ты ошибаешься в расчётах, для сегмента растущего вниз. Я могу ошибаться только насчет 1-мегабайтной верхней границы при использовании байтовой гранулярности лимита. Во всем остальном навряд ли, т.к. когда-то (лет 5 назад), до перехода на чистую FLAT-модель, использовал в своем ядре растущие вниз сегменты, только со страничной (4 кб) гранулярностью. Кстати даже тогда внутри этих сегментов использовались FLAT-смещения, т.к. база сегментов (хранящаяся в дескрипторах) всегда была нулевой.
|
Автор: | pavia [ 03 мар 2013, 19:18 ] |
Заголовок сообщения: | Re: не грузится ядро |
Fatal_Error писал(а): 1.Я наконец-то понял как работает стек 2.Я намеренно не использую память flat. В моих целях она мне не нужна. 3.Флаг D по умолчанию 0, поэтому я не использую cld 4.Сегменты мне для того, чтобы понять сегментацию в pm, чего я добился 5. Спасибо phantom-84 за объяснение 6. А в каком видео режиме работает винда/линукс? 1) Стек работает очень просто. 2) Стек лучше ограничить. Я бы в вашем случае ограничил приделом. 3) Вообще-то оно не определено. Поэтому CLD надо использовать. 6) В любом. VGA, SVGA. |
Автор: | pavia [ 03 мар 2013, 19:34 ] |
Заголовок сообщения: | Re: не грузится ядро |
phantom-84 писал(а): pavia писал(а): phantom-84, по моему ты ошибаешься в расчётах, для сегмента растущего вниз. Я могу ошибаться только насчет 1-мегабайтной верхней границы при использовании байтовой гранулярности лимита. Во всем остальном навряд ли, т.к. когда-то (лет 5 назад), до перехода на чистую FLAT-модель, использовал в своем ядре растущие вниз сегменты, только со страничной (4 кб) гранулярностью. Кстати даже тогда внутри этих сегментов использовались FLAT-смещения, т.к. база сегментов (хранящаяся в дескрипторах) всегда была нулевой.Если флаг B установлен диапазон корректных смещений от (действующий предел + 1) к FFFFFFFFH, и если флаг B очищен от (действующей предел + 1) к FFFFH. У вниз расширенного сегмента будет максимальный размер, когда предел сегмента 0. По поводу остального не проверяю. |
Автор: | Fatal_Error [ 03 мар 2013, 20:12 ] |
Заголовок сообщения: | Re: не грузится ядро |
pavia писал(а): 3) Вообще-то оно не определено. Поэтому CLD надо использовать. насколько я знаю флаг DF должен быть сброшен, если его программно не подняли. |
Автор: | phantom-84 [ 03 мар 2013, 20:18 ] |
Заголовок сообщения: | Re: не грузится ядро |
pavia писал(а): Если флаг B установлен диапазон корректных смещений от (действующий предел + 1) к FFFFFFFFH, и если флаг B очищен от (действующей предел + 1) к FFFFH. У вниз расширенного сегмента будет максимальный размер, когда предел сегмента 0. В дескрипторе флаг B установлен. Я как раз и сказал, что могу ошибаться насчет верхней границы. Возможно, это не 1 мег, а 4 гига вне зависимости от значения флага гранулярности. Но ведь это не ошибка в расчетах. Кстати если про 0FFFFFFFFh в руководстве по процам написано то, что ты сказал, еще не факт, что это справедливо для G=0. Зачем ты сказал про максимальный размер при лимите, равном нулю, я не понял. Разве в моих словах что-то этому противоречит?Fatal_Error писал(а): насколько я знаю флаг DF должен быть сброшен, если его программно не подняли. А почему ты так уверен, что "его программно не подняли" до того, как получил управление твой код?
|
Автор: | Fatal_Error [ 03 мар 2013, 21:08 ] |
Заголовок сообщения: | Re: не грузится ядро |
phantom-84 писал(а): А почему ты так уверен, что "его программно не подняли" до того, как получил управление твой код? интуиция) нигде не юзал cld... всегда прокатывало, уже в привычку вошло. сколько кодил, никогда не видел чтобы он был поднят при старте проги. |
Автор: | Fatal_Error [ 08 мар 2013, 03:25 ] |
Заголовок сообщения: | Re: не грузится ядро |
это снова я сегодня у меня такой вопрос: что нужно чтобы прочесть жесткий диск\CD\DVD через EDD? у меня такой код: Код: org 100h start: mov dx, 80h mov ah,41h mov bx,55AAh int 13h mov ax, 0B800h mov es, ax mov dword ptr es:0, '5555' mov ah,42h mov si,Packet mov word ptr ds:pAddr+2,ds int 13h adc byte ptr es:0, 0 jmp $ Packet: pSize db 10h pRes1 db 0 pNum db 1 pRes2 db 0 pAddr dd 800h pLBA dq 0 41 функция без проблем, в ah 3 в сх 7, а вот на 42 биос дает ошибку и вешает машину. Int13_harddisk. function 42. Can't use 64 bit LBA |
Автор: | Fatal_Error [ 08 мар 2013, 08:45 ] |
Заголовок сообщения: | Re: не грузится ядро |
баг исправил. забыл первыми строками прописать Код: mov ax, data_seg
mov ds, ax |
Автор: | Yoda [ 18 мар 2013, 16:34 ] |
Заголовок сообщения: | Re: не грузится ядро |
Fatal_Error писал(а): phantom-84 писал(а): А почему ты так уверен, что "его программно не подняли" до того, как получил управление твой код? интуиция) нигде не юзал cld... всегда прокатывало, уже в привычку вошло. сколько кодил, никогда не видел чтобы он был поднят при старте проги. Интуиция может сработать на твоём компе, но совершенно не прокатит на остальных. Я, например, сталкивался с БИОСами, после вызова функций которых флаг находился в установленном состоянии, даже если я его сбрасывал перед тем. Так что, даже если ты его нигде не устанавливал, это совершенно не означает, что он будет сброшен в нужный тебе момент времени. |
Страница 3 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |