Langage et programmation

publicité
Langage et
programmation





Langage machine
Assembleur
Langage de haut niveau
Compilateur
Interprète
1
Un programme exécutable




Stocké dans un fichier
Chargé par le système
Lance son exécution
Contenu du fichier




Langage machine : binaire
Une suite d'instructions
Exemple en hexadécimal : A1 01 10 03 06 01 12 A3 01 14
Très difficile pour un humain
2
Langage assembleur



Notations symboliques textuelles représentant les
instructions du processeur
MOV AX, [0110]
copie le contenu de 0110h dans le registre AX
ADD AX, [0112]
ajouter le contenu de 0112h au registre AX
MOV [0114], AX
stocker AX à l'adresse 0114h
Stocké dans un fichier texte
Un programme (l'assembleur) traduit ce fichier texte pour
obtenir le binaire (en langage machine)
démo nasm
3
Langages de plus haut niveau

Des structures et méthodes de programmation en
assembleur sont systématiques
 Exemple de la boucle (68000)
CLR.W D0
CLR.W D1
LOOP CMP #10,D1
BEQ EXIT
ADDQ #1,D1
ADD D1,D0
BRA LOOP
EXIT
sum = 0
count = 0
while count is not 10
count = count + 1
sum = sum + count
end while
4
Langages de plus haut niveau

Les compilateurs de différents langages de
haut niveau génèrent de l'assembleur





C
C++
Fortran
Ada
...
démo gcc
5
Principes d'un compilateur
programme
source
Psource
ML
machine virtuelle
phase de
compilation
compilateur
Mphys
(ou autre)
machine physique
programme
objet
Pobj
Mphys
phase
d’exécution
exécution
actions
machine physique
6
Principe général d’exécution d’un
programme

Un programme Psource dans un langage (impératif) L
décrit une suite d’actions à exécuter par une
machine (virtuelle) ML
 Le programme est une suite d’instructions dont chacune
spécifie une action (passage d’un état initial à un état
final)
 La machine ML est capable d’exécuter (interpréter) le
programme Psource, c’est-à-dire de traduire en actions de
ML la suite d’instructions de Psource
7
Principe général d’exécution d’un
programme

Comment faire si on ne dispose pas de la machine
ML, mais d’une machine différente, Mphys ?
 Deux solutions de base
• a) Traduire le programme Psource dans un programme Pobj
“équivalent” pour la machine Mphys, et faire exécuter Pobj sur
Mphys (“équivalent” = qui a le même effet). C’est un schéma de
compilation (la traduction de Psource en Pobj est faite par un
compilateur)
• b) Construire (par programme) sur Mphys un simulateur de la
machine ML, et faire exécuter le programme original Psource sur
ce simulateur. C’est un schéma d’interprétation (le simulateur
de ML sur Mphys est un interprète)
8
Principe général d’exécution d’un
programme

Certains langages interprétés





Lisp
Shell unix
Python
Java
...
9
Compilation et interprétation :
comparaison
Compilation
 Efficacité
 le code engendré s’exécute
directement sur la machine
physique
 ce code peut être optimisé
 Mise au point
Interprétation
 Efficacité
 l’interprétation directe est
souvent longue
 facteur de x10 à x100 …
 Mise au point
 lien direct entre instruction et
exécution
 possibilités étendues
d’observation
 pas toujours facile de relier une
erreur d’exécution au texte
source
 Cycle de modification -
rééxécution
 Cycle de modification -
 toute modification du texte
source impose de refaire le cycle
complet (compilation, exécution)
rééxécution
 cycle très court (modifier et
réexécuter)
 Code portable
10
Schéma mixte : Java


La phase de compilation est indépendante de
la machine physique (bytecode)
Portage sur une nouvelle machine =
réécriture de la JVM sur cette machine
compilation
(javac)
programe source
(.java)

compilateur
Java
En réalité pour Java
 Compilation à la volée
 Processeurs Java
bytecodes
(.class)
exécution
(java)
Java Virtual
Machine (JVM)
machine physique
11
Téléchargement