|
Эта публикация цитируется в 1 научной статье (всего в 1 статье)
Theory of computing
Трансформация модели памяти языка программирования C в объектно-ориентированное представление на языке EO
А. И. Легаловa, Е. Г. Бугаенкоb, Н. К. Чуйкинa, М. В. Шипицинc, Я. И. Рябцевa, А. Н. Каменскийa a НИУ «Высшая школа экономики», ул. Мясницкая, д. 20, г. Москва, 101000 Россия
b Российский исследовательский институт Huawei, Смоленская площадь, 7-9, г. Москва, 121099 Россия
c Национальный исследовательский университет ИТМО , Кронверкский пр., д. 49, лит А., г. Санкт-Петербург, 197101 Россия
Аннотация:
В работе проводится анализ возможностей трансформации конструкций языка программирования C в объекты языка программирования EO. Особенностью рассматриваемого подхода является транспиляция из языка системного программирования в язык с более высоким уровнем абстракции, не поддерживающий непосредственные манипуляции с компьютерной памятью. К действиям, которые в этом случае необходимо поддерживать, относится использование разыменованных указателей, наложение данных различного типа на одну и ту же область памяти, а также различная интерпретация одних и тех же данных, расположенных в одном и том же адресном пространстве памяти. Принято решение о создании дополнительных EO-объектов, напрямую имитирующих непосредственную работу с компьютерной памятью в языке C и инкапсулирующих ненадежные операции с данными посредством указателей. Для отображения возможностей языка C, обеспечивающих взаимодействие с компьютерной памятью, предлагается абстрактный объект-память. Он представляет собой массив байт, при работе с которым возможны запись и чтение по заданному индексу. Для исследования вариантов и анализа полученных результатов разработан транспилятор, обеспечивающий необходимые трансформации. Он реализован на основе Clang, который формирует абстрактное синтаксическое дерево. Обработка этого дерева осуществляется с использованием библиотек LibTooling и LibASTMatchers. Рассмотренный подход оказывается целесообразным при решении ряда задач, к одной из которых относится статический анализ кода. Подобные решения позволяют выделить в отдельные программные объекты низкоуровневые фрагменты кода, акцентировав внимание на их изучении и возможных преобразованиях в более надежный код.
Ключевые слова:
трансформация программ, процедурное программирование, объектно-ориентированное программирование, транспиляция, компиляция, языки программирования.
Поступила в редакцию: 07.08.2022 Исправленный вариант: 01.09.2022 Принята в печать: 02.09.2022
Образец цитирования:
А. И. Легалов, Е. Г. Бугаенко, Н. К. Чуйкин, М. В. Шипицин, Я. И. Рябцев, А. Н. Каменский, “Трансформация модели памяти языка программирования C в объектно-ориентированное представление на языке EO”, Модел. и анализ информ. систем, 29:3 (2022), 246–264
Образцы ссылок на эту страницу:
https://www.mathnet.ru/rus/mais779 https://www.mathnet.ru/rus/mais/v29/i3/p246
|
Статистика просмотров: |
Страница аннотации: | 88 | PDF полного текста: | 25 | Список литературы: | 16 |
|