OSDev

для всех
Текущее время: 29 апр 2024, 04:45

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




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

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

Моя функция не будет поддерживать форматы com elf pm и все остальные, а будет создавать таблицу с адресами для их замены при загрузке и сам машинный код.
Кто-нибудь писал подобное?


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

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 320
Откуда: Псковская обл.
Язык и для какой ос. Код где будет выполняться? Зачем нужна таблица адресов ? Подробнее.


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

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Не понял задачу. В смысле, собираешься написать полноценный ассемблер?
Если дело только в релокации исполняемых файлов, то не лучше ли всё же поддержать форматы ELF или PE32? Подумай, для разработке в новой ОС с нестандартным форматом исполняемых файлов придётся практически с нуля создавать весь комплект инструментов (toolchain), а так ты сможешь пользоваться огромным количеством готовых качественных компиляторов/линкеров под Windows или под Linux.

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

<<< OS Boot Tools. >>>


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

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

Транслятор может быть только 32 битный и поддерживать стандартные команды мов, див, ... .


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

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

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

<<< OS Boot Tools. >>>


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

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

Хочу написать транслятор, ассемблер для своей оси. При написании ассемблера создаёш функцию создающую машинный код, который впринципи будет работать в любой оси.


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

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
А смысл? Чем не устраивают NASM и FASM?

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

<<< OS Boot Tools. >>>


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

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Yoda писал(а):
А смысл? Чем не устраивают NASM и FASM?

Не могу я фасмом у себя в оси компилировать, он там не запускается и про таблицу уже писал.
А что такая это сложная это задача? Перебераеш команды и переводиш их в их коды. Но для начала нужно перебрать метки.


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

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Станислав писал(а):
А что такая это сложная это задача? Перебераеш команды и переводиш их в их коды. Но для начала нужно перебрать метки.

Посмотри исходники FASM и оцени объем работы. Они в свободном доступе, качаются вместе с самим FASM'ом.
А чтоб запустить чужой компилятор в своей оси - придется немножко ручками повозиться. Можно скомпилировать фасм фасмом в PE с готовой таблицей релокации, потом её переделать под требуемый формат и переписать заголовок PE. И разумеется, нужно заменить вызовы всех API (т.е. подредактировать код ФАСМа).


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

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


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

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


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

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


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

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