Bootstrapping is a process in which simple language is used to translate more complicated program which in turn may handle for more complicated program. This complicated program can further handle even more complicated program and so on.
Writing a compiler for any high level language is a complicated process. It takes lot of time to write a compiler from scratch. Hence simple language is used to generate target code in some stages. to clearly understand the Bootstrapping technique consider a following scenario.
Suppose we want to write a cross compiler for new language X. The implementation language of this compiler is say Y and the target code being generated is in language Z. That is, we create XYZ. Now if existing compiler Y runs on machine M and generates code for M then it is denoted as YMM. Now if we run XYZ using YMM then we get a compiler XMZ. That means a compiler for source language X that generates a target code in language Z and which runs on machine M.
Following diagram illustrates the above scenario.
We can create compiler of many different forms. Now we will generate.
Compiler which takes C language and generates an assembly language as an output with the availability of a machine of assembly language.
- Step-1: First we write a compiler for a small of C in assembly language.
- Step-2: Then using with small subset of C i.e. C0, for the source language c the compiler is written.
- Step-3: Finally we compile the second compiler. using compiler 1 the compiler 2 is compiled.
- Step-4: Thus we get a compiler written in ASM which compiles C and generates code in ASM.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Introduction of Compiler Design
- Why FIRST and FOLLOW in Compiler Design?
- Semantic Analysis in Compiler Design
- Runtime Environments in Compiler Design
- Peephole Optimization in Compiler Design
- Types of Parsers in Compiler Design
- Basic Blocks in Compiler Design
- Code Optimization in Compiler Design
- Error Handling in Compiler Design
- Input Buffering in Compiler Design
- Loop Optimization in Compiler Design
- Labeling Algorithm in Compiler Design
- Transition diagram for Identifiers in Compiler Design
- Introduction of Object Code in Compiler Design
- Introduction to Syntax Analysis in Compiler Design
- Syntax Directed Translation in Compiler Design
- Intermediate Code Generation in Compiler Design
- Compiler Design | Detection of a Loop in Three Address Code
- Difference between Native compiler and Cross compiler
- Compiler Theory | Set 1
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.