Des instructions élémentaires. Le langage machine. Technologie liée à l assembleur. Code d opération et opérandes



Documents pareils
Rappels d architecture

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

Compilation (INF 564)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

ASR1 TD7 : Un microprocesseur RISC 16 bits

Conception de circuits numériques et architecture des ordinateurs

IV- Comment fonctionne un ordinateur?

Représentation des Nombres

Algorithme. Table des matières

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

CM2 L architecture MIPS32


Jeu d instructions NIOS II

Structure d un programme

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

Licence Sciences et Technologies Examen janvier 2010

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

Programmation assembleur : aperçu

Cours 1 : La compilation

Microprocesseur + Logiciel

Organigramme / Algorigramme Dossier élève 1 SI

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

Cours d algorithmique pour la classe de 2nde

Informatique Générale

Logiciel de Base. I. Représentation des nombres

Représentation d un entier en base b

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

Cours Informatique 1. Monsieur SADOUNI Salheddine

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

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)

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

Exécution des instructions machine

TP 1. Prise en main du langage Python

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

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

STAGE IREM 0- Premiers pas en Python

Algorithmique et programmation : les bases (VBA) Corrigé

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

Architecture des ordinateurs

PIC : COURS ASSEMBLEUR

V- Manipulations de nombres en binaire

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

Chapitre 10 Arithmétique réelle

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

Algorithmique et Programmation, IMA

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

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

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

Rappels sur les suites - Algorithme

Ordinateurs, Structure et Applications

Cours d Algorithmique et de Langage C v 3.0

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

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

Les opérations binaires

LES TYPES DE DONNÉES DU LANGAGE PASCAL

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Conventions d écriture et outils de mise au point

Conversion d un entier. Méthode par soustraction

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

Cours d Informatique

Présentation du langage et premières fonctions

IFT2880 Organisation des ordinateurs et systèmes

Introduction à l informatique en BCPST

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

DM 1 : Montre Autoquartz ETA

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

REALISATION d'un. ORDONNANCEUR à ECHEANCES

L informatique en BCPST

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

IFT1215 Introduction aux systèmes informatiques

CCNA Discovery Travailler dans une PME ou chez un fournisseur de services Internet

Chapitre VI- La validation de la composition.

Programmer en JAVA. par Tama

Gestion mémoire et Représentation intermédiaire

Architecture de l ordinateur

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Présentation du cours

Éléments de programmation et introduction à Java

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Programmation en langage C

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Cours 1 : Qu est-ce que la programmation?

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Architecture matérielle des systèmes informatiques

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

Logiciel Libre Cours 3 Fondements: Génie Logiciel

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

Le langage C. Introduction, guide de reference

Claude Delannoy. 3 e édition C++

ALGORITHMIQUE ET PROGRAMMATION En C

Chap III : Les tableaux

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

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

CONFIGURATION DE L AUTOMATE SIEMENS

Transcription:

Le langage machine 1 / 49 De l assembleur au langage machine Le langage machine 4 / 49 Des instructions élémentaires Définition (Langage machine/code machine) Le langage machine Chapitre 4 Description de groupes de modifications des valeurs internes des composants internes de processeurs sous forme de codes numériques. J.-C. Dubacq IUT de Villetaneuse Université Paris 13 Définition (Langage assembleur) Langage de programmation qui permet de décrire les instructions élémentaires qui manipulent dans le processeur les registres, l accès à la mémoire et ses autres composants. S1 2012 Définition (Assembleur) Chapitre 4 A De l assembleur au langage machine Le langage machine 5 / 49 Technologie liée à l assembleur Un programme qui prend un code source écrit en langage assembleur et le transforme en code machine, souvent spécifique à un processeur particulier. Les principes du langage machine Le langage machine 7 / 49 Code d opération et opérandes Définition (Jeu d instructions) Une spécification de caractéristiques communes à plusieurs processeurs et d un code machine commun. Une instruction (code machine) s appelle aussi opcode. Une instruction (assembleur) s appelle une mnémonique. Il existe des désassembleurs. Exemple (Mnémonique et opcode) L instruction pour processeur x86/ia32 1011 0000 0110 0001 (hexa : B0 61) est la traduction directe de la mnémonique MOV AL, #61h qui a pour effet de mettre la valeur 0x61 dans le registre AL du processeur. La structure d une instruction élémentaire est presque toujours la même. On trouve d abord un code d opération et de zéro à plusieurs opérandes. Le code d opération désigne la nature de l instruction, les opérandes sont les valeurs sur lesquelles l opération agit. On trouve quatre grandes catégories d opérations : instructions arithmétiques et logiques, instructions de déplacement de données, instructions de sauts et branchements, instructions de gestion des déroutements. Chaque opérande est une valeur, qui est utilisée selon son mode d adressage. Le code d opération fixe la longueur des opérandes, la longueur des instructions varie.

