Explore chapters and articles related to this topic
Software Design Considerations for Real-Time DSP Systems
Published in Gillian M. Davis, Noise Reduction in Speech Applications, 2018
Most optimizations on code are performed while the code is in the intermediate representation (IR) stage, that is, before the application is linked. Optimizations can also be performed in the back end of the compiler where the final machine adaptations are best performed (such as allocations to the actual register files of the particular machine).6
I
Published in Phillip A. Laplante, Dictionary of Computer Science, Engineering, and Technology, 2017
intermediate representation a representation of a program used within a compiler. A compiler may have many intermediate representations, such as a parse tree or tuples, a flow graph, sequences of abstract machine instructions, sequences of actual machine instructions, and the like, as appropriate for the stage in processing.
A rewriting system for convex optimization problems
Published in Journal of Control and Decision, 2018
Akshay Agrawal, Robin Verschueren, Steven Diamond, Stephen Boyd
Just as it is natural to decompose software compilers into three phases (Aho et al., 2006, §1.2), so it is with optimization rewriting systems (Figure 3). The first and third phases of both systems are analogous. In the first phase, a front end takes a human-readable specification of a programme and converts it to an intermediate representation; both compilers and rewriting systems often use abstract syntax trees as their intermediate representations (Aho et al., 2006, §2.5.1; Diamond & Boyd, 2016b; Udell et al., 2014). In the third phase, a back end takes an intermediate representation and translates it to a target-compatible form; targets for software compilers are processor architectures, while targets for optimization rewriting systems are numerical solvers. Our front end does not make use of reductions, as the problem of constructing a syntax tree is one of parsing, but our back ends most certainly do – in fact, our back ends are nothing more than sequences of reductions. In other words, each of the back ends supported by the rewriting system is a different canonicalization procedure.
Profile-guided optimisation for indirect branches in a binary translator
Published in Connection Science, 2022
Jyun-Siang Huang, Wuu Yang, Yi-Ping You
LLVM is an open-source compiler infrastructure conducted at the University of Illinois. It provides a collection of modular, reusable compiler and tool chain technologies (LLVM, 2020). Besides, LLVM includes a light-weight, low-level intermediate representation (IR) in Static Single Assignment (SSA) form to represent any program code, which allows efficient compiler transformations and analysis. These robust and powerful components available in LLVM, such as LLVM IR, advanced optimisations, code generation and just-in-time compilation (JIT), significantly reduces the development time of a binary translator.