Analysis of the Algorithms of the Constituent Parts of the Compiler and its Optimization

封面

如何引用文章

全文:

开放存取 开放存取
受限制的访问 ##reader.subscriptionAccessGranted##
受限制的访问 订阅存取

详细

Program optimization arose as a response to the emergence of high-level programming languages, and includes special techniques and methods used in building compilers to produce sufficiently efficient object code. A combination of these techniques constituted in the past and are now an integral part of so-called optimizing compilers, the purpose of which is to create object code, saving computer resources such as processor time and memory. For modern supercomputers, the requirement to make proper use of hardware features is also added. In this context, issues related to compiler optimization deserve special attention, which may involve adapting the compiler to reduce runtime or object size, or both. In view of the above, the aim of the paper is to analyze the algorithms of the compiler constituents and outline ways to optimize it. The general technology of the compiler is briefly characterized. Particular attention is paid to the main functions of the algorithms, which are implemented at different stages of the compiler’s work. The possibilities of using machine learning to optimize compilers are also considered.

全文:

受限制的访问

作者简介

Ilya Kharin

National Research University “MEI”

编辑信件的主要联系方式.
Email: xarin.ilya@bk.ru

postgraduate student at the Department of Computing Machines, Systems and Networks of the National Research University “MEI”

俄罗斯联邦, Moscow

Marina Raskatova

National Research University “MEI”

Email: marvp@yandex.ru

Candidate of Engineering; associate professor at the Department of Computing Machines, Complexes and Systems of the National Research University “MEI”

俄罗斯联邦, Moscow

参考

  1. Aschwanden P. CcNav: Understanding compiler optimizations in binary code. IEEE Transactions on Visualization and Computer Graphics. 2021. Vol. 27. No. 2. Pp. 667–677.
  2. Chen Ge. CRAC: An automatic assistant compiler of checkpoint/restart for OpenCL program. Concurrency and Computation: Practice and Experience. 2022. Vol. 34. No. 8. Pp. 14–22.
  3. Huang Ya., Xie B. Fine-grained compiler identification with sequence-oriented neural modeling. IEEE Access: Practical Innovations, Open Solutions. 2021. Vol. 9. Pp. 49160–49175.
  4. Sampson A., Adit N. Performance left on the table: An eva-luation of compiler autovectorization for RISC-V. IEEE Micro. 2022. Vol. 42. No. 5. Pp. 41–48.
  5. Tang Yi., Zhou Zh.. Detecting compiler warning defects via diversity-guided program mutation. IEEE Transactions on Software Engineering. 2021. Vol. 48. No. 11. Pp. 4411–4432.
  6. Tewary M., Salcic Z. Compiler-assisted energy reduction of java real-time programs. Microprocessors and Microsys-tems. 2022. Vol. 89. No. 3. Pp. 78–83.
  7. Wang Zh. Machine learning in compiler optimization. Proceedings of the IEEE. 2018. Vol. 106. No. 11. Pp. 1879–1901.
  8. Baglii A.P., Krivosheev N.M., Steinberg B.Y. Automation of program paralleling with data transfer optimization. Scientific Service on the Internet. 2022. No. 24. Pp. 81–92. (In Rus.)
  9. Bolotnov A.M., Nurislamova E.A. The influence of GCC compiler optimization on program code efficiency in C++. Modern Science-Intensive Technologies. 2019. No. 12-2. Pp. 266–270. (In Rus.)
  10. Vyukova N.I., Galatenko V.A., Samborsky S.V. Means of dynamic program analysis in GCC and CLANG compilers. Programming. 2020. No. 4. Pp. 46–64. (In Rus.)
  11. Malyavko A.A. Error handling in the parser of EL compiler. Scientific Vestnik of Novosibirsk State Technical University. 2019. No. 2 (75). Pp. 37–48. (In Rus.)
  12. Sovetov P.N. Iterative approach using a compiler to synthesize and model a problem-oriented instruction set. International Journal of Open Information Technologies. 2019. Vol. 7. No. 10. Pp. 14–21. (In Rus.)
  13. Strelets A.I., Chernikova E.A., Malkov L.V., Dozhdev A.I. Structure of the compiler of a one-time program. International Journal of Humanities and Natural Sciences. 2019. No. 1-1. Pp. 146–147. (In Rus.)
  14. Tretiak A.V. The importance of indentation in the development of lexical analyzer compilers. Molodezh. Science. Innovations. 2021. Vol. 1. Pp. 306–309. (In Rus.)
  15. Steinberg B.J. Transformations of programs – fundamental basis for creating optimizing parallelizing compilers. Software Systems: Theory and Applications. 2021. Vol. 12. No. 1 (48). Pp. 21–113. (In Rus.)

补充文件

附件文件
动作
1. JATS XML
2. Fig. 1. Compiler phases [Aschwanden, 2021]

下载 (59KB)
3. Fig. 2. An example of how a lexical analyzer works

下载 (65KB)
4. Fig. 3. Parsing example

下载 (73KB)
5. Fig. 4. Matching optimized and source code [Wang, 2018]

下载 (56KB)
6. Fig. 5. Example of eliminating unnecessary instructions

下载 (59KB)
7. Fig. 6. A general view of supervised machine learning in compilers а – feature engineering; b – learning model; с – deployment

下载 (117KB)
8. Fig. 7. Compacting an OpenCL thread: a – the original OpenCL core; b – code conversion with compaction factor 2

下载 (96KB)
9. Fig. 8. Cycle of CompilerGym interaction

下载 (141KB)


##common.cookie##