Universal C/C++ Compiler

Our Universal C/C++ Compiler (UCC) dramatically accelerates development of high performance compilers for any hardware platform. It is our know-how, which has been improved for more than 15 years.

Adaptation to new hardware platform takes not more than 2 months as it means only customizing rules of code generation, while source code is not changed. UCC and UCC-based toolchains have been successfully used in a vast number of commercial projects for different target platforms.

Operating principles

In the first compilation stage program is transformed into high-level tree representation. The goals are the lexical and synthetic analysis of the source code and its abstraction from a certain programming language.

At the next stage, the initial optimization of the internal representation is carried out. Used algorithms such as taking of subexpressions, constants propagation, cycles simplification, combination and targeted optimization are target platform independent. However, some high-level optimizations may indirectly depend on the target platform, for such cases feedback channel for code generation model was developed.

Further the internal representation tree undergoes code generation phase. At this stage, rules of the code generation model are applied, and the tree is transformed into platform-dependent view. Afterwards, only instructions and attributes compatible with the target processor remain in the tree nodes. The result undergoes then additional mid-level optimizations and variables allocation to register/memory depending on model settings. Next internal representation tree is transformed into assembler instructions set of the target platform; this set undergoes a series of low-level optimizations and target platform-specific algorithm tests.

Finally, the assembly instructions set is transformed into an assembler file, which is transmitted to the target assembler.

Architecture

The main idea of the UCC compiler is to place all the functionality on which the generated code depends, in a separate module. This module can be flexibly configured by describing code generation rules in a specific language.

Therefore, the notion of high-level internal program representation is introduced. It consists of nodes: commands and attributes of the "pseudo processor". The processor contains a universal set of commands and an infinite number of registers and memory.

UCC Compiler architecture

 

Development Process

UCC Compiler development process

Get In Touch

  • Gelsingforsskaya 3, corpus 11D
    194044, St. Petersburg, Russia
  • +79522068225
  • This email address is being protected from spambots. You need JavaScript enabled to view it.