Article | REF: H3168 V2

Compiler

Authors: Henri-Pierre Charles, Christian Fabre

Publication date: August 10, 2017

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

Already subscribed? Log in!


Overview

Français

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