Le langage de la machine

Documents pareils
ASR1 TD7 : Un microprocesseur RISC 16 bits

Rappels d architecture

Conception de circuits numériques et architecture des ordinateurs

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Microprocesseur + Logiciel

Programmation assembleur : aperçu

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Introduction à l algorithmique et à la programmation (Info 2)

Compilation (INF 564)


Licence Sciences et Technologies Examen janvier 2010

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Représentation des Nombres

Informatique Générale

Architecture des ordinateurs

Exécution des instructions machine

Jeu d instructions NIOS II

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

La mémoire. Un ordinateur. L'octet. Le bit

Algorithme. Table des matières

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Glossaire des nombres

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

IV- Comment fonctionne un ordinateur?

Programmation C. Apprendre à développer des programmes simples dans le langage C

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Conventions d écriture et outils de mise au point

GPA770 Microélectronique appliquée Exercices série A

CM2 L architecture MIPS32

Logiciel de Base. I. Représentation des nombres

Conversion d un entier. Méthode par soustraction

STAGE IREM 0- Premiers pas en Python

Représentation d un entier en base b

CONFIGURATION DE L AUTOMATE SIEMENS

Structure d un programme

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

ELP 304 : Électronique Numérique. Cours 1 Introduction

V- Manipulations de nombres en binaire

Cours Informatique 1. Monsieur SADOUNI Salheddine

Corrigé des TD 1 à 5

Rappels sur les suites - Algorithme

Architecture matérielle des systèmes informatiques

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Architecture des ordinateurs Introduction à l informatique

UE Programmation Impérative Licence 2ème Année

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Les opérations binaires

IFT1215 Introduction aux systèmes informatiques

TP 1. Prise en main du langage Python

Feuille TD n 1 Exercices d algorithmique éléments de correction

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Chapitre 10 Arithmétique réelle

IFT2880 Organisation des ordinateurs et systèmes

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Codage d information. Codage d information : -Définition-

Architecture de l ordinateur

Algorithmes récursifs

Bases de programmation. Cours 5. Structurer les données

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours 1 : La compilation

Une version javascript sera disponible directement dans le cours prochainement.

Cours d Informatique

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

Concept de machine virtuelle

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Fonctionnement et performance des processeurs

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

Plan du cours. Historique du langage Nouveautés de Java 7

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007

Algorithmique et programmation : les bases (VBA) Corrigé

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

Présentation du cours

Introduction à l algorithmique et à la programmation M1102 CM n 3

Machines virtuelles Cours 1 : Introduction

La Clé informatique. Formation Excel XP Aide-mémoire

Le codage informatique

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Cours 1 : Qu est-ce que la programmation?

Architecture des Ordinateurs Première partie. Licence d Informatique - IUP Miage - FIIFO

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Architecture des ordinateurs

QUESTION 1 {2 points}

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Définitions. Numéro à préciser. (Durée : )

Chapitre 4 : Les mémoires

Date : Note /20 : EVALUATION Nom : Prénom : Classe : Traitement sur mots

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Transcription:

Le langage de la machine ASR2 - Système Semestre 2, année 2012-2013 Département informatique IUT Bordeaux 1 Mars 2013 1 / 70

Première partie Structure d un ordinateur 2 / 70

Contenu 1 Élements 2 Interaction des élements 3 Le premier ordinateur 4 De nos jours 3 / 70

Structure d un ordinateur Un ordinateur comporte un processeur, de la mémoire, des dispositifs d entrée-sortie. 4 / 70

Rôle des éléments Ces éléments interagissent : la mémoire contient les données, le processeur exécute les instructions prises dans la mémoire ; ces instructions effectuent des calculs, prennent et placent des données en mémoire, les envoient ou les lisent sur les dispositifs d entrée-sortie les périphériques assurent le stockage des données à long terme la communication avec l environnement 5 / 70

