ПОТОКО-ЧУВСТВИТЕЛЬНЫЙ АНАЛИЗ УКАЗАТЕЛЕЙ ЯЗЫКА С, ОСНОВАННЫЙ НА ДИАГРАММАХ ДВОИЧНЫХ РЕШЕНИЙ Санкт-Петербургский Государственный Университет Математико-Механический.

Презентация:



Advertisements
Похожие презентации
Санкт-Петербургский Государственный Университет Математико-Механический факультет Кафедра системного программирования Применение диаграмм двоичных решений.
Advertisements

Санкт - Петербургский Государственный Университет Математико - механический факультет Кафедра системного программирования Система проверки данных на полноту.
Санкт-Петербургский Государственный Университет Математико-Механический факультет Кафедра системного программирования Межъязыковое взаимодействие OCaml.
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Математико-механический факультет Кафедра системного программирования Автоматизация выбора оптимальной.
Генератор синтаксических анализаторов для решения задач автоматизированного реинжиниринга программ Дипломная работа студента 544 группы Чемоданова Ильи.
Разработка кроссплатформенного приложения для кластерного анализа данных на основе рандомизированных алгоритмов Дипломная работа студента 544 группы Морозкова.
Алгоритм исправления ошибок при анализе в парсерах типа перенос-свертка, основанный на предположении об избыточности языка Дипломная работа студента 545.
Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования Курсовая работа студентки 361 группы.
Сравнение различных технологий создания и использования web-сервисов Дипломная работа студентки 544 группы Григорьевой Елены Научный руководитель: Графеева.
МГУ имени Ломоносова, механико-математический факультет, кафедра вычислительной математики Исследование проблемы переполнения буферов в программах Пучков.
Генерация средств импорта данных в рамках проектов ИС, реализованных в технологии REAL-IT Выполнил Комиссаров Антон Научный руководитель: Иванов А.Н. Рецензент:
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Проверка эквивалентности срединной и линейной осей многоугольника Дипломная работа студента 545 группы Подколзина Максима Валериевича Санкт-Петербургский.
Исследование возможностей сервисной шины SonicMQ Дипломная работа студентки 545 группы Комольцевой Дарьи Владимировны Научный руководитель: Графеева Н.Г.
Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
Параллельные алгоритмы для симплициального подразделения области с итерационным измельчением вблизи границы Кафедра параллельных алгоритмов Математико-Механический.
Введение Язык программирования C++ В настоящее время C++ является одним из самых популярных языков программирования. C++ компилируемый, статически типизированный.
Апробация технологий Silverlight/LINQ/WCF для создания web-приложений, ориентированных на интенсивную обработку данных Дипломная работа студента 545 группы.
Автоматическая генерация каркасов клиентских приложений для систем с сервисно-ориентированной архитектурой Дипломная работа студента 545 группы Аязяна.
Телевизионная подсистема платформы управления IPTV услугами Санкт-Петербургский Государственный университет Математико – механический факультет Кафедра.
Транксрипт:

ПОТОКО-ЧУВСТВИТЕЛЬНЫЙ АНАЛИЗ УКАЗАТЕЛЕЙ ЯЗЫКА С, ОСНОВАННЫЙ НА ДИАГРАММАХ ДВОИЧНЫХ РЕШЕНИЙ Санкт-Петербургский Государственный Университет Математико-Механический факультет Кафедра системного программирования Дипломная работа студента 544 группы Н. М. Тимофеева Научный руководитель Д.Ю. Булычев

Введение Классическая задача анализа потока данных Пример: анализ достигающих определений без анализа указателей void f() { … *p = 13; … }

Постановка задачи Creen – инструмент статического анализа языка C Потоко-чувствительный, контекстно- независимый анализ указателей языка С Потоко-чувствительность – учитывает порядок и количество исполнений операторов, влияющих на значения указателей Контекстная-независимость – анализ не учитывает контекст вызова процедур

void f() { … int* a = &b; if (y == &b) { a = &c }; … } Представление значений указателей бинарными деревьями предсказателей Предлагаемый подход

Сокращенные диаграммы двоичных решений Компактное представление больших множеств Эффективные операции над множествами Интерпретация операций на указателях в диаграммах двоичных решений Предлагаемый подход

Абстракция памяти Удобство хранения в диаграммах двоичных решений Аппроксимация значений выражений. Простейшая арифметика на указателях Итеративный анализ потока данных библиотеки PRANLIB

Пример void main() { while (p == &k) x = &y; if (y == 0) x = malloc(4); else k = &m; p = &k; d = x; return 1; }

Результаты Разработана абстракция памяти, удобная для хранения в диаграммах двоичных решений Интерпретация действий с указателями в диаграммах двоичных решений Реализован потоко-чувствительный алгоритм анализа указателей в инструменте Creen