Разработка языка сценариев для систем виртуальной...
DESCRIPTION
Разработка языка сценариев для систем виртуальной реальности. А.А. Безгодов А.Ю. Тропченко. Проблема. Рост сложности приложений Рост времени компиляции ( > 30 мин ) Рост сложности и времени разработки Рост стоимости Необходимость расширения функциональности приложения после выпуска. - PowerPoint PPT PresentationTRANSCRIPT
Разработка языка сценариев для систем виртуальной
реальностиА.А. Безгодов
А.Ю. Тропченко
Проблема
• Рост сложности приложений
• Рост времени компиляции (>30 мин)
• Рост сложности и времени разработки
• Рост стоимости
• Необходимость расширения функциональности приложения после выпуска
Решения
• Распределенная сборка проектов– У конечных пользователей нет исходных текстов– Сложность разработки
• Программные модули (plug-ins)– Сложность разработки модулей
• Языки сценариев– Низкая производительность
• Совместное использование всех 3-х подходов
Языки сценариев
• Lua
• MEL (Maya embedded language)
• Unreal Script
• Angel Script
• Quake C
Цели и требования
• Синтаксис С• Динамическая типизация• Типы данных:
– Null– Float, Integer– Vector– String
• Поддержка типов данных на уровне VM• Легкость встраивания в главное приложение
Пример кода
0! = 01! = 12! = 23! = 64! = 245! = 1206! = 7207! = 50408! = 403209! = 362880
Типы данных
20 байт4 байта 16 байт
NULL
INT int
DOUBLE double
VECTOR float float float Float
STRING index
FUNCTION index
REFERENCE index
Память и адресация
• Основная память
• Стек
• Общее адресное пространство:– [ 0 | address ] – основная память– [ 1 | offset ] - стек
Система командСтек и память Данные Поток
выполненияLOAD, addressLDAD, addressSTORECONST, operandSTKRES, nREM
ADD SUB MULDIV MOD NEG
BIN_AND BIN_ORBIN_XOR BIN_NOT
LOG_AND LOG_ORLOG_NOT
IS_EQ IS_UNEQIS_GRTR IS_LESSIS_GEQ IS_LEQ
CALL, nRETURNJMP, addrJMPC, addrJMPNC, addr
Вызов функцийSTACK
STACK
STACK
STACK
STACK
STACK
STACK
STACK
STACK
STACK
STACKBASE
TOP
Заключение
• Массивы, списки, деревья и другие контейнеры
• Структуры данных
• Параллельное выполнение
• Инструменты:– Отладчики– Профайлеры
Вопросы?