Preview

Моделирование и анализ информационных систем

Расширенный поиск

Трансформация модели памяти языка программирования C в объектно-ориентированное представление на языке EO

https://doi.org/10.18255/1818-1015-2022-3-246-264

Аннотация

В работе проводится анализ возможностей трансформации конструкций языка программирования C в объекты языка программирования EO. Особенностью рассматриваемого подхода является транспиляция из языка системного программирования в язык с более высоким уровнем абстракции, не поддерживающий непосредственные манипуляции с компьютерной памятью. К действиям, которые в этом случае необходимо поддерживать, относится использование разыменованных указателей, наложение данных различного типа на одну и ту же область памяти, а также различная интерпретация одних и тех же данных, расположенных в одном и том же адресном пространстве памяти. Принято решение о создании дополнительных EO-объектов, напрямую имитирующих непосредственную работу с компьютерной памятью в языке C и инкапсулирующих ненадежные операции с данными посредством указателей. Для отображения возможностей языка C, обеспечивающих взаимодействие с компьютерной памятью, предлагается абстрактный объект-память. Он представляет собой массив байт, при работе с которым возможны запись и чтение по заданному индексу. Для исследования вариантов и анализа полученных результатов разработан транспилятор, обеспечивающий необходимые трансформации. Он реализован на основе Clang, который формирует абстрактное синтаксическое дерево. Обработка этого дерева осуществляется с использованием библиотек LibTooling и LibASTMatchers. Рассмотренный подход оказывается целесообразным при решении ряда задач, к одной из которых относится статический анализ кода. Подобные решения позволяют выделить в отдельные программные объекты низкоуровневые фрагменты кода, акцентировав внимание на их изучении и возможных преобразованиях в более надежный код.

Об авторах

Александр Иванович Легалов
НИУ «Высшая школа экономики»
Россия


Егор Георгиевич Бугаенко
Российский исследовательский институт Huawei
Россия


Николай Константинович Чуйкин
НИУ «Высшая школа экономики»
Россия


Максим Владимирович Шипицин
Национальный исследовательский университет ИТМО
Россия


Ярослав Иванович Рябцев
НИУ «Высшая школа экономики»
Россия


Андрей Николаевич Каменский
НИУ «Высшая школа экономики»
Россия


Список литературы

1. Y. Bugayenko, Elegant Objects. [Online]. Available: https://www.elegantobjects.org/.

2. Y. Bugayenko, Elegant Objects. California, USA: Amazon Kindle Direct Publishing, 2016, vol. 1, isbn: 9781519166913.

3. Y. Bugayenko, Elegant Objects. California, USA: Amazon Kindle Direct Publishing, 2017, vol. 2, isbn: 9781534908307.

4. Y. Bugayenko, EOLANG and ψ-calculus, 2021. arXiv: 2111.13384 [cs.PL].

5. H. Saleh, S. Zykov, and A. Legalov, «Eolang: Toward a New Java-Based Object-Oriented Programming Language», in Intelligent Decision Technologies. Smart Innovation, Systems and Technologies, vol. 238, 2021, pp. 355-363. doi: 10.1007/978-981-16-2765-1_30.

6. H. Saleh, J. Attakorah, S. Zykov, and A. Legalov, «Exploring the Eolang-Java Integration and Interoperability», in Procedia Computer Science. Proceedings of the 25th International Conference KES2021: Knowledge-Based and Intelligent Information & Engineering Systems, vol. 192, 2021, pp. 4560-4569. doi: 10.1016/j.procs.2021.09.234.

7. N. Kudasov and V. Sim, «Formalizing <p-calculus: a purely object-oriented calculus of decorated objects», in Proceedings of the ECOOP Workshop on Formal Techniques for Java-like Programs (FTfJP 2022), Berlin, Germany, 2022.

8. Polystat Project: Polyglot Static Analyzer for Object-Oriented Programming Languages. [Online]. Available: https://github.com/polystat.

9. Y. Bugayenko, Reducing Programs to Objects, 2021. arXiv: 2112.11988 [cs.PL].

10. Oberon 07 compiler. [Online]. Available: https://github.com/vladfolts/oberonjs.

11. Visual Interactive Simulations for Education and Science. [Online]. Available: https://visual.sfu-kras.ru/.

12. JSSpeccy 3 a ZX Spectrum emulator in the browser. [Online]. Available: http://jsspeccy.zxdemo.org/.

13. JSNES A JavaScript NES emulator. [Online]. Available: https://jsnes.org/.

14. JSLinux. [Online]. Available: https://bellard.org/jslinux/.

15. Experimental compiler of C to EO. [Online]. Available: https://github.com/polystat/c2eo.

16. Clang: a C language family frontend for LLVM. [Online]. Available: https://clang.llvm.org/.

17. Tutorial for building tools using LibTooling and LibASTMatchers. [Online]. Available: https://clang.llvm.org/docs/LibASTMatchersTutorial.html.


Рецензия

Для цитирования:


Легалов А.И., Бугаенко Е.Г., Чуйкин Н.К., Шипицин М.В., Рябцев Я.И., Каменский А.Н. Трансформация модели памяти языка программирования C в объектно-ориентированное представление на языке EO. Моделирование и анализ информационных систем. 2022;29(3):246-264. https://doi.org/10.18255/1818-1015-2022-3-246-264

For citation:


Legalov A.I., Bugayenko Ye.G., Chuykin N.K., Shipitsin M.V., Riabtsev Ya.I., Kamenskiy A.N. Transformation of C Programming Language Memory Model into Object-Oriented Representation of EO Language. Modeling and Analysis of Information Systems. 2022;29(3):246-264. (In Russ.) https://doi.org/10.18255/1818-1015-2022-3-246-264

Просмотров: 641


Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 1818-1015 (Print)
ISSN 2313-5417 (Online)