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/