[C++] ВМ?  
Автор Сообщение

0
Сообщение [C++] ВМ?

собственно, интересует, как правильно реализовывать разбор и, собственно, исполнение инструкций своей вм?

огромные свичи на 100+ строк? смотрится жутко.

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

как правильно это делать? 



02 ноя 2014, 20:10
Профиль

0
Сообщение [C++] ВМ?

Вариантов много, можешь хоть XML конфигурацию написать и загружать её во время старта ВМ.


С точки зрения последующего расширения - это самое то.



02 ноя 2014, 20:22
Профиль WWW

0
Сообщение [C++] ВМ?

знаешь про автоматное программирование?



02 ноя 2014, 20:34
Профиль

0
Сообщение [C++] ВМ?

а адреса функций динамически подгружать? а функции, реализующие инструкции где-то хранить надо... возвращаемся к началу



02 ноя 2014, 21:12
Профиль

0
Сообщение [C++] ВМ?

Функции реализующие инструкции пихаешь в библиотеку. В инит пихаешь масив с мэпингом инструкция=функция, и всё.



02 ноя 2014, 22:19
Профиль WWW

0
Сообщение [C++] ВМ?

См. 1-й мой пост. Я говорил про массив и вбивание элементов. Стало быть, лучше вариантов нет?



02 ноя 2014, 22:40
Профиль

0
Сообщение [C++] ВМ?

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


Я бы например погуглил уже готовый движок для ВМ и использовал его. Так как сейчас есть множество готовых решений и не использовать их - это тратить время в пустую.



02 ноя 2014, 23:58
Профиль WWW

0
Сообщение [C++] ВМ?

Спасибо, DDUH, буду делать с массивом функций. Воздержусь от сторонних библиотек (а мб и нет?). Необходимо как можно меньше зависимостей.

 



03 ноя 2014, 00:03
Профиль
Начать новую тему Ответить на тему


Перейти:  

На сайте использованы материалы, принадлежащие Blizzard Entertainment. Копирование материалов возможно только c разрешения портала. В противном случае это будет называться уже другим словом.
Рейтинг@Mail.ru