pluffie
@pluffie
Стыдно за старые вопросы

Как сделать трансляцию кода в exe файл для языковой ВМ?

Недавно много моих проектов улетели в трубу. И теперь я решил писать свой ЯП. И сразу я столкнулся с проблемной. Как мне транслировать ассемблерный код для моей ВМ в исполняемый файл(exe'шник) и как мне заставить этот exe'шник работать с моей ВМ?
Есть код (ВМ Регистровая если что)
set a, 3
set b, 7
set c, 5
sum a, b, c to a

В этом коде переменным a, b и c устанавливаются значения 3, 7 и 5 после чего командой sum все три переменные суммируются и помещаются в a. И этот код должен транслироваться в exe'шник(желательно с помощью JS т.к транслятор будет именно на JS). После запуска exe'шник должен давать соответствующие команды языковой ВМ, а она их исполнять.
Как реализовать трансляцию этого кода в exe с помощью JS, и работу с этим exe в ВМ с помощью C++?
P.s Я знаю что странный выбор языков, просто на JS легко сделать транслятор, а на C++ будет легко делать ВМ.
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev
software engineer
exe это контейнер для операционной системы.
Непонятно что у вас за ВМ - каждая операционная система должна подерживать какой-то формат для исполняемых файлов и запустить его, то есть
1. создать новый процесс
2. Загрузить в память исполняемый код из файла, возможно часть кода, возможно код и какие-то данные
3. Передать управление на точку входа

Как и что грузить - указано в исполняемом файле (exe, elf), либо файлы делаются шаблонными (.com).

Вы сейчас путаете функциональность компилятора, и линкера.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@PeeX
Если все это легко делать, так в чем же вопрос?
На мой взгляд "легко" означает что я знаю что делать, как это делать и сколько это делать.

Ну и вм конечно и транслятор вы замахнулись. Может для начала простую стековую машину сделать?

Ну и при ваших вводных данных ответ на вопрос "как сделать" не подразумевает чего-то короткого
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы