Article | REF: H3168 V2

Compiler

Authors: Henri-Pierre Charles, Christian Fabre

Publication date: August 10, 2017 | Lire en français

You do not have access to this resource.
Click here to request your free trial access!

Already subscribed? Log in!

Automatically translated using artificial intelligence technology (Note that only the original version is binding) > find out more.

    A  |  A

    Overview

    ABSTRACT

    A compiler is a software program that transforms a source program (written in a programming language) into another target programming language, most often the processor programming language that permits its execution. This article shows compiler principles, the technologies used and other applications of compilation technologies.

    Read this article from a comprehensive knowledge base, updated and supplemented with articles reviewed by scientific committees.

    Read the article

    AUTHORS

     INTRODUCTION

    History of compilation

    Computer architecture and computer applications have always been in a state of flux. Since compilation is at the frontier of these two rapidly evolving worlds, it's only natural that it should have evolved in tandem.

    Broadly speaking, the history of compilation can be divided into four main periods:

    1950-1970: During this period, the main notions of hardware architecture were in place, but it was difficult to program computers, which were bulky machines.

    Regular expressions (1956) using finite automata theory and parsers (1965) enabled the creation of tools for programming languages and their compilation. COBOL and FORTRAN (1957) were the first compiled computer languages.

    We can say that this period corresponds to the creation of the theoretical and practical foundations of compilation.

    1970-1990: It was during this period that consumer electronics were popularized. The Intel 4004 processor (1971) was the first consumer processor, while the Intel 386 processor was the basis for the popularity of PCs (Personal Computers). The MIPS processor was created (1984), introducing the notion of RISC architecture. It was also during this period that Gordon Moore re-evaluated his famous law stating that "the number of microprocessor transistors on a silicon chip doubles every two years".

    It was during this period that the C (1972) and C++ (1983) languages were created, as well as the first open source compiler, GCC 1.0. This compiler was a huge success and was adopted by many computer manufacturers.

    The objectives of program compilation were: "to provide a binary program semantically equivalent to the source program". Optimization was still in its infancy.

    1990-2000: This period was rich in new architectural concepts: pipelines, superscalar processors, cache memory, parallel machines.

    It was during this period that the Java language was created (1995) and that on-the-fly compilation became widely used (1999).

    The objectives of program compilation have become: "to provide a semantically equivalent binary program that makes the best use of architectural concepts". Optimization phases became increasingly complex. The first parallel programming tools were created, such as MPI for inter-processor message passing (1991) or OpenMP for automatic parallelization (1997).

    2000-2017: This last period saw an explosion in the complexity of architectures: multicore processors, graphics co-processors (GPUs). The CUDA (2007) and OpenCL (2009) languages appeared during this period.

    ...

    You do not have access to this resource.

    Exclusive to subscribers. 97% yet to be discovered!

    You do not have access to this resource.
    Click here to request your free trial access!

    Already subscribed? Log in!


    The Ultimate Scientific and Technical Reference

    A Comprehensive Knowledge Base, with over 1,200 authors and 100 scientific advisors
    + More than 10,000 articles and 1,000 how-to sheets, over 800 new or updated articles every year
    From design to prototyping, right through to industrialization, the reference for securing the development of your industrial projects

    KEYWORDS

    instruction level parallelism   |   processor   |   programming language   |   compiler   |   computer architecture   |   resource allocation   |   lexical analysis   |   syntactic analysis   |   program optimization


    This article is included in

    Software technologies and System architectures

    This offer includes:

    Knowledge Base

    Updated and enriched with articles validated by our scientific committees

    Services

    A set of exclusive tools to complement the resources

    Practical Path

    Operational and didactic, to guarantee the acquisition of transversal skills

    Doc & Quiz

    Interactive articles with quizzes, for constructive reading

    Subscribe now!

    Ongoing reading
    Compiler