OSDev http://osdev.su/ |
|
транслятор http://osdev.su/viewtopic.php?f=6&t=513 |
Страница 2 из 3 |
Автор: | Yoda [ 29 мар 2012, 23:59 ] |
Заголовок сообщения: | Re: транслятор |
Исходники NASMа также открыты. Портировать всяко проще, чем с нуля создавать полноценный ассемблер. На самом деле написание хорошего оптимизирующего ассемблера с развитым макроязыком совсем не простая задача. Ещё добавь отладку. Над NASM-ом трудятся несколько человек не один год и до сих пор периодически всплывают ошибки. |
Автор: | Станислав [ 30 мар 2012, 05:06 ] |
Заголовок сообщения: | Re: транслятор |
Попробую разобраться с фасмом, убрать всё лишнее из исходников и добавить создание своей таблицы. |
Автор: | valeri [ 30 мар 2012, 13:41 ] |
Заголовок сообщения: | Re: транслятор |
Да, помню, именно fasm был первой прогой, которую я портировал на свою ОС. Там функций от API ОС требуется минимум. А вот что касается правки исходников.... Думаю проще будет реализовать в своей ОС один из популярных форматов исполняемых файлов, они все-таки уже проверены временем. |
Автор: | Станислав [ 30 мар 2012, 14:37 ] |
Заголовок сообщения: | Re: транслятор |
valeri писал(а): Да, помню, именно fasm был первой прогой, которую я портировал на свою ОС. Там функций от API ОС требуется минимум. А вот что касается правки исходников.... Думаю проще будет реализовать в своей ОС один из популярных форматов исполняемых файлов, они все-таки уже проверены временем. Какие функции от API ОС там требуются подскажите. В исходниках фасма пример для доса, винды, линукса какой лучше взять, они все компилируются. И как убрать от туда например поддержку форматов. |
Автор: | valeri [ 30 мар 2012, 16:44 ] |
Заголовок сообщения: | Re: транслятор |
Я брал от Windows. В файле source\<платформа>\system.inc содержатся обертки для всех используемых API функций. От ОС нужны функции выделения/освобождения памяти, создания/чтения/записи файлов, вывода строк, короче в этом файле все можно найти. Тебе, наверное, надо будет целиком переписать system.inc, написав обертки для своей системы. Ну и source\<платформа>\fasm.asm собственно точка входа в ассемблер. У меня в ОС поддерживался формат PE, поэтому exe-шник фасма я вообще не трогал, просто написал простейшую реализацию требуемых Windows API функций. |
Автор: | Станислав [ 30 мар 2012, 16:54 ] |
Заголовок сообщения: | Re: транслятор |
да уже заметил этот файл, мне придётся помучиться с форматами. Сначала хочу сделать создание таблицы адресов и компилировать в винде, потом попробую портировать сам фасм к себе. Думаю о том, чтобы покапаться в коде где создаётся формат(например ELF) и там его подправить. |
Автор: | valeri [ 30 мар 2012, 16:57 ] |
Заголовок сообщения: | Re: транслятор |
Вот видишь уже сколько проблем со своим форматом исполняемых файлов. Почему не использовать существующие? |
Автор: | Станислав [ 30 мар 2012, 17:02 ] |
Заголовок сообщения: | Re: транслятор |
valeri писал(а): Вот видишь уже сколько проблем со своим форматом исполняемых файлов. Почему не использовать существующие? В идеале хочю голый бинарник и таблицу адресов перед ним. С существующими форматами я не очень знаком и сейчас читаю про них, чтобы понять где в них эта таблица и какого она формата для того чтобы этот формат подправить нужно знать что править. Если вы знаете где в этих форматах она подскажите. |
Автор: | pavia [ 30 мар 2012, 18:17 ] |
Заголовок сообщения: | Re: транслятор |
Транслятор написать не трудно. Даже оптимизирующий и с развитыми макросами. Единственная трудность это то что то x86 имеет порядка 1000 инструкций и вам придется составить таблицу для трансляции. А эта задача трудоёмкая часов на 40. По поводу форматов PE. Его описание есть на wasm.ru. А вот Elf я плохо знаю. Не удивлюсь если запись такой таблицы имеет несколько вариантов исполнения. |
Автор: | Станислав [ 30 мар 2012, 18:45 ] |
Заголовок сообщения: | Re: транслятор |
Я читал про PE и раньше и на wasm.ru там не то что нужно, я не находил инфу именно про таблицу адресов, про всё остальное там буков много. Транслятор попробую взять у фасма, кстати код исходников там не такой и большой по объёму, он по скорости хорош и по функционалу вне конкуренции. В файле FORMATS.INC увидел как создаются таблицы relocation для форматов elf pe coff, мне приглянулся формат coff, там таблица в конце, я заменил eax на 'ghgh' и наблюдал как фасм вывел мне этот набор символов в дампе в конце файла их было 4 и каждая записи о адресе как я понял 10 байт. |
Страница 2 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |