×
Home Discussions Write at Opengenus IQ
×
  • DSA Cheatsheet
  • HOME
  • Track your progress
  • Deep Learning (FREE)
  • Join our Internship 🎓
  • RANDOM
  • One Liner

Compiler Design

Compiler Design is the study of designing efficient compilers that convert code in a High Level Programming Language to Machine level code. It is one of the most important subjects to design efficient code.

Compiler Design

Heap allocation in Compilers

Stack allocations are often restrictive and we may want resizable arrays which can survive function invocations and therefore programming languages allow use of heaps also called dynamic memory allocation. In this article we discuss heap allocation in compilers.

Erick Lumunge
Compiler Design

Stack allocation in Compilers

Stack allocation is a run-time storage management mechanism where by activation records are pushed and popped onto the stack as they begin and end. In this article we discuss stack allocation, activation trees, records, calling sequences and variable-length data on the stack.

Erick Lumunge
Compiler Design

Register Allocation in Compiler Design

Although scheduling and selection of registers during execution assume infinite number of registers, processors only have a limited number of registers, in this article we take a look how variables are mapped onto registers.

Erick Lumunge
Compiler Design

Function calls in Compiler Design

Functions are an important abstraction mechanism in many programming languages. In this article we discuss how functions are implemented in compilers.

Erick Lumunge
Compiler Design

Functional Programs in Compiler Design

Running a program with functional languages is seen as applying a function to the input which results in output. In this article we discuss functional programs from a compilers view point.

Erick Lumunge
Compiler Design

Intermediate representations (IR) in Compiler Design

Intermediate representations is the code representation used by the compiler internally to represent source code, In this article we have discussed 6 representations and some of their properties each an improvement of the previous.

Erick Lumunge
Compiler Design

Parallel programming models in Compiler Design

Parallel systems solve solves given problems as fast as possible by utilizing multiple processors. In this article we discuss five models for parallel programming and how they are expressed in parallel programming languages.

Erick Lumunge
Compiler Design

Type checking in Compiler Design

A compiler performs checks to ensure certain types of errors during programming are detected and reported, type checking will ensure the compiler follows the semantic and syntactic conversions of the source language.

Erick Lumunge
Compiler Design

Types of Network Switching in Computer Network

In this article, we have explored different types of Network Switching in Computer Network. These include types like Circuit Switching, Message Switching and others.

Harshita Singh Harshita Singh
Compiler Design

Assembly language: ARM Architecture

Assembly language enables programmers to write human readable code that is close to machine language hence providing full control over the tasks the computer performs. In this article we discuss the ARM processor architecture assembly language

Erick Lumunge
Compiler Design

Assembly language: X86 Architecture

Assembly language enables programmers to write human readable code that is close to machine language hence providing full control over the tasks the computer performs. In this article we discuss the x86 processor architecture assembly language.

Erick Lumunge
Compiler Design

Memory management: deallocation (Garbage Collection)

In this article we discuss garbage collection, a mechanism that is performed by the garbage collector which reclaims memory that it can prove is not used.

Erick Lumunge
Compiler Design

Memory management: allocation

Memory management is the process responsible for handing out blocks of memory to a program and reclaiming unused blocks. In this article we discuss the basics of memory allocation, optimizing memory allocation and applications in a compiler.

Erick Lumunge
Compiler Design

Lexical analyzer generator (lex)

Int this article we discuss the lex, a tool responsible for translating a sequence of regular expressions given as input into a C implementation corresponding to a finite state machine.

Erick Lumunge
Compiler Design

Language processing system

A combination of per-processors, compilers, assemblers, loader and linker work together to transform high level code in machine code for execution. In this article we discuss the function of each part of this system.

Erick Lumunge
Compiler Design

Semantic analysis in Compiler Design

During the 3rd phase of compiler design, the semantic analysis phase, the semantic analyzer uses information stored in a syntax tree and symbol table to check source code semantic consistency according to the provided language definition.

Erick Lumunge
Compiler Design

Design of a Lexical Analyzer

During the first phase of a compiler, a lexical analyzer is used to scan the input and identify tokens. We can either hand code a lexical analyzer or use a lex program to automatically generate one. In this article we discuss how the lexical analyzer is designed to perform its function.

Erick Lumunge
Compiler Design

Constant Folding and Constant Propagation in Compiler Design

In this article, we discuss two compiler optimizations (Constant Folding and Constant Propagation) which enable the compiler to produce high performance and efficient assembly code.

Erick Lumunge
Compiler Design

Syntax Analysis in Compiler Design

In this article, we discuss the second phase in compiler design where written code is evaluated for correctness.

Erick Lumunge
Compiler Design

Lazy code motion in Compiler Design

In this article, we will cover the basics of lazy code motion in compiler design. This is the idea of reducing redundant calculations or code size, saving resources or other optimizations.

Joe Gorst Joe Gorst
Compiler Design

Different phases of Compiler

In this article, we discuss the different phases of a Complier such as Lexical Analysis, Syntax Analysis, Intermediate Code Generation and others.

Erick Lumunge
Compiler Design

Lexical Analysis in Compiler Design

In this article, we discuss the first phase in compiler designing where the high level input program is converted into a sequence of tokens. This phase is known as Lexical Analysis in Compiler Design.

Erick Lumunge
Compiler Design

Constant Propagation in Compiler Design

In this article, we have explored Global Constant Propagation in Compiler Design in depth including compiler principles such as Global Code Analysis.

Joe Gorst Joe Gorst
Compiler Design

Code Generation in Compiler Design

In this article, we have explored Code Generation in Compiler Design in depth including challenges and key techniques like Instruction Selection, Register Allocation using Graph Coloring, Instruction Ordering and much more.

Joe Gorst Joe Gorst
Compiler Design

Parsing in Compiler Design

In this article, we discuss the different types of Parsing done by compilers such as Top-down parsing, Non-recursive predictive parsing and much more.

Erick Lumunge
OpenGenus IQ © 2025 All rights reserved â„¢
Contact - Email: team@opengenus.org
Primary Address: JR Shinjuku Miraina Tower, Tokyo, Shinjuku 160-0022, JP
Office #2: Commercial Complex D4, Delhi, Delhi 110017, IN
Top Posts LinkedIn Twitter
Android App
Apply for Internship