Les principes du langage machine Le langage machine 8 / 49 Modes d adressage Les principes du langage machine Le langage machine 9 / 49 La scission RISC/CISC Chapitre 4 B Au début, certaines utilisations de valeurs n étaient pas considérées comme de l adressage. Vision moderne : en fait, une plus grande variété de comportements. L adressage pouvait être déterminée opérande par opérande ou au niveau du code d opération. On distingue souvent plusieurs types d adressage : ceux pour les opérandes qui sont sensés désigner des instructions, et ceux dont les opérandes sont des données quelconques. On a essentiellement les adressages implicites, immédiats, par registre, directs, indirects, indexé... mais aussi d autres. Tous les modes d adressages n ont pas la même longueur, certains nécessite des arguments optionnels. On obtenait une grande variabilité de longueur d instructions, et certaines instructions nécessitaient donc plusieurs cycles pour être décodées. Les principes du langage machine Le langage machine 10 / 49 Adressage pour le code et étiquettes Constatation en 1975 : majorité des instructions et adressages non utilisés par les compilateurs, donc complexité inutile des processeurs. Principe : circuits plus simples, donc plus rapides, donc si parfois plus d instructions, ce n était pas grave. Fin des années 80, on voit émerger des processeurs utilisant un jeu d instruction moins riche, plus élémentaire. Technologie RISC : Reduced Instruction Set Computer (opposé à CISC : Complex...). Exemple : les processeurs d IBM, Sun, Motorola. Utilise typiquement très peu d adressages (demi-douzaine) mais plus de registres. Instructions s exécutent en un cycle, taille fixe. Compilateurs efficaces plus faciles à écrire. Les principes du langage machine Le langage machine 11 / 49 D un langage de haut niveau au langage machine Les instructions utilisent principalement quatre modes d adressage : absolu : LONG JUMP xxx {PC xxx}. relatif : JUMP xxx {PC PC+xxx}. indirect : JUMP R1 {PC PC+R1}. séquentiel : NOP {PC PC+1}. Quand on écrit PC+xxx c est souvent en fait PC+xxx longueur d instruction Il n est pas commode en écrivant de l assembleur de voir dans un déplacement à quel endroit est l instruction que l on vise : on leur donne donc des étiquettes. Le programme d assemblage transforme les références à ces étiquettes en nombres, en utilisant le plus souvent un adressage non-absolu. Syntaxe fréquente : toto: ADD R1,R2,R3 Langage C Code source.c cpp/gcc -E Expansion C sans macros cc/gcc -S Compilation Assembleur.s Bibliothèque statique.a Bibliothèque partagée.so as/gcc -c Assemblage Exécutable ld Édition de liens dynamic loading Code objet.o ld.so Liaison dynamique Code en mémoire

