|
Архитектура системы дедуктивной верификации машинного кода
И. В. Гладышевa, А. С. Камкинbcad, А. М. Коцынякd, П. А. Путроda, А. В. Хорошиловdabc a Национальный исследовательский университет «Высшая школа экономики»
b Московский физико-технический институт
c Московский государственный университет имени М. В. Ломоносова
d Институт системного программирования им. В.П. Иванникова РАН
Аннотация:
В последние годы ИСП РАН разрабатывает систему дедуктивной верификации машинного (бинарного) кода. Мотивация понятна: современные компиляторы, такие как GCC и Clang/LLVM, не застрахованы от ошибок; тем самым, проверка корректности сгенерированного кода (хотя бы для компонентов с повышенными требованиями к надежности и безопасности) не является лишней. Ключевая особенность предлагаемого подхода состоит в возможности переиспользования формальных спецификаций (пред- и постусловий, инвариантов циклов, лемм и т.п.) уровня исходного кода для верификации машинного кода. Инструмент основан на формальной спецификации системы команд и обеспечивает высокий уровень автоматизации: он дизассемблирует машинный код, извлекая его семантику, адаптирует высокоуровневые спецификации для машинного кода и генерирует условия верификации. Система использует ряд сторонних компонентов, включая анализатор исходного кода (Frama-C), анализатор машинного кода (MicroTESK) и SMT-решатель (СVC4). Модульная архитектура позволяет заменять один компонент другим при изменении формата входных данных или используемой техники верификации. В работе рассматривается архитектура инструмента, описывается наша реализация и демонстрируется пример верификации библиотечной функции memset.
Ключевые слова:
формальные методы, дедуктивная верификация, анализ бинарного кода, проверка эквивалентности, архитектура системы команд, машинный код, тестирование компиляторов.
Образец цитирования:
И. В. Гладышев, А. С. Камкин, А. М. Коцыняк, П. А. Путро, А. В. Хорошилов, “Архитектура системы дедуктивной верификации машинного кода”, Труды ИСП РАН, 32:3 (2020), 7–19
Образцы ссылок на эту страницу:
https://www.mathnet.ru/rus/tisp508 https://www.mathnet.ru/rus/tisp/v32/i3/p7
|
|