OSDev http://osdev.su/ |
|
транслятор http://osdev.su/viewtopic.php?f=6&t=513 |
Страница 1 из 3 |
Автор: | Станислав [ 29 мар 2012, 06:42 ] |
Заголовок сообщения: | транслятор |
Думаю написать функцию перевода текстового файла, с лексиконом похожим на фасм, в машинный код. Создаю в фасме бинарники, меняя в них org 0 на org 1 и в дополнительной проге сравниваю адреса и записываю их смещения для их замены после загрузки кода в оперативную память и перед передачей на него управления. Моя функция не будет поддерживать форматы com elf pm и все остальные, а будет создавать таблицу с адресами для их замены при загрузке и сам машинный код. Кто-нибудь писал подобное? |
Автор: | iz56 [ 29 мар 2012, 09:38 ] |
Заголовок сообщения: | Re: транслятор |
Язык и для какой ос. Код где будет выполняться? Зачем нужна таблица адресов ? Подробнее. |
Автор: | Yoda [ 29 мар 2012, 10:27 ] |
Заголовок сообщения: | Re: транслятор |
Не понял задачу. В смысле, собираешься написать полноценный ассемблер? Если дело только в релокации исполняемых файлов, то не лучше ли всё же поддержать форматы ELF или PE32? Подумай, для разработке в новой ОС с нестандартным форматом исполняемых файлов придётся практически с нуля создавать весь комплект инструментов (toolchain), а так ты сможешь пользоваться огромным количеством готовых качественных компиляторов/линкеров под Windows или под Linux. |
Автор: | Станислав [ 29 мар 2012, 13:39 ] |
Заголовок сообщения: | Re: транслятор |
Для своей ОС. Запускаю бинарник с таблицей собственного изготовления всё работает, задача стоит объединить компиляцию и создание таблицы, а так же компилировать файлы в своей ОС. Бинарник занимает 300 байт и запускает окошко с кнопками, получает сообщения от системы, всё как надо настроено. Форматы известные большего размера и код для других систем у меня не запустится. Транслятор может быть только 32 битный и поддерживать стандартные команды мов, див, ... . |
Автор: | Yoda [ 29 мар 2012, 16:12 ] |
Заголовок сообщения: | Re: транслятор |
Всё же не могу понять, что именно ты хочешь сделать. Написать ассемблер для своей оси? Или что-то типа скриптового линкера, чтобы делать исполняемые файлы в своём формате? |
Автор: | Станислав [ 29 мар 2012, 17:08 ] |
Заголовок сообщения: | Re: транслятор |
Yoda писал(а): Всё же не могу понять, что именно ты хочешь сделать. Написать ассемблер для своей оси? Или что-то типа скриптового линкера, чтобы делать исполняемые файлы в своём формате? Хочу написать транслятор, ассемблер для своей оси. При написании ассемблера создаёш функцию создающую машинный код, который впринципи будет работать в любой оси. |
Автор: | Yoda [ 29 мар 2012, 17:24 ] |
Заголовок сообщения: | Re: транслятор |
А смысл? Чем не устраивают NASM и FASM? |
Автор: | Станислав [ 29 мар 2012, 18:38 ] |
Заголовок сообщения: | Re: транслятор |
Yoda писал(а): А смысл? Чем не устраивают NASM и FASM? Не могу я фасмом у себя в оси компилировать, он там не запускается и про таблицу уже писал. А что такая это сложная это задача? Перебераеш команды и переводиш их в их коды. Но для начала нужно перебрать метки. |
Автор: | Bargest [ 29 мар 2012, 18:43 ] |
Заголовок сообщения: | Re: транслятор |
Станислав писал(а): А что такая это сложная это задача? Перебераеш команды и переводиш их в их коды. Но для начала нужно перебрать метки. Посмотри исходники FASM и оцени объем работы. Они в свободном доступе, качаются вместе с самим FASM'ом. А чтоб запустить чужой компилятор в своей оси - придется немножко ручками повозиться. Можно скомпилировать фасм фасмом в PE с готовой таблицей релокации, потом её переделать под требуемый формат и переписать заголовок PE. И разумеется, нужно заменить вызовы всех API (т.е. подредактировать код ФАСМа). |
Автор: | Станислав [ 29 мар 2012, 18:58 ] |
Заголовок сообщения: | Re: транслятор |
Я был не в курсе, что исходники фасма открыты. Тогда проще будет их настроить на свою систему. нужно попробовать убрать от туда все лишние форматы. |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |