99-06-09
5
page 17
IFT1227 – Architecture des ordinateurs 1 – JP DAVID & EM Aboulhamid
Exemple : de la machine à calculer
•Pascal dit « Je veux une machine capable de réaliser des
multiplications »
o« Quelle est la taille des nombres à multiplier ? »
9Réponse : « 8 bits »
o« Comment entre-t-on les nombres ? »
9Réponse : « au clavier, en base 10 »
o« Comment retourne-t-on les résultats ? »
9Réponse : « à l’écran, en base 10 »
oQue faut-il faire en cas d’erreur d’entrée ?
9Afficher un message d’erreur et arrêter tout
oQue faut-il faire en cas de dépassement ?
9Afficher un message d’erreur et arrêter tout
oDoit-on traiter aussi les nombres négatifs ?
9Non
page 18
IFT1227 – Architecture des ordinateurs 1 – JP DAVID & EM Aboulhamid
Exemple : de la machine à calculer
•Le programmeur d’application écrit un code proche
de ceci dans un langage de haut niveau :
int a,b,c;
while (true) {
scanf(«%i», &a);
scanf(«%i», &b);
if ((a<0) | (a>255)) {printf(« Dépassement »); return -1;}
if ((b<0) | (b>255)) {printf(« Dépassement »); return -1;}
c=a*b;
printf(« Le produit de %i par %i est : %i», a, b, c »);
}
page 19
IFT1227 – Architecture des ordinateurs 1 – JP DAVID & EM Aboulhamid
Exemple : de la machine à calculer
•Le compilateur traduit le code comme ceci :
int a,b,c; Réserve de l’espace en mémoire
while (true) { Traduit en langage d’assemblage
scanf(«%i», &a); Appel système
scanf(«%i», &b); Appel système
if ((a<0) | (a>255)) …Traduit en langage d’assemblage
if ((b<0) | (b>255)) …Traduit en langage d’assemblage
c=a*b; Traduit en langage d’assemblage
printf(« Le produit … Appel système
}
page 20
IFT1227 – Architecture des ordinateurs 1 – JP DAVID & EM Aboulhamid
Exemple : de la machine à calculer
•Dès que l’on quitte le haut niveau, les étapes
suivantes doivent tenir compte du type des
couches inférieures.
•Dans notre exemple, nous travaillons avec
une machine virtuelle LMC sur laquelle
tourne un système d’exploitation imaginaire.