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) :lol: В любом. 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: не грузится ядро

это снова я :D сегодня у меня такой вопрос: что нужно чтобы прочесть жесткий диск\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/