ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
6 июля
157420 Топик полностью
Evgeny_CD, Архитектор (24.05.2009 19:07, просмотров: 152) ответил Evgeny_CD на sinelaboreRT efficient C/C++ code generation from statecharts -> Цена 99 баксов| евриков выглядит антикризисно.
Интересно, а так state machines кто-то делает? http://caxapa.ru/156787.html
http://caxapa.ru/157413.html
Создаем БД в смыcле -> со следующими данными: * имя машины * число состояний * переменная - описывает текущее состояние * функции - одна функция - одно состояние. * глобальные переменные машины * частично доступные для отдельных состояний переменные Делаем глобальный массив - указатели на функции-состояния. № элемента = номер состояния. Делаем гипервизор. Который переключает состояния. Берет переменную-состояние и делает переход по таблице. Для удобства контроль времени в духе --> Внутри тела каждой функции делаем то, что должны делать, анализируем переменные, и возвращяем новое состояние машины. А гипервизор делает этот скачек. Есть удобная графическая тулза, которая описывает все возможные переходы внутри машины. Т.е. у нас есть переменные машины, есть терм от этих меременных, и заготовка - что делаем в этом случае и куда идем. Эти заготовки "оттегованные" автоматом вставляютя в текст самих функций, и там уже ручками пишешь локальные куски. Для того, чтобы понять, кто что нагенерил, все сгенеренное автоматом, имеет в конце //auto, например. Все красиво выровнено и радует глаз :) Вполне можно сделать иерархические FSM. Если ко всему этому сделать удобный вузализатор (что, на самом деле, сдается мне, не так уж сложно), то во многих случаях можно отказаться от запуска "задач". Что позволит экономить ресурсы камня - не только память, но и время на переключение.. Наверное, можно придумать, как писать портируемо - незвисимо от того, есть ли переключение задач. Если время не критично, то оно и так получится универсально - ну прервали выполнение функции-узла, и что такого - вернули управление - и процесс пошел далее. Есть некоторые накладные расходы по сравнению со switch, но при современной скорости процов они во многих случаях допустимы. Если проявить немного фантазии, то видно, что количество ошибок можно резко уменьшить. Есть, например, описание протокола. С описанием машин, состояний и перменных. Делаем виртуальный объект на отдельной вкадке нашей "тулзы". Просто анимированная интерактивная картинка. Но все сущности этой картинки - объекты. Шелкаешь на имя машины - и можешь выбрать: переход на закладку в документе или на кусок кода. Аналогично все состояния и переменные. Как удобная виртуальная система навигации.