Les principes du langage machine Le langage machine 12 / 49 Pseudo-opérations et pseudo-instructions Les principes du langage machine Le langage machine 13 / 49 Micro-programmation Mnémoniques : correspondent en général à un opcode. Pseudo-opérations : facilités offertes par l assembleur, systèmes de macros définies par l utilisateur, remplacées par plusieurs mnémoniques au moment de l assemblage. Certaines équivalences sont définies par défaut, ce sont des pseudo-instructions. Elles sont toujours très limitées. Exemple (Pseudo-instruction) Définition (Micro-programme) L assembleur est parfois en fait interprétée dans un langage encore plus basique, qui transforme les instructions en signaux pour l unité de contrôle. L interprète peut être changé une fois le processeur commercialisé. Les raisons qui ont poussé à faire des micro-programmes : Possibilité de corriger les bugs Chapitre 4 C En MIPS/R2000, l instruction li ne peut mettre une valeur 2 16 dans un registre (32 bits). Mais on peut mettre une valeur sur 16 bits dans la moitié haute d un registre (lui), puis faire un OR de cette valeur avec une autre valeur (poids faible : ori). La pseudo-instruction li devient selon la valeur de l argument une ou deux instructions natives (li=petite, lui puis ori=grande). Les principes du langage machine Le langage machine 14 / 49 L architecture de jeu d instruction Pour les processeurs plus complexes, la possibilité d optimiser a posteriori la gestion interne du processeur Pour certains processeurs, ajouter la possibilité de comprendre plusieurs jeux d instruction (traduire entre un jeu d instruction et un autre). Les principes du langage machine Le langage machine 15 / 49 Exemples de formats (1/2) Organisation des processeurs en familles de processeurs similaires ; Exemple (Format d instructions pour x86) Compatibilité arrière conservée (backward compatibility) ; parfois comportements très anecdotiques pour ça. Grâce à la micro-programmation, compatibilité avant possible (forward compatibility). Description des opcodes en RTL (Register Transfer Language). Possibilité d émulation d un processeur par un autre (par exemple, processeur Crusoé). Également spécification du nombre, de la taille des registres. Registres généraux donne la «taille» du processeur. Technologie CISC. Longueur de mot d instruction variable. Modes d adressage variés.

Les principes du langage machine Le langage machine 16 / 49 Exemples de formats (2/2) Les instructions de déplacement Le langage machine 18 / 49 Manipulation de données Exemple (Format d instructions pour MIPS/R2000) Type 31 26 21 16 11 6 0 Type R op rs rt rd imm5 funct add, sub... 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Type I op rs rt imm ori, lw... 6 bits 5 bits 5 bits 16 bits Type J op target address j, jal... 6 bits 26 bits De la mémoire vers les registres et inversement. Sens mémoire vers registres : load. Sens registres vers mémoire : store. Aussi chargement de constantes en mémoire : set. Exemples (et RTL) : Load r1, 14 : R 1 MEM[14];PC PC +1 ; Save r2, 28 : MEM[28] R 2 ;PC PC +1 ; Save r1, (r2) : MEM[R 2 ] R 1 ;PC PC +1 Chapitre 4 D Technologie RISC (longueur de mot d instruction fixe). Type R : beaucoup de registres, petites constantes (pour décalages), funct sert à compléter op. Type I : Une constante sur 16 bits. Type J : une grande constante sur 26 bits divisée par 4. Les instructions de déplacement Le langage machine 19 / 49 Les modes d adressage pour les données move Registres set load Mémoire store set (CISC) Constantes Les instructions arithmétiques et logiques Le langage machine 21 / 49 Instructions de calcul Registre move r1 r2 {r1 r2} Immédiat set r1 value {r1 value} Implicite reset r1 {r1 0} Indirect+déc. load r1 r2 off {r1 MEM[r2+off]} Index (absolu) load r1 r2 val {r1 MEM[val+r2 X]} Index+base load r1 r2 r3 {r1 MEM[r2+r3 X]} Indirect load r1 r2 {r1 MEM[r2]} Direct load r1 value {r1 MEM[value]} Relatif load r1 off {r1 MEM[PC+off]} Autoincrémenté load r1 r2 {r1 MEM[r2]} ou décrémenté {r2 r2±1} Possibilité d une double indirection sur certains processeurs : {r1 MEM[MEM[xxx]]}. En RISC, le code op détermine l adressage (or/ori) ; sinon quelques bits pour chaque opérande. Temps de traitement variable. Opérations logiques : OR, AND, XOR, NOT. Opérations arithmétiques en entiers, et en flottants. Aussi décalages, rotations... Codage C2 ou NAT pour entiers, IEEE754 pour flottants. Utilisation d un coprocesseur pour flottants (durée variable). Gestion de la taille des opérandes par le code op. En RISC : uniquement avec immédiats et registres ; En CISC : aussi avec écriture ou lecture en mémoire ; Exemples : Add r1,r2,r3 : R 1 R 2 +R 3 ;PC PC +1; ORI r1,r6,129 : R 1 (R 6 )OR(0x81);PC PC +1;

Les instructions de saut et de branchement Le langage machine 23 / 49 Les sauts Les instructions de saut et de branchement Le langage machine 24 / 49 Les branchements Chapitre 4 E Les sauts permettent un déroulement non séquentiel des instructions Les premiers langages comprenaient un saut à chaque instruction Le saut absolu pose des difficultés techniques (longueur de constante, code relocalisable). Le saut relatif et le déplacement séquentiel sont très majoritaires. Le saut indirect permet de sauvegarder un point d y code et d y revenir plus tard. C est une fonctionnalité indispensable pour faire du code moderne (sauf cas de code réinscriptible). Saut relatif ou absolu : codé par étiquette, donc invisible depuis l assembleur. Le saut s appelle aussi GOTO. Les instructions de saut et de branchement Le langage machine 25 / 49 Le code spaghetti Permet de faire des programmes au déroulement non linéaire. Caractéristiques essentielle de la programmation Instruction avec deux adresses de prochaine instruction : condition réalisée ou non. En général : adressage relatif et séquentiel. Saut conditionnel Si (condition) est vraie, aller (quelque part), sinon continuer La condition est souvent rudimentaire : tester si un registre est nul, comparer si deux registres sont différents, regarder les drapeaux d état du processeur (dernière opération : erreur? débordement?) Les déroutements Le langage machine 27 / 49 Appels systèmes Exemple (Code spaghetti BASIC) 10 i = 0 20 i = i + 1 30 PRINT i; " au carré = "; i * i 40 IF i >= 10 THEN GOTO 60 50 GOTO 20 60 PRINT "Fini." 70 END Les constructions avec GOTO peuvent vite devenir illisibles. La faiblesse des structures de contrôle en assembleur rend son usage nécessaire. Boucles = pseudo-opérations. Le nom des étiquettes rend les codes plus lisibles. Niveaux de fonctionnement différents dans les processeurs modernes (ring) avec des limitations pour les niveaux plus bas. Exécution de certaines fonctions nécessitent d être le système d exploitation. Mécanisme d exception par la command syscall (ou trap ou int, selon le jeu d instruction). Code assembleur de petite taille pilotée par une table d interruptions à adresse fixe. Ce code fait des branchements pour exécuter des procédures plus grosses dans le système d exploitation. Puis le code revient à l endroit appelant.

Les déroutements Le langage machine 28 / 49 Interruptions La machine VLTN Le langage machine 30 / 49 L assembleur VLTN Chapitre 4 F Lorsque certains événements matériels se produisent le processeur reçoit un signal d interruption. Le processeur a une mémoire interne d un masque d interruption (liste de signaux à ignorer) et une table d interruption (à adresse fixe, le code qui doit s occuper). Changement de contexte : Lorsqu une interruption est reçue qui ne doit pas être ignorée, l état du processeur est sauvegardé et la routine adéquate exécutée à la place. Fin d interruption : à la fin de la routine, la sauvegarde de l état est remise en place pour reprendre le travail précédent. Certaines interruptions sont elles-mêmes interruptibles. Coopération étroite entre processeur et système d exploitation. Interruptions plus récentes utilisent une écriture dans une zone mémoire précise comme «signal». Très utilisées pour les entrées-sorties. La machine VLTN Le langage machine 31 / 49 Mémoire et Instructions Machine rudimentaire pour l étude pédagogique. Inspiré de l IBM 650. Stocke des valeurs de 6 chiffres en base 10. 1 registre de calcul ACCU. 1 registre d instruction INST. 1 registre PT d indexation sur 6 chiffres. 1 registres PC compteur de programme sur 2 chiffres. 2 drapeaux NUL et ERR (ACCU nul et dernier calcul avec débordement). Mémoire adressable : 100 adresses (sur 2 chiffres en base 10). Codage machine : DCB (décimal codé binaire). La machine VLTN Le langage machine 32 / 49 Exécution Une instruction est codée par six chiffres XX YY ZZ : XX est le code d opération. YY est l argument. ZZ est l adresse de prochaine instruction. Les entrées sont des nombres, consommés au fur et à mesure Les sorties sont des nombres, écrits au fur et à mesure Pas de séparation code/données : tout emplacement peut être l un ou l autre. Mnémonique en quatre lettres (ou moins). VLTN peut être exécuté par un simulateur. Un programme complet décrira la mémoire initiale et la série d entrées. mémoire initiale : dans un fichier : 10: 40 30 24 décrit qu à la case 10 de la mémoire, il y a l instruction ADD 30 24 (ou bien le nombre 403024) ACCU vaut 000000, ERR est FAUX, NUL est VRAI, PC vaut 00. Le simulateur donne les sorties et le code de fin. Entrées/sorties Simulateur version 1 012345 142842 VLTN 987654 654321 http://www-lipn.univ-paris13.fr/~dubacq/ Enseignement Simulateur VLTN

Les instructions Le langage machine 34 / 49 Instructions : Manipulations Les instructions Le langage machine 35 / 49 Instructions : Arithmétique Chapitre 4 G Instructions de manipulation de données OP MNEM Nom Effet 01 TSTN Test NUL Si NUL, PC YY, sinon PC ZZ 02 TSTE Test ERR Si ERR, PC YY, sinon PC ZZ 10 SET Set ACCU YY PC ZZ 21 LOAD Load ACCU MEM[YY] PC ZZ 31 STOR Store MEM[YY] ACCU PC ZZ 80 GOTO Goto PC ZZ À chaque cycle où ACCU est modifié, ERR est mis à VRAI si débordement, FAUX sinon. NUL est mis à VRAI si ACCU est nul. Résultat tronqué si ERR (ex : 689210+582636=2718456). Les instructions Le langage machine 36 / 49 Instructions : Logique Instructions arithmétiques OP MNEM Nom Effet 40 ADD Add ACCU ACCU+MEM[YY] PC ZZ 41 ADDI Add Imm ACCU ACCU+YY PC ZZ 42 ADDM Add Imm mid ACCU ACCU+YY*100 PC ZZ 43 ADDH Add Imm high ACCU ACCU+YY*10000 PC ZZ 44 SUB Sub ACCU ACCU-MEM[YY] PC ZZ 45 SUBI Sub Imm ACCU ACCU-YY PC ZZ 46 SUBM Sub Imm mid ACCU ACCU-YY*100 PC ZZ 47 SUBH Sub Imm high ACCU ACCU-YY*10000 PC ZZ Les opérations se font en base 10 (tout est codé en binaire en interne, mais on a programmé la table d addition en base 10). Quand A B déborde (négatif), on obtient 1000000 +A B. Les instructions Le langage machine 37 / 49 Instructions : Entrées/Sorties et affectations partielles Instructions logiques OP MNEM Nom Effet 50 SHFL Shift left ACCU ACCU«YY PC ZZ 51 SHFR Shift right ACCU ACCU»YY PC ZZ 52 ROTL Rotate left ACCU ACCU rot YY PC ZZ 53 ISOL Isolate ACCU ACCU isol YY PC ZZ Usuellement, on a aussi les opérations AND, OR, XOR et NOT. Pour un ordinateur qui utilise un codage décimal, ça n a pas tellement de sens. «et» sont les décalages, rot la rotation à gauche, isol AB prend le A e chiffre et le met en B e position (le reste à zéro). Instructions d entrées/sorties, affectations partielles OP MNEM Nom Effet 11 SETH Set High High(ACCU) YY PC ZZ 12 SETM Set Middle Mid(ACCU) YY PC ZZ 13 SETL Set Low Low(ACCU) YY PC ZZ 90 READ Read input MEM[YY] input PC ZZ 91 WRIT Write output output MEM[YY] PC ZZ 00 EJECT Eject (fin) Code de fin: YYZZ Le code de fin est conventionnellement 0000 pour un programme qui finit normalement, le reste au choix du programmeur (par ex., un programme avec pas assez de données s arrêterait avec 0001). Si aucune entrée n est disponible, READ met ERR à 1 et renvoie un nombre aléatoire. Sinon, ERR est mis à 0.

