Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 12

Bootstrapping

Prepared by
Manuel E. Bermdez, Ph.D.
Associate Professor
University of Florida

Programming Language Translators
Bootstrapping
The notion of implementing a language, by means of using
(part of) that languages own implementation.
Notation: T-diagram
Source
Target
Language
Written in
Bootstrapping
Diagram Purpose:

C
M
M
C
M
APPLICATION
Source Coincides
Object Coincides
Execution
APPLICATION
Bootstrapping
Example: We wish to have a Pascual compiler for a new
Processor, M.




How do we get it ?


Possibility #1: Write the compiler directly by hand, in machine
language? In assembly language ?
P
M
M
Bootstrapping
Possibility # 2: Write the Pascal compiler in some other language
L, that is already implemented on M. Then, compile the
compiler.








But, ... this is probably too much work.
L
M
M
L
M
P M P M
L Compiler
Bootstrapping
Possibility # 3: First, implement P, a subset of Pascal.
Then, write the desired compiler in P, and
compile it.

Step 1:







Now P is implemented.
L
M
M
L
M
P M P M
Bootstrapping
Step 2:







If P is choosen well, the P -> M compiler and the
Pascal -> M compiler (in P) together, are easier
to write than the Pascal -> M (in L) compiler.
Theoretically, this process can go on indefinitely,
bootstrapping up the level of the language. In
practice, however, new constructs interfere with
each other (and with old ones), until further
bootstrapping becomes ummanageable

P
M
M
P
M
Pascal M Pascal M
Write this
Bootstrapping
Example: Now, lets suppose we wish to port
Pascal to a new machine, M.

Possibility #1: Same as for M.

Possibility #2: Same as for M.

Possibility #3: Same as for M.


Bootstrapping
Possibility #4:
Step 1: Same as for M (implement P on M).

Step 2: Modify the Pascal compiler.


P
M
M
P
M
Pascal M Pascal M
By hand
Pascal M
P
Bootstrapping
Possibility #5: Dont use P! Use the implementation
of Pascal on M instead.
Step 1:
Pascal
M
M
Pascal M
Pascal M Pascal M
By hand
Pascal M
P
Bootstrapping
Step 2:








Note: Possibility #5 is called cross-compiling.

Pascal
M
M
Pascal M
Pascal M Pascal M
By hand
Bootstrapping
Many compilers undergo a long chain of
bootstrapping steps. For example, XPL (a dialect
of PL/I), was written first in Algol, then in XPL, and
ported to a B5500 and then an IBM 360. Eight
bootstraping steps were required.

You might also like