Разработка языка сценариев для систем виртуальной реальности А.А. Безгодов А.Ю. Тропченко
Проблема Рост сложности приложений Рост времени компиляции (>30 мин) Рост сложности и времени разработки Рост стоимости Необходимость расширения функциональности приложения после выпуска
Решения Распределенная сборка проектов –У конечных пользователей нет исходных текстов –Сложность разработки Программные модули (plug-ins) –Сложность разработки модулей Языки сценариев –Низкая производительность Совместное использование всех 3-х подходов
Языки сценариев Lua MEL (Maya embedded language) Unreal Script Angel Script Quake C
Цели и требования Синтаксис С Динамическая типизация Типы данных: –Null –Float, Integer –Vector –String Поддержка типов данных на уровне VM Легкость встраивания в главное приложение
Пример кода 0! = 0 1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 6! = 720 7! = ! = ! =
Типы данных 20 байт 4 байта16 байт NULL INTint DOUBLEdouble VECTORfloat Float STRINGindex FUNCTIONindex REFERENCEindex
Память и адресация Основная память Стек Общее адресное пространство: –[ 0 | address ] – основная память –[ 1 | offset ] - стек
Система команд Стек и памятьДанныеПоток выполнения LOAD, address LDAD, address STORE CONST, operand STKRES, nREM ADDSUBMUL DIVMODNEG BIN_AND BIN_OR BIN_XOR BIN_NOT LOG_AND LOG_OR LOG_NOT IS_EQ IS_UNEQ IS_GRTR IS_LESS IS_GEQ IS_LEQ CALL, n RETURN JMP, addr JMPC, addr JMPNC, addr
Вызов функций STACK BASE TOP
Заключение Массивы, списки, деревья и другие контейнеры Структуры данных Параллельное выполнение Инструменты: –Отладчики –Профайлеры
Вопросы?