Les instructions Le langage machine 38 / 49 Instructions : Indirections Les instructions Le langage machine 39 / 49 Exemple de programme Instructions d indirections OP MNEM Nom Effet 14 SAVE Save PT ACCU PC ZZ 15 COPY Copy ACCU PT PC ZZ 16 SWAP Swap PT ACCU ACCU PT PC ZZ 17 SETP Set PT PT YY PC ZZ 22 LDIX Load Index ACCU MEM[PT+YY] PC ZZ 32 STIX Store Index MEM[PT+YY] ACCU PC ZZ 81 LINK Jump and link ACCU PC PC ZZ 82 RET Return PC ACCU+YY Exemple (Somme de 2 nombres) // Fichier somme2.vltn 00: 90 50 01 // READ 50 01 01: 90 51 02 // READ 51 02 02: 21 50 03 // LOAD 50 03 03: 40 51 04 // ADD 51 04 04: 31 52 05 // STOR 52 05 05: 91 52 06 // WRIT 52 06 06: 00 00 00 // EJECT 0000 Chapitre 4 H Si ACCU+YY ou PT+YY>100, on enlève 100 : +99 comme -1. Présentation Le langage machine 41 / 49 Structure d un programme Méthodes de programmation Le langage machine 43 / 49 Programmation : Un test On écrit sur chaque ligne _label: INST operande ligne Si ligne est omis, c est la ligne suivante ; Une étiquette est soit un nombre, soit un nom précédé de _. Si _label est omis, c est 1 de plus que la ligne précédente. Le nom est en minuscules pour le code, en majuscules sinon Les données commencent traditionnellement à l adresse 50. On met des commentaires sur la fin de la ligne derrière un // L étiquette _main correspond à l adresse 00. Exemple (Somme de 2 nombres) 00: READ 50 01 01: READ 51 02 02: LOAD 50 03 03: ADD 51 04 04: STOR 52 05 05: WRIT 52 06 06: EJECT 0000 Exemple (Somme de 2 nombres) _main: READ _A READ _B LOAD _A ADD _B STOR _C WRIT _C _end: EJECT 0000 Si (_A>_B) alors finsi LOAD _B SUB _A TSTE suite _:... fin _suite:... fin

Méthodes de programmation Le langage machine 44 / 49 Alternatives Méthodes de programmation Le langage machine 45 / 49 Alternative complexe (case, switch) Chapitre 4 I Si (_A>_B) alors Sinon finsi blocc LOAD _B SUB _A TSTE _vrai _faux _vrai: fin GOTO _suite _faux: fin _suite: blocc finblocc Méthodes de programmation Le langage machine 46 / 49 Boucle : le plus simple Selon (_A): Si (_A=1): Si (_A=2): Sinon blocc finsi blocd _un: LOAD _A SUBI 01 TSTN _un _nonun fin _suite _nonun: LOAD _A SUBI 02 _deux: TSTN _deux _defaut fin _suite _defaut:blocc finblocc _suite: blocd finblocd Méthodes de programmation Le langage machine 47 / 49 Boucle avec test initial Faire tant que (_A<5) Faire jusqu à (_A>=5) Set 05 STOR _B _boucle: fin LOAD _A SUB _B TSTE _boucle _suite _suite: fin Tant que (_A<5), faire fintantque Jusqu à (_A>=5), faire fintantque Set 05 STOR _B _boucle:load _A SUB _B _cbcl: TSTE _cbcl _suite fin _boucle _suite: fin

Méthodes de programmation Le langage machine 48 / 49 Répéter plusieurs fois Méthodes de programmation Le langage machine 49 / 49 Boucle classique Chapitre 4 J Répéter 8 fois finrépéter Set 08 STOR _B _boucle: fin LOAD _B SUBI 01 STOR _B TSTN _suite _boucle _suite: fin Pour A de 3 à 8 finpour Set 08 STOR _B Set 03 STOR _A _boucle: fin LOAD _A ADDI 01 STOR _A SUB _B TSTN _suite _boucle _suite: fin