Dreamer
|
Tuesday 24.02.2004 09:19
|
|
|
Зарегистрирован: Friday 20.02.2004 09:36
Местоположение: Mogilev, Belarus
Сообщений - 114
|
В bochs я и запускал, но толкового он мне не выдал НИЧЕГО!!! Но! После того, как я закомментировал 'mov cr0, eax', и ошибку выдавать перестало, но и программа не работала.
|
Наверх
|
|
AlexeyASugonyaev
|
Tuesday 24.02.2004 11:26
|
|
|
Зарегистрирован: Tuesday 18.11.2003 06:36
Местоположение: Челябинская обл., г.Карталы
Сообщений - 68
|
Dreamer писал(а): ... В bochs я и запускал, но толкового он мне не выдал НИЧЕГО!!! Но! После того, как я закомментировал 'mov cr0, eax', и ошибку выдавать перестало, но и программа не работала.
Раскоментируй mov cr0,eax и пришли лог.
|
Наверх
|
|
Dreamer
|
Tuesday 24.02.2004 12:59
|
|
|
Зарегистрирован: Friday 20.02.2004 09:36
Местоположение: Mogilev, Belarus
Сообщений - 114
|
Нет проблем. Только скажу еще то, что данный код предназначался для boot сектора дискеты. Я же запускал откомпилированный com файл уже из boot программы. Может, в этом и кроется вся ошибка. Однако я не раз видел в исходниках других осей переход в PM из ядра. log.txt
|
Наверх
|
|
AlexeyASugonyaev
|
Wednesday 25.02.2004 06:48
|
|
|
Зарегистрирован: Tuesday 18.11.2003 06:36
Местоположение: Челябинская обл., г.Карталы
Сообщений - 68
|
Dreamer писал(а): ... Нет проблем. Только скажу еще то, что данный код предназначался для boot сектора дискеты. Я же запускал откомпилированный com файл уже из boot программы. Может, в этом и кроется вся ошибка. Однако я не раз видел в исходниках других осей переход в PM из ядра.
log.txt
По всей видимости от адреса загрузки расчитан вход в PM через Межсегментный jmp far sel:offs. Именно offs настроен от начала сегмента sel таким образом что бы попсать на PM код. В этом случае адрес загрузки (тем более что он не очень круглый) играет роль. Понимаешь?
|
Наверх
|
|
Dreamer
|
Wednesday 25.02.2004 09:36
|
|
|
Зарегистрирован: Friday 20.02.2004 09:36
Местоположение: Mogilev, Belarus
Сообщений - 114
|
Провел маленький эксперимент. Записал com файл, созданный с помощью nasm из этого кода в boot сектор дискеты. Bochs сказал "Not a bootable disk" или что-то в этом роде. Ни в винде, ни в досе дискету не читает.
Затем началось самое интересное. Опять перекомпилировал код, записал как kernel.com, запустил в Bochs. Ну, эффект тот же. Потом заменил строку jmp 0x08: _protected на lloop: jmp lloop. Так же перекомпилировал. Bochs считал этот com файлик и... ошибки не выдал. Нажимаю Power off и Bochs пишет то да се и "Protected mode". Сумашествие да и только.
|
Наверх
|
|
AlexeyASugonyaev
|
Wednesday 25.02.2004 11:31
|
|
|
Зарегистрирован: Tuesday 18.11.2003 06:36
Местоположение: Челябинская обл., г.Карталы
Сообщений - 68
|
Dreamer писал(а): ... Провел маленький эксперимент. Записал com файл, созданный с помощью nasm из этого кода в boot сектор дискеты. Bochs сказал "Not a bootable disk" или что-то в этом роде. Ни в винде, ни в досе дискету не читает.
Правильно - ты же не сделал физ.структуру бута, или сделал?
Dreamer писал(а): ...
Затем началось самое интересное. Опять перекомпилировал код, записал как kernel.com, запустил в Bochs. Ну, эффект тот же. Потом заменил строку jmp 0x08: _protected на lloop: jmp lloop. Так же
Тем самым ты остался после перехода в PM с неотчищенными конвеерами. И вошел в цикл.
Dreamer писал(а): ...
перекомпилировал. Bochs считал этот com файлик и... ошибки не выдал. Нажимаю Power off и Bochs пишет то да се и "Protected mode". Сумашествие да и только.
Все правильно, что доказывает наличие непопадания по адресу _protected, так как ты где изменяешь размер файла, а значаит относительное смещение _protected Относительно адреса загрузки. Загружай нормальный пример как делал до этого ставь брек поинт на эту инструкцию, а затем делай шаг, увидишь куда попадешь реально.
|
Наверх
|
|
Dreamer
|
Wednesday 25.02.2004 13:11
|
|
|
Зарегистрирован: Friday 20.02.2004 09:36
Местоположение: Mogilev, Belarus
Сообщений - 114
|
> Загружай нормальный пример как делал до этого ставь брек поинт на эту инструкцию, а затем делай шаг, увидишь куда попадешь реально.
А как это сделать ??? В bochs по крайней мере я таких фич не видел, а nasm, насколько я знаю, дебаггера не имеет
|
Наверх
|
|
Dreamer
|
Wednesday 25.02.2004 13:14
|
|
|
Зарегистрирован: Friday 20.02.2004 09:36
Местоположение: Mogilev, Belarus
Сообщений - 114
|
P.S. NASM генерирует файл, размером 512 байт, так что сделать физ. стр-ру бута я, по идее, не могу.
|
Наверх
|
|
Dreamer
|
Friday 19.03.2004 20:29
|
|
|
Зарегистрирован: Friday 20.02.2004 09:36
Местоположение: Mogilev, Belarus
Сообщений - 114
|
OK. В PM я перешел без проблем. Как теперь обрабатывать прерывания и создать IDTR? Какая должна быть структура у сегментов IDTR и что в них должно быть?
|
Наверх
|
|
AlexeyASugonyaev
|
Saturday 20.03.2004 08:16
|
|
|
Зарегистрирован: Tuesday 18.11.2003 06:36
Местоположение: Челябинская обл., г.Карталы
Сообщений - 68
|
Dreamer писал(а): ... OK. В PM я перешел без проблем. Как теперь обрабатывать прерывания и создать IDTR? Какая должна быть структура у сегментов IDTR и что в них должно быть?
А почитать документацию? Вы думаете здесь можно изложить это кратче и понятней? Читайте документацию
|
Наверх
|
|
Модераторы: Roman I Khimov |
|
|