SSEM : le premier ordinateur Small-Scale Experimental Machine, Université de Manchester, 1948 Première machine à architecture Von Neumann : instructions et données enregistrés en mémoire. 6 / 70

SSEM, un calculateur expérimental banc de test pour une nouvelle technologie de mémoire : les tubes de Wilkins-Kilburn un tube : 32 mots de 32 bits très limité 330 diodes, 250 pentodes, un accumulateur 32 bits mémoire de 32 mots 7 opérations, pas d entrées-sorties 7 / 70

SSEM : démonstration concluante Démonstration du 21 juin 1948 programme de 17 instructions, 3,5 millions d instruction en 52 minutes, soit 1,1 KIPS Fiabilité des tubes de Williams-Kilburn des heures / millions d opérations sans erreur! employés dans le premier ordinateur d IBM (1952) IBM 701 : 32 tubes de Williams ensuite remplacés par les mémoires à tores de ferrite et les mémoires à semi-conducteurs (fin années 70) Validation du concept d ordinateur : calculateur à programme enregistré en mémoire vive Début d une série d ordinateurs britanniques : Mark 1, Ferranti Mark 1 (1951, premier ordinateur commercialisé), LEO I, II, et III (fabriqués par Lyons), etc. 8 / 70

De nos jours Processeurs beaucoup plus complexes : plusieurs coeurs, des lignes de caches, des coprocesseurs etc. Évolution du nombre de transistors par processeur année transistors processeur 1971 2,300 Intel 4004, premier microprocesseur 1978 29,000 Intel 8086, premiers PC 1979 68,000 Motorola 68000 1989 1,180,000 Intel 80486 1993 3,100,000 Pentium 1997 9,500,000 Pentium III 2000 42,000,000 Pentium 4 2012 1,400,000,000 Quad-Core + GPU Core i7 2012 5,000,000,000 62-Core Xeon Phi Source : http://en.wikipedia.org/wiki/transistor_count 9 / 70

Deuxième partie Structure d un processeur 10 / 70

Contenu 5 Principes 6 Quelques exemples 7 Modèle du programmeur 11 / 70

Principes de base d un processeur Dans un processeur il y a des registres : circuits capables de mémoriser quelques bits d information des circuits combinatoires (additionneur, comparateurs,...), de la logique séquentielle pour gérer le déroulement des différentes phases des instructions 12 / 70

Illustration : architecture du INTEL 4004 13 / 70

Illustration : Architecture ARM, Cortex M3 14 / 70

le Modèle du programmeur Le programmeur n a pas à connaitre tous ces détails, seulement le jeu d instructions qu il peut employer les différents types d instruction leur effet sur les registres accessibles les registres auquel il a accès le compteur de programme (adresse de la prochaine instruction) les registres de travail, les indicateurs de condition... 15 / 70

Troisième partie Un processeur fictif 16 / 70

Contenu 8 Exemple pédagogique 9 Jeu d instructions 10 Les classes d instructions 11 Programmes Utilisation de mnémoniques Réservation de données Utilisation d étiquettes Conventions d écriture des sources 17 / 70

Un processeur fictif Eléments machine à mots de 16 bits, adresses sur 12 bits 1 accumulateur 16 bits compteur ordinal 12 bits jeu de 13 instructions sur 16 bits arithmétiques : addition et soustraction 16 bits, complément à 2. chargement et rangement directs et indirects saut conditionnel et inconditionnel, appel de sous-programme... 18 / 70

Format des instructions 1 instruction = 16 bits. Format unique : code opération sur 4 bits (poids forts) opérande sur 12 bits code opérande 4 bits 12 bits - - - - - - - - - - - - - - - - 19 / 70

exemple Le mot 0011 0000 0110 0100 (Ox3064) peut représenter une instruction de code 0011 = 0x3 d opérande 0000 0110 0100 = 0x064 (100 en décimal) qui signifie ranger le contenu de l accumulateur dans le mot mémoire d adresse 100 20 / 70

Instruction ou donnée? Le mot 0x3064 représente : une instruction (code 3, opérande 100) le nombre +12388 en binaire complément à 2 La signification d un mot en mémoire dépend de ce qu on en fait. 21 / 70

Le jeu d instructions Mnémonique Description Action Cp = 0 loadi imm12 chargement immediat Acc = ext(imm12) Cp + 1 1 load adr12 chargement direct Acc = M[adr12] Cp + 1 2 loadx adr12 chargement indirect Acc = M[M[adr12]] Cp + 1 3 store adr12 rangement direct M[adr12] = Acc Cp + 1 4 storex adr12 rangement indirect M[M[adr12]] = Acc Cp + 1 5 add adr12 addition Acc += M[adr12] Cp + 1 6 sub adr12 soustraction Acc -= M[adr12] Cp + 1 7 jmp adr12 saut inconditionnel adr12 8 jneg adr12 saut si négatif si Acc < 0 alors adr12 sinon Cp+1 9 jzero adr12 saut si zero si Acc==0 alors adr12 sinon Cp+1 A jmpx adr12 saut indirect M[adr12] B call adr12 appel M[adr12] = Cp+1 M[adr12]+1 C halt 0 arrêt 22 / 70

Les classes d instructions 4 classes : Transferts pour charger une valeur dans l accumulateur ou placer le contenu de l accumulateur en mémoire (load, store). Arithmétique addition et soustraction (add, sub) Branchements pour continuer à une adresse donnéee (jump, call) Divers halt 23 / 70

Programmes Charger un programme, c est remplir la mémoire avec un contenu : instructions et données. Exemple de programme) 0009 5005 6006 3007 C000 0005 0003 0000 l exécution commence (par convention) au premier mot : le premier mot contient 0009, qui correspond à loadi 9 (charger la valeur immédiate 9 dans l accumulateur) le second mot contient 5005, soit add 5 (ajouter le mot d adresse 5 à l accumulateur)... 24 / 70

Utilisation de mnémoniques Exemple de programme 0009 5005 6006 3007 C000 0005 0003 0000 Traduisons les 5 premiers mots en utilisant les codes mnémoniques des opérations adresse contenu mnémonique opérande 0 0009 loadi 9 1 5005 add 5 2 6006 sub 6 3 3007 store 7 4 C000 halt 0 En clair, ce programme charge la valeur 9 dans l accumulateur, lui ajoute le contenu du mot d adresse 5, retranche celui de l adresse 6 et range le résultat à l adresse 7. Et il s arrête. 25 / 70

Réservation de mots Exemple de programme 0009 5005 6006 3007 C000 0005 0003 0000 aux adresses 5, 6, et 7 on trouve les valeurs 5, 3 et 0, adresse contenu directive opérande 5 0005 word 5 6 0003 word 3 7 0000 word 0 La directive word indique la réservation d un mot mémoire, avec sa valeur initiale. 26 / 70

Étiquettes symboliques Il est commode de désigner les adresses par des noms symboliques, les étiquettes : l o a d 9 add 5 sub 6 s t o r e 7 h a l t 0 word 5 word 3 word 0 l o a d 9 add p r e m i e r sub second s t o r e r e s u l t a t h a l t 0 p r e m i e r word 5 second word 3 r e s u l t a t word 0 27 / 70

Assemblage Le programmeur écrit ses programmes en langage d assemblage. Le code source comporte des instructions des directives de réservation des commentaires qui font apparaître des codes mnémoniques des étiquettes La traduction de ce code source est faite par un assembleur. 28 / 70

Conventions d écriture Sur chaque ligne l étiquette est facultative. En colonne 1 si elle est présente. Si elle est absente, la ligne commence un espace (au moins) debut loadi 100 # étiquette et instruction sub truc # instruction sans étiquette si l étiquette est seule, elle se rapporte au prochain mot fin halt 0 # étiquette seule 29 / 70

Quatrième partie Programmation 30 / 70

Contenu 12 Codage des expressions et affectations Rangements, arithmétique,... Prise en main du simulateur Exercices Bilan d étape 13 Décisions et boucles Saut conditionnels et inconditionnels Utilisation Si-alors-sinon 14 Faire des boucles Boucles et organigrammes Exercices Bilan d étape 15 Tableaux et pointeurs Adressage indirect Exemple Exercices Bilan d étape 16 Sous-programmes Appel et retour Passage de paramètres Exercices 17 Conclusion 31 / 70

Instructions de base Pour commencer : chargement immédiat loadi valeur chargement direct load adresse rangement direct store adresse addition directe add adresse soustraction directe sub adresse arrêt halt 0 Attention ne pas confondre les opérandes immédiats et directs loadi 100 charge la constante 100 dans l accumulateur load 100 copie le mot d adresse 100 dans l accumulateur 32 / 70

Prise en main du simulateur firefox ~/Bibliotheque/ASR2-systeme/WebSim16/index.html Exemple : traduction de l affectation A = B l o a d B s t o r e A h a l t 0 A word 11 B word 22 33 / 70

Utilisation 1/4 On tape le programme dans l éditeur et on lance l assembleur... 34 / 70

Utilisation 2/4 La fenêtre Listing montre un compte-rendu de la traduction. On charge le code binaire en mémoire 35 / 70

Utilisation 3/4 Le programme est chargé dans la denètres Simulator On peut lancer l exécution (run) 36 / 70

Utilisation 4/4 Le programme se déroule pas à pas Et on peut suivre l évolution du contenu des registres et de la mémoire. 37 / 70

Exercices À vous de jouer : traduisez les affectations A = A + B A = A + 1 A = B + C - 1 échange de deux variables? 38 / 70

Bilan d étape Bravo! vous maîtrisez déjà la moitié (presque) des instructions vous savez les employer pour programmer des expressions arithmétiques de affectations 39 / 70

Sauts conditionnels et inconditionnel Les instructions de saut saut inconditionnel jmp adresse saut si accumulateur nul jzero adress saut si accumulateur négatif jneg adress qui consultent l accumulateur et agissent sur le registre compteur de programme (Cp). Pour les deux sauts conditionnels, le déroulement se poursuit à l adresse indiquée si la condition est vraie (Cp = adresse), en séquence sinon (Cp = Cp + 1). 40 / 70

Utilisation Instructions rudimentaires, mais suffisantes pour réaliser des alternatives (si-alors, si-alors-sinon,...) des boucles (tant-que, répéter,...) Exemple : calcul de la valeur absolue V d un nombre X Algorithme structuré : s i X < 0 a l o r s V = X s i n o n V = X 41 / 70

Organigramme 1/4 L algorithme s i X < 0 a l o r s V = X s i n o n V = X peut être représenté par un organigramme 42 / 70

Organigramme 2/4 Faisons maintenant apparaître l accumulateur : 43 / 70

Organigramme 3/4 L instruction V = Acc est la dernière des deux branches, on peut la factoriser : 44 / 70

Organigramme 4/4 Si le contenu de l accumulateur est négatif, l exécution continue en séquence, il faut alors sauter à la fin. 45 / 70

de l organigramme au programme Il ne reste plus qu à traduire l o a d X j n e g n e g a t i f jmp f i n n e g a t i f l o a d i 0 sub X f i n s t o r e V Ca parait simple... 46 / 70

Commentaires Quelques commentaires sont indispensables pour comprendre rapidement la structure du code l o a d X j n e g n e g a t i f jmp f i n # Acc < X n e g a t i f # s i Acc < 0 a l o r s l o a d i 0 # Acc < X sub X # f i n s t o r e V # V < Acc 47 / 70

Exercices 1 calcul du maximum M de deux nombres A et B 2 ordonner deux nombres A et B. Indication : comparer, c est étudier la différence... 48 / 70

Faire des boucles Sous forme d organigrammme, deux formes : Avec test en tête (boucle tant-que ) ou test en fin (boucle répéter ). 49 / 70

Exemple : la somme des entiers de 1 à N Algorithme donnée N nombre, r é s u l t a t S nombre v a r i a b l e K nombre début S = O K = 1 t a n t que K <= N f a i r e S = S + K K = K + 1 f i n 50 / 70

Pseudo-instructions Séquences d affectations + sauts conditionnels ou inconditionnels Algorithme début S = O K = 1 t a n t que K <= N f a i r e S = S + K K = K + 1 f i n Pseudo-code S = 0 K = 1 BOUCLE s i K > N a l l e r à SUITE S = S + K K = K + 1 a l l e r à BOUCLE SUITE... Le test revient à étudier le signe de la différence N-K. 51 / 70

Code assembleur Le pseudo-code figure en commentaires l o a d i 0 # S = 0 s t o r e S l o a d i 1 # K = 1 s t o r e K BOUCLE # s i K > N l o a d N sub K j n e g SUITE # a l l e r à s u i t e l o a d S # S = S + K add K s t o r e S l o a d i 1 # K = K + 1 add K s t o r e K jmp BOUCLE SUITE h a l t 0 # v a r i a b l e s N word 5 K word 0 S word 0 52 / 70

Exercices sur les boucles Facile 1 programme qui multiplie deux valeurs (additions successives) 2 programme qui divise deux valeurs (soustractions successives) et fournit le quotient et le reste. À la maison 1 programme qui calcule la factorielle d un nombre. 2 programme qui trouve le plus petit diviseur non trivial d un nombre (plus grand que 1). 53 / 70

Bilan d étape Bravo! vous maîtrisez maintenant 6+3 = 9 instructions sur 13 vous savez les employer pour écrire des programmes avec des affectations des décisions des boucles 54 / 70

Chargement/rangement indirect Deux nouvelles instructions : rangement indirect loadx adresse rangement indirect storex adresse qui réalisent des chargements /rangements indirects, à une adresse indiquée par une variable. Elles nous permettront d utiliser des tableaux des pointeurs... 55 / 70

Exemple l o a d i 20 s t o r e 100 l o a d i 42 s t o r e 101 Les mots d adresse 100 et 101 sont utilisés comme pointeurs vers les données à transférer. l o a d x 100 s t o r e x 101 copie le mot d adresse 20 à l adresse 42, comme le ferait l o a d 20 s t o r e 42 Ils contiennent l adresse des données effectives : les mots d adresses respectives 20 et 42. 56 / 70

Synthèse : Les types d opérandes les trois instructions de chargement remplissent l accumulateur avec un opérande différent : loadi constante : la constante figurant dans l instruction (opérande immédiat) load adresse : la donnée située en mémoire, à l adresse indiquée (opérande direct) loadx adresse : la donnée pointée par la valeur à l adresse indiquée (opérande indirect). loadi valeur acc = valeur load adresse acc = Mem[adresse] loadx adresse acc = Mem[Mem[adresse]] 57 / 70

Illustration loadi (immédiat) charge l adresse d une variable (valeur figurant dans l instruction). Exemple 002B = loadi 42 signifie : Acc = 42 load (direct) charge son contenu (contenu de la case mémoire). Exemple 102B = load 42 signifie : Acc = Mem[42] loadx (indirect) charge la donnée qu elle pointe (indirection) Exemple 202B = loadx 42 signifie : Acc = Mem[Mem[42]] 58 / 70

Tableaux Soit T un tableau (indicé à partir de 0) qui commence à l adresse 100 Pour accéder au K-ième élément de T, on ajoute l adresse de base du tableau 100 la valeur de l indice K ce qui donne l adresse de l élément T[K] Rangée dans un pointeur PTR, cette valeur permet d accéder à T[K] par indirection. 59 / 70

Accès à un élément de tableau l o a d i T # adr. de T [ 0 ] add K s t o r e PTR # adr. de T[K] l o a d x PTR # acc = t [ k ]... s t o r e x PTR # t [ k ] = acc... K word 3 PTR word 0 T word 11 word 22.. 60 / 70

Exemple : somme des éléments d un tableau Algorithme en pseudo-code S = 0 K = 0 t a n t que K!= 10 f a i r e S = S + T[K] K = K + 1 La programmation de la boucle n a plus de secret pour vous Il reste à réaliser S = S + T[K] : l o a d i add s t o r e l o a d x add s t o r e T K PTR PTR S S 61 / 70

Exemple : somme des éléments d un tableau l o a d i 0 s t o r e S s t o r e K BOUCLE l o a d i 10 / l o a d i T sub K / add K j z e r o FIN / s t o r e PTR........... / l o a d x PTR l o a d i 1 \ add S add K \ s t o r e S s t o r e K jmp BOUCLE FIN h a l t 0 62 / 70

Exercices Simples 1 Remplissage d un tableau avec les entiers de 0 à 9 2 Copie d un tableau dans un autre 3 Maximum des éléments d un tableau Un peu plus longs... 1 Tri par sélection 2 Tri par insertion 63 / 70

Bilan d étape Bravo! vous maîtrisez maintenant 11 instructions sur 13 et vous savez les employer pour écrire des programmes qui manipulent des tableaux et des pointeurs. pour finir, nous allons voir l appel et le retour de sous-programmes. 64 / 70

Appel et retour Les deux dernières instructions : saut indirect jmpx adresse rangement indirect storex adresse servent à réaliser des sous-programmes : jmpx adresse fait aller à l instruction pointée par le contenu de la case mémoire indiqués. Exemple, si le mot d adresse 100 contient 25, un jmpx 100 fait aller à 25. call appelle un sous-programme en sauvegardant l adresse de l instruction suivante à l adresse indiquée poursuivant l exécution à l adresse + 1. En effet, un sous-programme commence par un mot réservé, qui contiendra l adresse de retour, suivi par le code. Un exemple? 65 / 70

Exemple de sous-programme Séquence d appel l o a d i X c a l l DOUBLER s t o r e XX... Le sous programme (multiplie l accumulateur par 2) DOUBLER word 0 # adr. r e t o u r s t o r e TMP add TMP jmpx DOUBLER # r e t o u r... Cette manière de faire les appels était utilisée dans quelques machines (PDP/1, PDP/4, HP 1000...) 66 / 70

Passage de paramètres Le passage de paramètres est une affaire de conventions. Exemple : la fonction qui calcule le maximum de deux nombres On peut décider que les paramètres seront fournis dans deux variables MAXP1 et MAXP2 ou au sommet d une pile d exécution (tableau en fin de mémoire) et que le résultat sera présent dans l accumulateur présent dans une variable MAXRESULTAT placé sur la pile Sans parler de passage par référence... 67 / 70

Exercices Ecrivez un sous-programme de multiplication une fonction factorielle. un sous-programme de division, un programme qui teste si un nombre est premier. un programme qui remplit un tableau avec les 20 premiers nombres premiers 68 / 70

Conclusions Un jeu d instructions très simple suffit à la programmation. Les langages de programmation ont hérité des concepts des premiers ordinateurs instructions qui modifient les données contenues dans des cases : c est la programmation impérative indirection : pointeurs Des notions un peu délicates (comme les tableaux et les pointeurs en C/C++) se comprennent plus facilement quand on sait ce qui se passe dans la machine. 69 / 70

La suite La programmation en langage d assemblage sera étudiée en détail avec des processeurs modernes (RISC à 3 registres). plus d instructions moins fastidieux à utiliser Ce cours continue avec l initiation au langage C. 70 / 70