Axiomatic Bootstrapping

A Guide for Compiler Hackers

Research output: Contribution to journalArticle

5 Citations (Scopus)

Abstract

If a compiler for language L is implemented in L, then it should be able to compile itself. But for systems used interactively commands are compiled and immediately executed, and these commands may invoke the compiler; so there is the question of how ever to cross-compile for another architecture. Also, where the compiler writes binary files of static type information that must then be read in by the bootstrapped interactive compiler, how can one ever change the format of digested type information in binary files? Here I attempt an axiomatic clarification of the bootstrapping technique, using Standard ML of New Jersey as a case study. This should be useful to implementors of any self-applicable interactive compiler with nontrivial object-file and runtime-system compatibility problems.

Original languageEnglish (US)
Pages (from-to)1699-1718
Number of pages20
JournalACM Transactions on Programming Languages and Systems (TOPLAS)
Volume16
Issue number6
DOIs
StatePublished - Jan 11 1994

All Science Journal Classification (ASJC) codes

  • Software
  • Computer Graphics and Computer-Aided Design

Cite this

@article{e32a5fc84bbd4b47adc54e5fee8ddc1a,
title = "Axiomatic Bootstrapping: A Guide for Compiler Hackers",
abstract = "If a compiler for language L is implemented in L, then it should be able to compile itself. But for systems used interactively commands are compiled and immediately executed, and these commands may invoke the compiler; so there is the question of how ever to cross-compile for another architecture. Also, where the compiler writes binary files of static type information that must then be read in by the bootstrapped interactive compiler, how can one ever change the format of digested type information in binary files? Here I attempt an axiomatic clarification of the bootstrapping technique, using Standard ML of New Jersey as a case study. This should be useful to implementors of any self-applicable interactive compiler with nontrivial object-file and runtime-system compatibility problems.",
author = "Appel, {Andrew Wilson}",
year = "1994",
month = "1",
day = "11",
doi = "https://doi.org/10.1145/197320.197336",
language = "English (US)",
volume = "16",
pages = "1699--1718",
journal = "ACM Transactions on Programming Languages and Systems",
issn = "0164-0925",
publisher = "Association for Computing Machinery (ACM)",
number = "6",

}

Axiomatic Bootstrapping : A Guide for Compiler Hackers. / Appel, Andrew Wilson.

In: ACM Transactions on Programming Languages and Systems (TOPLAS), Vol. 16, No. 6, 11.01.1994, p. 1699-1718.

Research output: Contribution to journalArticle

TY - JOUR

T1 - Axiomatic Bootstrapping

T2 - A Guide for Compiler Hackers

AU - Appel, Andrew Wilson

PY - 1994/1/11

Y1 - 1994/1/11

N2 - If a compiler for language L is implemented in L, then it should be able to compile itself. But for systems used interactively commands are compiled and immediately executed, and these commands may invoke the compiler; so there is the question of how ever to cross-compile for another architecture. Also, where the compiler writes binary files of static type information that must then be read in by the bootstrapped interactive compiler, how can one ever change the format of digested type information in binary files? Here I attempt an axiomatic clarification of the bootstrapping technique, using Standard ML of New Jersey as a case study. This should be useful to implementors of any self-applicable interactive compiler with nontrivial object-file and runtime-system compatibility problems.

AB - If a compiler for language L is implemented in L, then it should be able to compile itself. But for systems used interactively commands are compiled and immediately executed, and these commands may invoke the compiler; so there is the question of how ever to cross-compile for another architecture. Also, where the compiler writes binary files of static type information that must then be read in by the bootstrapped interactive compiler, how can one ever change the format of digested type information in binary files? Here I attempt an axiomatic clarification of the bootstrapping technique, using Standard ML of New Jersey as a case study. This should be useful to implementors of any self-applicable interactive compiler with nontrivial object-file and runtime-system compatibility problems.

UR - http://www.scopus.com/inward/record.url?scp=0028547149&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=0028547149&partnerID=8YFLogxK

U2 - https://doi.org/10.1145/197320.197336

DO - https://doi.org/10.1145/197320.197336

M3 - Article

VL - 16

SP - 1699

EP - 1718

JO - ACM Transactions on Programming Languages and Systems

JF - ACM Transactions on Programming Languages and Systems

SN - 0164-0925

IS - 6

ER -