OSDev

для всех
Текущее время: 28 мар 2024, 17:43

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: FASM для ARM, JVM и M6502 на макросах
СообщениеДобавлено: 05 янв 2015, 22:58 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Набрел на интереснейшую страничку. У чувака явно черный пояс по макросам FASM, и с их помощью он делает производные от FASM языки. Все пока не изучал, глянул лишь на Micro-FASM (прямая ссылка). Он пишет, что вынес инструкции и регистры в макросы, и теперь их можно произвольно определять. В примерах есть ARM, байт-код Java и M6502.

Глубоко пока не копал, но идея абстрагирования вызывает уважение. Для ассемблера -- тем более. Если правильно понял описание, с помощью этой штуки можно писать переносимый код на ассемблере... Или я что-то путаю?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FASM для ARM, JVM и M6502 на макросах
СообщениеДобавлено: 05 янв 2015, 23:56 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
Если правильно понял описание, с помощью этой штуки можно писать переносимый код на ассемблере... Или я что-то путаю?

Переносимый нельзя. Например, в JVM нет регистров. От слова совсем. Это стековая машина. А следовательно, скомпилировать один и тот же код под x86 и под JVM принципиально невозможно (в рамках ассемблера, конечно; я не рассматриваю вариант написания какого-нибудь ЯВУ типа Паскаля на макросах FASM'а:)). Да и вообще, у всех архитектур свой набор инструкций, и разные вещи устроены по-разному. Где-то есть даже хитровыдрюченные команды для подсчета CRC, а где-то элементарного умножения нету.
Если все же рассматривать вариант написания своего ЯВУ на макросах FASM, то, наверное, будет можно писать переносимый код. Но это уже по сути компилятор, только очень тупой: макросы разворачиваются в конкретный набор команд, а значит - прощай, оптимизация.
Так что польза тут скорее в том, что один и тот же FASM с помощью пары файлов с макросами можно заставить ассемблировать под разные архитектуры. Получаем все ассемблеры в одном.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FASM для ARM, JVM и M6502 на макросах
СообщениеДобавлено: 06 янв 2015, 05:44 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Bargest писал(а):
Так что польза тут скорее в том, что один и тот же FASM с помощью пары файлов с макросами можно заставить ассемблировать под разные архитектуры. Получаем все ассемблеры в одном.


И да, и нет. Технически с помощью макросов генерировать нужный машинный код, конечно, можно. Но вот обеспечить корректные записи перемещений, правильную отладочную информацию и т.п. намного сложней. Хотя, насколько понимаю, всё это на ФАСМе сделать можно, но... Это изврат какой-то будет, очень сложный в отладке и отличающийся низкой производительностью (по сравнению с нормально написанным транслятором, специально заточенным под нужную архитектуру). Ну и следует помнить о том, что макросы вряд ли позволяют покрыть все возможные особенности синтаксиса команд разных архитектур, т.е., возможно, придётся записывать команды не так, как принято для конкретной архитектуры -- а в общем и целом это не есть хорошо. Но, поскольку сам я ФАСМ не использовал, то утверждать не буду.

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


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

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


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

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


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

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