160 likes | 430 Views
Bootstrapping. Programming Language Translators. Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida. “Bootstrapping”. The notion of implementing a language, by means of using (part of) that language’s own implementation. Notation: T-diagram. Source. Target.
E N D
Bootstrapping Programming Language Translators Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida
“Bootstrapping” • The notion of implementing a language, by means of using (part of) that language’s own implementation. • Notation: T-diagram Source Target Language Written in
Bootstrapping Diagram Purpose: APPLICATION APPLICATION C C M M M Object Coincides Source Coincides Execution
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. P M P M L L M M 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. P M P M L L M M 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 Pascal M Pascal M P P M M Write this M
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. Pascal M By hand P Pascal M’ Pascal M’ P P M’ M’ M’
Bootstrapping Possibility #5: Don’t use P! Use the implementation of Pascal on M instead. Step 1: Pascal M By hand P Pascal M’ Pascal M’ Pascal Pascal M M M
Bootstrapping Step 2: Note: Possibility #5 is called “cross-compiling”. Pascal M’ Pascal M’ Pascal Pascal M’ M’ By hand M
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.