OSDev

для всех
Текущее время: 19 окт 2017, 15:32

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




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Исполняемые файлы
СообщениеДобавлено: 16 июл 2007, 22:24 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1195
Написал manual по формату исполняемых файлов, который я использую.

P.S. Обсуждение других форматов тоже приветствуется :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исполняемые файлы
СообщениеДобавлено: 16 июл 2007, 22:39 

Зарегистрирован: 26 апр 2007, 15:35
Сообщения: 366
Откуда: Saint-Petersburg
Ух ты ;) А зачем тебе свой формат? Чем стандартные не устраивают? ;)
Цитата:
P.S. Обсуждение других форматов тоже приветствуется :)

Вот вам код загрузки ELF-файла:
Код:
u32_t TProcess::LoadELF(register void *image)
{
  u32_t *object;
  Elf32_Phdr *p;
  Elf32_Ehdr *h = (Elf32_Ehdr *) image; /* образ ELF */
  Elf32_Phdr *ph = (Elf32_Phdr *) ((u32_t) h + (u32_t) h->e_phoff);

  /*
    Если секция обозначена как загружаемая - выделим для неё память,
    скопируем из файла данные и смонтируем в адресное пространство процесса
   */
  for (p = ph; p < ph + h->e_phnum; p++){
    if (p->p_type == ELF32_TYPE_LOAD && p->p_memsz) {
      if (p->p_filesz > p->p_memsz)
 hal->panic("Invalid section!");

      /*
      Выделим память под секцию
      Учтём, что начало секции может быть не выровнено по началу страницы
       */
      object = (u32_t *) kmalloc(p->p_memsz + (p->p_vaddr % PAGE_SIZE));

      if (p->p_filesz > 0) {
   memcpy((u32_t *) ((u32_t)object + (p->p_vaddr % PAGE_SIZE)), (u32_t *) ((u32_t) image + p->p_offset), p->p_filesz);
      }

      /* Монтируем секцию в адресное пространство процесса */
      memory->kmmap(object, (u32_t *) (p->p_vaddr & 0xfffff000), p->p_memsz + (p->p_vaddr % PAGE_SIZE));
      kfree(object); /* освобождаем память ядра от ненужных тут страниц */
    }
  }
  /* Возвращаем указатель на точку входа */
  return h->e_entry;
}

Вроде как, предельно просто и понятно ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исполняемые файлы
СообщениеДобавлено: 16 июл 2007, 22:53 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1195
legos, это очень простой и эффективный формат - все драйверы и приложения для моей оси на сегодняшний день записаны именно в этом формате. Однако я планирую ввести в свою систему и поддержку ELF - он мне тоже нравится. Отчасти данная тема посвящена и этому вопросу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исполняемые файлы
СообщениеДобавлено: 16 июл 2007, 23:34 

Зарегистрирован: 26 апр 2007, 15:35
Сообщения: 366
Откуда: Saint-Petersburg
Phantom-84, понятно ;)

Ждём выхода системы ;) Когда хоть это будет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исполняемые файлы
СообщениеДобавлено: 16 июл 2007, 23:50 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1195
legos, возможно, никогда... я еще не решил, стоит ли это делать, хотя опубликовал описание формата в первую очередь именно в пропедевтических целях. Видимо, нужно еще вывесить в сети шаблоны для написания приложений и драйверов, а также все необходимые включаемые файлы... А может лучше сначала все-таки ввести поддержку ELF?..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исполняемые файлы
СообщениеДобавлено: 17 июл 2007, 00:03 

Зарегистрирован: 26 апр 2007, 15:35
Сообщения: 366
Откуда: Saint-Petersburg
Phantom-84, я думаю, выкладывать стоит в первую очередь, может кому пригодится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исполняемые файлы
СообщениеДобавлено: 17 июл 2007, 05:09 

Зарегистрирован: 06 май 2007, 15:10
Сообщения: 141
DEF v3 рулит! Если Phantom-84 сделает систему - это будет бомба!
Потому-что слишком тщательно всё подготавливается...
Однако б, не сглазить!

MZ конечно видимо отстой, либо геморой. :)
Но мнеб хотелось. Привычка 8-) привязка к софту...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исполняемые файлы
СообщениеДобавлено: 17 июл 2007, 17:41 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1195
legos, ОК. Вот все необходимое для создания файлов приложений и драйверов в формате DEF v3 на fasm'е...

Исходники образцов и необходимые включаемые файлы: samples-src.rar

Если у кого-то нет последних версий fasm'а для самостоятельной компиляции образцов, можно посмотреть и бинарники образцов: samples-bin.rar

Если у кого-то возникнут вопросы, спрашивайте. По возможности постараюсь ответить на все вопросы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исполняемые файлы
СообщениеДобавлено: 17 июл 2007, 17:43 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1195
semiono, спасибо. И хотя я не преследую цель создать бомбу или что-то еще в этом духе, твои слова мне приятны.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Исполняемые файлы
СообщениеДобавлено: 18 июл 2007, 02:03 

Зарегистрирован: 26 апр 2007, 15:35
Сообщения: 366
Откуда: Saint-Petersburg
Phantom-84, спасибо за исходники ;)


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

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


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

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


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

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