OSDev

для всех
Текущее время: 01 май 2024, 10:52

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




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: транслятор
СообщениеДобавлено: 29 мар 2012, 23:59 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Исходники NASMа также открыты.
Портировать всяко проще, чем с нуля создавать полноценный ассемблер. На самом деле написание хорошего оптимизирующего ассемблера с развитым макроязыком совсем не простая задача. Ещё добавь отладку. Над NASM-ом трудятся несколько человек не один год и до сих пор периодически всплывают ошибки.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: транслятор
СообщениеДобавлено: 30 мар 2012, 05:06 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Попробую разобраться с фасмом, убрать всё лишнее из исходников и добавить создание своей таблицы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: транслятор
СообщениеДобавлено: 30 мар 2012, 13:41 

Зарегистрирован: 13 окт 2008, 17:38
Сообщения: 46
Откуда: Владимир
Да, помню, именно fasm был первой прогой, которую я портировал на свою ОС. Там функций от API ОС требуется минимум. А вот что касается правки исходников.... Думаю проще будет реализовать в своей ОС один из популярных форматов исполняемых файлов, они все-таки уже проверены временем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: транслятор
СообщениеДобавлено: 30 мар 2012, 14:37 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
valeri писал(а):
Да, помню, именно fasm был первой прогой, которую я портировал на свою ОС. Там функций от API ОС требуется минимум. А вот что касается правки исходников.... Думаю проще будет реализовать в своей ОС один из популярных форматов исполняемых файлов, они все-таки уже проверены временем.

Какие функции от API ОС там требуются подскажите. В исходниках фасма пример для доса, винды, линукса какой лучше взять, они все компилируются.
И как убрать от туда например поддержку форматов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: транслятор
СообщениеДобавлено: 30 мар 2012, 16:44 

Зарегистрирован: 13 окт 2008, 17:38
Сообщения: 46
Откуда: Владимир
Я брал от Windows.
В файле source\<платформа>\system.inc содержатся обертки для всех используемых API функций.
От ОС нужны функции выделения/освобождения памяти, создания/чтения/записи файлов, вывода строк, короче в этом файле все можно найти.
Тебе, наверное, надо будет целиком переписать system.inc, написав обертки для своей системы.
Ну и source\<платформа>\fasm.asm собственно точка входа в ассемблер.
У меня в ОС поддерживался формат PE, поэтому exe-шник фасма я вообще не трогал, просто написал простейшую реализацию требуемых Windows API функций.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: транслятор
СообщениеДобавлено: 30 мар 2012, 16:54 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
да уже заметил этот файл, мне придётся помучиться с форматами. Сначала хочу сделать создание таблицы адресов и компилировать в винде, потом попробую портировать сам фасм к себе.
Думаю о том, чтобы покапаться в коде где создаётся формат(например ELF) и там его подправить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: транслятор
СообщениеДобавлено: 30 мар 2012, 16:57 

Зарегистрирован: 13 окт 2008, 17:38
Сообщения: 46
Откуда: Владимир
Вот видишь уже сколько проблем со своим форматом исполняемых файлов. Почему не использовать существующие?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: транслятор
СообщениеДобавлено: 30 мар 2012, 17:02 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
valeri писал(а):
Вот видишь уже сколько проблем со своим форматом исполняемых файлов. Почему не использовать существующие?

В идеале хочю голый бинарник и таблицу адресов перед ним. С существующими форматами я не очень знаком и сейчас читаю про них, чтобы понять где в них эта таблица и какого она формата для того чтобы этот формат подправить нужно знать что править.
Если вы знаете где в этих форматах она подскажите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: транслятор
СообщениеДобавлено: 30 мар 2012, 18:17 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Транслятор написать не трудно. Даже оптимизирующий и с развитыми макросами.
Единственная трудность это то что то x86 имеет порядка 1000 инструкций и вам придется составить таблицу для трансляции. А эта задача трудоёмкая часов на 40.

По поводу форматов PE. Его описание есть на wasm.ru.
А вот Elf я плохо знаю. Не удивлюсь если запись такой таблицы имеет несколько вариантов исполнения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: транслятор
СообщениеДобавлено: 30 мар 2012, 18:45 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Я читал про PE и раньше и на wasm.ru там не то что нужно, я не находил инфу именно про таблицу адресов, про всё остальное там буков много.
Транслятор попробую взять у фасма, кстати код исходников там не такой и большой по объёму, он по скорости хорош и по функционалу вне конкуренции.

В файле FORMATS.INC увидел как создаются таблицы relocation для форматов elf pe coff, мне приглянулся формат coff, там таблица в конце, я заменил eax на 'ghgh' и наблюдал как фасм вывел мне этот набор символов в дампе в конце файла их было 4 и каждая записи о адресе как я понял 10 байт.


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

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


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

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


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

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