Middle-end Compilers

Middle-end compilers are used to optimize and analyze software source code. The range of compiler analysis and optimization has many functional differences. The scope of a middle-end compiler can range from a function to full software. ShuraCore development team specializes in the following areas of middle-end compilers:

Compiler Design Services

AsmJit, MIR, nj, NanoJIT, LLVM - MCJIT, Libraries, OpenMP, OpenACC, LLVM, C++, Rust, bison, flex, yacc, AntLR

Compiler Design Services

CPU, FPGA, GPU, TPU, TensorFlow, Caffe, PyTorch, LLVM, CUDA, OpenCL, WASM
Read more

ShuraCore specializes in implementing new and modern ports: GCC, GDB, GNU libraries, Binutils, LLDB, LLVM utilities, and libraries. In addition, we are engaged in the optimization and adaptation of existing compilers for any hardware platform. Finally, the ShuraCore team provides a full range of services for the development of compilers and interpreters.

We also work in the following areas: development of SDK, virtual machines, obfuscators, and code deobfuscators for our clients. We port debuggers and simulators to new hardware platforms, write high-speed optimizations. Our team also develops compilers for neural and tensor processors. ShuraCore creates developer tools based on the LLVM framework.

JIT and AOT

JIT (Just-in-time) compilers are used to improve the performance of interpreted programs. JIT compilation is about compiling a program into its code while the program

Front-end Compilers

The front-end compiler, analyzing the source code, creates an internal representation of the program – an intermediate representation (IR). The front-end consists of three phases:

Middle-end Compilers

Middle-end compilers are used to optimize and analyze software source code. The range of compiler analysis and optimization has many functional differences. The scope of

Back-end Compilers

The back-end compiler is responsible for specific optimization for the processor architecture and code generation for a particular architecture. Back-end design is not a trivial

MLIR

The MLIR (Multilevel Intermediate View) project is a new approach to building a reusable and extensible compiler infrastructure. MLIR aims to address software fragmentation, improve

Hardware Compilers

Hardware compilers, or synthesis tools, are compilers whose output is a description of a hardware configuration instead of a sequence of instructions. The output of

Virtual Machine

A virtual machine is a software or hardware system that emulates a particular platform’s hardware and executes programs for a target platform on a host

AST and bytecode interpreters

An interpreter is a translator whose task is to perform line-by-line analysis, process and execute the program’s source code or request. The interpreter has the

HLS Compilers

HLS (High-Level Synthesis) compilers are used to create digital devices using high-level languages. The main goal of HLS products is to simplify the FPGA and ASIC design

LLVM

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual

[contact-form-7 id="1477" title="shuracore_contact_form_en"]