présentation GCC

Portage de GCC sur processeur Libre Simple-CPU

Par Wilfrid et Michel

Introduction:

L'évolution des langages de programmations nous ont ammené petit à petit à nous éloigner des contraintes du matériel, pour nous consacrer à l'écriture de code dans des languages dit de plus haut niveau. Ces niveaux d'abstraction pourrait etre organisé comme suit: en bas de l'échelle le language assembleur propre à chaque machine, juste au dessus le langauge C, puis C++, etc... jusqu'au language de très haut niveau que sont l'UML. Hélas écrire un programme fonctionnant sur un processeur à partir de sa description UML est encore impossible. Mais on tentera de plus en plus de programmer dans un language abstrait vis à vis du matériel pour faciliter le portage de code entre différentes plateformes et par soucis d'économie de temps de programmation.

Le projet Simple CPU permet de mettre à la disposition de la communnauté du libre un ensemble de composants logiciels et matériels afin de mieux comprendre le fonctionnement d'un système informatique. Une fois le core écrit, et le jeu d'instruction définit, il fallait munir le projet de composants essentiels à sa réalisation, le compilateur C en est un.

Ce document d'introduction présente donc le déroulement du projet vis à vis de la réalisation du portage d'un compilateur issu également du monde libre, GCC.

Fonctionnement d'un compilateur:

Compiler-Architecture Le but d'un compilateur est, à partir d'un fichier de code source, de réaliser un fichier de code cible, en général dans un language interprétable directement par le processeur cible. Pour se faire il passe par plusieur grandes étapes.

On pourrait comparrer ses 3 étapes à l'étude des lettres (analyse lexicale) des mots (syntaxique) et des phrases (sémantique) dans un texte (programme source). Ces étapes placés en tout début de compilation permettent la génération de code intermédiaire et interne au compilateur, s'affranchissant ainsi de toute contrainte tant matérielle que formelle (langage générique). On regroupera ainsi les précédentes étapes sous le nom de “front-end” du compilateur du fait que tout ceci se passe très proche du language considéré, mais encore très loin du matériel cible.

Une fois ce code intermédiaire propre au compilateur généré il va etre possible de lui appliquer plusieurs étape d'optimisation et de traduction dans le langage destination. Ces étapes de traduction pour la cible s'appellent “back-end” et sont évidemment très proche du processeur visé dont les caractéristiques doivent etre connu, le code sera ainsi optimisé pour celui-ci.

Présentation de GCC
Simple-Cpu The Simple CPU project The Simple CPU project
Un projet de disk91
Small CPU project