OSDev

для всех
Текущее время: 28 апр 2024, 09:17

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




Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3, 4, 5, 6
Автор Сообщение
 Заголовок сообщения: Re: Загрузчик!
СообщениеДобавлено: 25 авг 2013, 17:35 

Зарегистрирован: 24 авг 2013, 22:58
Сообщения: 33
значение вернулось, причиной была 1 команда nop для BPB


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузчик!
СообщениеДобавлено: 25 авг 2013, 17:57 

Зарегистрирован: 24 авг 2013, 22:58
Сообщения: 33
Чтение успешно удалось товарищи!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузчик!
СообщениеДобавлено: 25 авг 2013, 18:11 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Суть проблемы не в nop, в такой простой команде ошибки быть не может. Проблема в "jmp start", которая может кодироваться операндами различного размера, при этом в программе не уточнён размер. В моём примере уточнён.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузчик!
СообщениеДобавлено: 25 авг 2013, 18:49 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Вообще-то в данном конкретном случае невалидный BPB+ по идее не должен приводить к ошибке чтения, если бутсектор переписывался полностью. Кстати fasm за счет многопроходности может сжимать в том числе и переходы вперед, хотя конечно всегда лучше указывать на необходимость использования короткой инструкции явно (jmp short start). Когда пишется только полезный код, незачем прописывать значения полей BPB+ в исходниках, например:
Код:
  org 7C00h
  jmp short @f
  nop
  rb BS_SIZE-3
@@:
  ...
Кстати я часто пакую загрузчики, частично или полностью исключая BPB+ из бинарника (начиная со смещения 3). Для этого достаточно переопределить BS_SIZE из приведенного выше исходника (указать значение 3).


Последний раз редактировалось phantom-84 25 авг 2013, 19:02, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузчик!
СообщениеДобавлено: 25 авг 2013, 18:53 

Зарегистрирован: 24 авг 2013, 22:58
Сообщения: 33
phantom-84 писал(а):
Вообще-то в данном конкретном случае невалидный BPB+ по идее не должен приводить к ошибке чтения, если бутсектор переписывался полностью. Кстати fasm за счет многопроходности может сжимать в том числе и переходы вперед, хотя конечно всегда лучше указывать на необходимость использования короткой инструкции явно (jmp short start).

ошибка out of range


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузчик!
СообщениеДобавлено: 25 авг 2013, 18:55 

Зарегистрирован: 24 авг 2013, 22:58
Сообщения: 33
Himik писал(а):
Суть проблемы не в nop, в такой простой команде ошибки быть не может. Проблема в "jmp start", которая может кодироваться операндами различного размера, при этом в программе не уточнён размер. В моём примере уточнён.

Да согласен проблема не в nop а в динамичном размере команды jmp Start, по сути я думал она займет 2 байта, а заняла как я понимаю 3, должно было быть так (jmp Start + nop = 3 bytes) и как раз с 3-его байта начинается BPB...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузчик!
СообщениеДобавлено: 25 авг 2013, 19:06 

Зарегистрирован: 24 авг 2013, 22:58
Сообщения: 33
Вообщем всем спасибо, вроде как читает исправно! Все проверил, но ещё до конца не дописал :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузчик!
СообщениеДобавлено: 25 авг 2013, 19:07 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
novice писал(а):
ошибка out of range
Правильно. В этом случае ты должен поднять код. А если это сделать не получается, то явно указать не короткую инструкцию и убрать nop (FAT Spec. это позволяет).

Цитата:
Вообщем всем спасибо, вроде как читает исправно! Все проверил, но ещё до конца не дописал :D
Удачи :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузчик!
СообщениеДобавлено: 25 авг 2013, 19:13 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
novice писал(а):
ошибка out of range

jmp с размером short занимает 2 байта и тогда нужно добавлять nop, а с near нет.


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

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


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

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


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

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