Документация

Документация/Технологии

Связанные представления данных

Усложняйте восстановление логики ценных вычислений.

Coupled stateGF(2)Bit-sliceConsumer fusion

Несколько значений в одном представлении#

Независимые кодировки оставляют независимые задачи восстановления. Связанное состояние объединяет взаимодействующие скаляры: одна координата может зависеть от нескольких исходных значений. Для допустимых int/long-регионов предусмотрены аффинные и нелинейные треугольные представления с явными условиями входа и выхода.

Важна граница полезного вычисления. Регион может работать непосредственно в связанных координатах, уменьшая необходимость восстанавливать каждую переменную перед каждой операцией. Анализу приходится восстанавливать и представление, и выраженное в нём вычисление.

Выбор семейства представлений#

Реализация выходит за пределы аффинной арифметики: полиномиальная связь над GF(2), битовые булевы схемы, представления с IEEE-754 и кодированные рекуррентные циклы. У семейств разные затраты преобразования и условия доказательства для допустимых регионов; они не взаимозаменяемы для произвольного байткода.

ПредставлениеЧто меняетсяСледствие для анализа
Связанные координатыНесколько int/long-значений используют общее представление.Нужно восстанавливать связи значений, а не только отдельные кодировки.
GF(2) / bit-sliceДопустимые вычисления используют полиномиальные или булевы представления.Узнаваемое арифметическое выражение перестаёт быть рабочим представлением.
Состояние между итерациямиПредставление может сохраняться между поддерживаемыми итерациями.Локальные выражения нужно рассматривать вместе с изменяющимся состоянием.
Слияние с потребителемВыбранные вычисления выполняются прямо в кодированных координатах.В регионе может не остаться отдельной границы декодирования перед вычислением.

Константа как часть потребителя#

Обычная граница восстановления раскрывает значение и передаёт его другой операции. Преобразования потребителя могут объединять константу с использующим её вычислением. Сравнения и решения представляются трансдьюсером. Выбранная арифметика выражается DAG-комбинаторами MethodHandle с примитивными типами, связываемыми через ConstantDynamic.

Меняется объект реконструкции: узнаваемый литерал или простое арифметическое тело может превратиться в связь компонентов исполнения. Ожидаемый результат сохраняется, меняются представление и путь его получения.

Сохранение семантики языка#

Преобразования должны сохранять точную разрядность, знаковую интерпретацию, переполнение и исключения Java. Тесты охватывают 32/64-битные обратные преобразования, вычисления в связанных координатах, предусловия, ветвящиеся циклы и состояние обработчиков исключений. Это проверка конкретных границ, а не универсальной совместимости.

Связаться с командой