BTS SIO - Notes de cours

Accueil > Première année > SI4-SI6 > Compilation

Compilation

jeudi 21 novembre 2013, par

Traduction en langage du processeur

La compilation d’un programme informatique est le fait de traduire le code source, destiné à être compréhensible aux humains, vers un format compréhensible au processeur de l’ordinateur.

Le résultat de la compilation est directement exécutable en tant que programme autonome.

Il va dépendre de plusieurs paramètres.

Le système d’exploitation

Le système d’exploitation des ordinateurs offre des fonctionnalités qu’un logiciel utilise pour accéder au matériel. Ces fonctionnalités sont différentes entre les différents systèmes, et la compilation en tient compte : un exécutable dépends du système pour lequel il est créé. Pourtant il est possible d’exécuter un programme d’un système donné sur un autre, si on connaît suffisamment bien les fonctionnalités fournies. Par exemple :

  • Les exécutables prévus pour Linux sont utilisables sur les systèmes BSD. Linux documentant bien sa manière de faire des exécutables, il a été possible aux développeurs de BSD de créer des fonctionnalités équivalentes dans leur système.
  • Certains exécutables Windows sont exécutables dans Linux en utilisant un "émulateur", Wine. Ce dernier est programmé par rétro-ingénierie, c’est à dire en déduisant les fonctionnalités de Windows à partir de l’observation de leur fonctionnement. C’est très imparfait, mais il n’est pas possible de faire autrement.

Le processeur

En fin de compte, le processeur sur lequel fonctionne le programme est très important, car les fonctionnalités de base sont des instructions que ce dernier comprend. C’est pourquoi les systèmes d’exploitation ont plusieurs versions, et les programmes parfois aussi.
Par exemple :

  • Linux peut être exécuté sur beaucoup de familles de processeurs. Mais certains programmes ne sont pas utilisables sur tous les processeurs.
  • Intel fourni deux familles de processeurs proches l’une de l’autre : i32 et ia64. Un logiciel prévu pour fonctionner sur IA64 ne marche pas sur I32 et vice versa. Il est possible d’interpréter un logiciel I32 dans Windows 64 en faisant une traduction à la volée de ses fonctionnalités.

Le compilateur

Le compilateur produit un code exécutable pour un système et un processeur donné. En général, il produit pour le système et le processeur sur lequel il s’éxécute. C’est pourquoi il existe toujours plusieurs versions d’un compilateur.

Un compilateur utilise beaucoup de temps de processeur, car il fait de nombreux calculs.

Cross compilation

Parfois, on demande à un compilateur de produire du code pour une autre machine que celle sur laquelle il s’exécute. On appelle cela de la cross-compilation. C’est surtout utilisé pour produire des logiciel pour du matériel "embarqué", qui a très peu de puissance de calcul.

Freepascal

Pour commencer, nous allons utiliser Freepascal. Aller le télécharger sur http://freepascal.org/download.var vous verrez qu’il y a un grand nombre de versions dépendant du système et du processeur. Choisissez le bon.

Le pascal est un langage de programmation intéressant pédagogiquement. Nous allons commencer avec freepascal, puis lazarus. Ensuite nous utiliserons java et eclipse.

Edition de liens

Afin d’utiliser les fonctionnalités du système d’exploitation, le compilateur fait une édition de liens. Dans un premier temps, il produit un fichier "objet" avec une extension .o, ensuite il regarde quelles fonctionnalités systèmes sont utilisées et il relie ces fonctionnalités au fichier objet pour produire une exécutable.

Il y a deux manière de faire : l’édition de lien statique incorpore les fonctionnalités dans le code exécutable. L’édition de lien dynamique, beaucoup plus utilisée, renvoie à des fichiers externes : ce les .dll sous windows, ou les fichiers .so sous Linux.

Exercice

Faire un programme qui demande deux nombres a et b et calcule leur produit, leur division si possible, et la factorielle de a. Pourquoi y a-t-il des erreurs sur le calcul de la factorielle, à partir de a=8 ?

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.