ITI 1521. Introduction à l`informatique II=1Pensez
Transcription
ITI 1521. Introduction à l`informatique II=1Pensez
Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Revue ITI 1521. Introduction à l’informatique II † Objectifs : Marcel Turcotte (contributions de R. Holte) École d’ingénierie et de technologie de l’information Université d’Ottawa 1. Connaı̂tre les attentes face à Java 2. Introduction à l’architecture des ordinateurs et l’exécution d’un programme Lectures : I Pages 597–631 de E. Koffman and P. Wolfgang. Version du 8 janvier 2012 †. Pensez-y, n’imprimez ces notes de cours que si c’est nécessaire! Marcel Turcotte Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Prérequis Pourquoi Java ? Vous devez maı̂triser ces concepts : I Utilisation des types prédéfinis de Java : y compris les tableaux et les chaı̂nes de caractères I Structures de contrôles : telles que if, for, while. . . ; I Abstraction procédural (programmation structurée) : c’.-à.-d. comment décomposer un problème en sous-problèmes, implémentés à l’aide de méthodes de classe (static) ; I Comment éditer, compiler et exécuter un programmes Java. 1 2 3 4 5 6 7 8 9 10 Java C C++ PHP Basic C# Python Perl Objective-C Delphi 18% 18% 10% 9% 6% 5% 4% 3% 3% 2% ⇒ TIOBE Programming Community Index Marcel Turcotte ITI 1521. Introduction à l’informatique II Marcel Turcotte Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Pourquoi Java ? Pourquoi Java ? According to a report from NetApplications, which has measured browser usage data since 2004, Oracle’s Java Mobile Edition has surpassed Android as the #2 mobile OS on the internet at 26.80%, with iOS at 46.57% and Android at 13.44%. And the trend appears to be growing. Java ME powers hundreds of millions of low-end ’feature phones’ for budget buyers. In 2011, feature phones made up 60% of the install base in the U.S. Java partage le premier rang avec C des langages les plus utilisés, pourtant, je ne connais pas d’applications Java. Où touve-t-on des applications Java ? I La partie serveur des applications et services Web I Applications mobiles (téléphones portables) Slashdot 3 janvier 2012 http ://bit.ly/xSk5pN Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Pourquoi Java ? Exécution d’un programme Quels sont les deux principaux modes d’exécution ? I La programmation en C demande une grande discipline (gestion de la mémoire, manipulation de pointeurs. . . ) I Java est un bon véhicule pour l’enseignement (interface, héritage simple, types génériques. . . ) I Lorsqu’on maı̂trise Java, l’apprentissage des langages orientés objet ou impératifs est simple Marcel Turcotte ITI 1521. Introduction à l’informatique II Program (byte-code) Compiled program (binary code) Marcel Turcotte Interpreter (Virtual machine) ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Compilation et exécution d’un programme Java Motivation > javac MyProgram.java I Sous l’ancien programme d’études, ce cours (CSI 1501) comportait une section sur l’architecture des ordinateurs (algèbre de Boole, logique des circuits, représentation des nombres, assembleur, compilation et interprétation de programmes). I Cette présentation a pour but de présenter un modèle simplifié de l’exécution des programmes au niveau du matériel. I La maı̂trise du concept de variables références est essentielle à la réussite de ce cours ! Produira MyProgram.class (code-octet – byte-code) > java MyProgram Ici, java c’est la Machine Java Virtuelle (JVM). Program (byte-code) Compiled program (binary code) Marcel Turcotte Interpreter (Virtual machine) Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue TC1101 modèle de von Neumann Présentation d’un modèle simplifié d’un microprocesseur et de son langage d’assemblage. unité de traitement : effectue les opérations arithmétiques et logiques MDR Main memory L’architecture des ordinateurs modernes suit le modèle proposé par (John) von Neumann (1945). mémoire : contient les instructions et les données MAR OpCode OpAddr H OpAddr unité de contrôle : interprète les instructions A L R/W H Z N ALU Marcel Turcotte Processing Unit memory PC Control ITI 1521. Introduction à l’informatique II Marcel Turcotte Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Modèle de la mémoire I ITI 1521. Introduction à l’informatique II Modèle de la mémoire Peut-être vue comme un immense tableau, où chaque cellule du tableau peut contenir zéro ou un (binary digit — bits) ; I I 0 1 1 0 I Chaque octet (groupement de 8 bits) possède une adresse unique (distincte) Les octets sont regroupés en mots Certains types de données nécessitent plus d’un octet ... 0 4 8 ... 3 Marcel Turcotte ITI 1521. Introduction à l’informatique II Marcel Turcotte Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue I 1 0 ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Modèle de la mémoire I 2 Central Processing Unit (CPU), µ-processeur Ce type de mémoire est dit à accès direct (Random Access Memory ) Le temps d’accès aux cellules de la mémoire est uniforme et constant, De l’ordre de 5 à 70 nano secondes (nano = 10−9 ) 0 4 8 I Exécute les instructions une à la fois Registers ALU CU UAL Unité Arithmétique Logique (Arithmetics/Logic Unit — ALU), contient des circuits spéciaux afin d’exécuter les instructions supportées ... 3 2 1 0 UC Unité de Contrôle (Control Unit) transfert les instructions depuis la mémoire principale et détermine leur type Les registres sont des unités de mémoire spécialisées situées dans le processeur servant au traitement des données Marcel Turcotte ITI 1521. Introduction à l’informatique II Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Mnémoniques, opCodes, description LDA STA CLA INC ADD SUB JMP JZ JN DSP HLT 91 39 08 10 99 61 15 17 19 01 64 Compilation load x store x clear (a=0, z=vrai, n=faux) incrémente accumulateur (modifie z et n) ajoute x à l’accumulaeur (modifie z et n) retranche x de l’accumulateur (modifie z et n) branchement inconditionnel vers x branchement sur x si z==vrai branchement sur x si n==vrai affiche la valeur se trouvant à l’adresse x fin Marcel Turcotte Les programmes, suites d’énoncés d’un langage de programmation de haut niveau, sont traduits (compilés), en langage de bas niveau (assembleur, code machine), directement interprétable par le matériel. L’expression y = x + 1 est traduite en assembleur : LDA X INC STA Y HLT qui est ensuite traduit en code machine : 91 00 08 10 39 00 09 64 10 99 Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Division par soustractions successives [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] X Y Quot Rem Temp Division : code machine CLA STA Quot LDA X SUB Y JN [7] STA Temp LDA Quot INC STA Quot LDA Temp JMP [3] ADD Y STA Rem DSP Quot DSP Rem HLT BYTE 25 BYTE 07 BYTE 00 BYTE 00 BYTE 00 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] X Y Quot Rem Temp Marcel Turcotte ITI 1521. Introduction à l’informatique II ITI 1521. Introduction à l’informatique II CLA STA Quot LDA X SUB Y JN [7] STA Temp LDA Quot INC STA Quot LDA Temp JMP [3] ADD Y STA Rem DSP Quot DSP Rem HLT BYTE 25 BYTE 07 BYTE 00 BYTE 00 BYTE 00 ⇒ Marcel Turcotte Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue 08 39 91 61 19 39 91 10 39 91 15 99 39 01 01 64 25 07 00 00 00 00 00 00 00 00 00 44 42 43 29 46 44 00 00 00 00 00 00 00 44 46 07 43 45 44 45 ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Division : code machine Registres 08 39 00 44 91 00 42 61 00 43 19 00 29 39 00 46 91 00 44 10 39 00 44 91 00 46 15 00 07 99 00 43 39 00 45 01 00 44 01 00 45 64 25 07 00 00 00 Marcel Turcotte I Résident dans le processeur, très grande vitesse d’accès I On y accède à l’aide d’un nom logique plutôt qu’une adresse (MAR, MDR, . . . ) I Chaque registre a une fonction spécifique ; au contraire pour la mémoire, vous vous souvenez nous avons dit qu’il n’y a pas de distinction entre les données et les programmes ; I Leur taille varie selon leur fonction. Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Interface entre la mémoire et l’UCT Main memory MAR PC IR MDR Control R0 I Les bits ne sont pas transférés un à la fois, mais en parallèle I On appelle bus, l’ensemble des fils (lignes) qui permettent la communication entre les unités I On distingue 3 types de bus : bus de données, bus d’adressage et bus de contrôle I Le nombre de lignes (fils) détermine la largeur du bus. General Registers Rn Marcel Turcotte ALU ITI 1521. Introduction à l’informatique II Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Bus d’adressage Main memory ... MAR ... MDR R/W I La largeur du bus détermine la taille maximale de la mémoire I Si la largeur du bus est de 16 lignes, les adresses sont constituées de 16 bits, il y a donc 216 = 65536 adresses différentes, s’il y a 32 lignes, les adresses sont constituées de 32 bits, il y donc 232 ' 4 × 109 adresses différentes I Le registre adresse mémoire (MAR) aura 32 bits afin de stocker une adresse Control Unit Marcel Turcotte ITI 1521. Introduction à l’informatique II Marcel Turcotte Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Bus de données Bus de contrôle (lignes) La taille du bus détermine le nombre de bits transférés en un seul accès (depuis/vers la mémoire). Par exemple, indique le sens du transfert : R (read) l’élément est transféré de la mémoire au processeur W (write) l’élément est transféré du processeur à la mémoire Marcel Turcotte ITI 1521. Introduction à l’informatique II Marcel Turcotte Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Transfert vers la mémoire Transfert depuis la mémoire Afin de transférer une valeur v du processeur vers l’adresse x de la mémoire : Afin de transférer une valeur de l’adresse x (en mémoire) vers le processeur : 1. mettre v dans le registre de donnée (MDR), 1. mettre la valeur x dans le registre d’adresse (MAR), 2. mettre x dans le registre d’adresse (MAR), 2. mettre le bit de statut RW à vrai, 3. mettre le bit de statut RW à faux, 3. activer la ligne de contrôle 4. activer la ligne de contrôle 4. le registre de donnée (MDR) contient maintenant une copie de la valeur se trouvant à l’adresse x de la mémoire. Marcel Turcotte access memory. ITI 1521. Introduction à l’informatique II Marcel Turcotte Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue ITI 1521. Introduction à l’informatique II Exemple 1. transfert : 1.1 transfert de l’OPCODE, 1.2 incrémente PC, 2. selon OPCODE alors transfert opérande : transfert premier octet, incrémente PC, transfert second octet, incrémente PC, 3. exécute. ⇒ Fetch-Execute Cycle. Marcel Turcotte access memory Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Cycle transfert-exécute 2.1 2.2 2.3 2.4 ITI 1521. Introduction à l’informatique II Afin d’ajouter 1 à la valeur x et de sauver le résultat dans y (y = x + 1). I Charger la valeur de x dans l’accumulateur, registre A. I Incrémenter la valeur de l’accumulateur, I Sauver la valeur qui se trouve dans l’accumulateur à l’adresse y. Ceci implique 3 instructions machines : 91 : load 10 : increment 39 : store Si x désigne l’adresse 00 08 et y désigne l’adresse 00 09, alors y = x + 1 peut s’écrire en langage machine comme suit : 91 00 08 10 39 00 09 64 10 99 Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Simulateur Java TC1101 Simulateur Java TC1101 Cette section contient des informations supplémentaires au sujet de ce microprocesseur. Le Simulateur Java TC1101 joue un rôle semblable à la Machine Java Virtuelle (JVM) — l’interpréteur à droite — il partage aussi plusieurs caractéristiques. MAR Program (byte-code) Main memory MDR OpCode OpAddr H OpAddr L A Compiled program (binary code) R/W PC Control H Z N Marcel Turcotte ALU ITI 1521. Introduction à l’informatique II Marcel Turcotte Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue 91 39 08 10 99 61 15 17 19 01 64 load x store x clear (a=0, z=vrai, n=faux) incrémente accumulateur (modifie z et n) ajoute x à l’accumulaeur (modifie z et n) retranche x de l’accumulateur (modifie z et n) branchement inconditionnel vers x branchement sur x si z==vrai branchement sur x si n==vrai affiche la valeur se trouvant à l’adresse x fin Marcel Turcotte Description des unités fonctionnelles du TC-1101 PC (mot) : Compteur de programme (Program Counter ), registre d’un mot mémoire contenant l’adresse de la prochaine instruction à exécuter ; OPCODE (octet) : registre d’instruction (parfois dénoté IR), contient l’OPCODE de l’instruction en cours ; opAddr (mot) : L’opérande de l’instruction en cours d’exécution. L’opérande est toujours une adresse (pour le TC-1101 seulement). Certaines instructions nécessitent la valeur contenue à l’adresse indiquée ; cette valeur n’est pas transférée par le cycle de transfert de base, mais doit être transférée par l’opération elle-même lors de l’exécution (voir étape 3 du cycle de transfert ainsi que la description de chacune des instructions ci-bas) ; ITI 1521. Introduction à l’informatique II Marcel Turcotte Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Description des unités fonctionnelles du TC-1101 H (bit) : le bit de statut Halt. Ce bit est mis-à-jour par l’instruction halt (hlt). Si ce bit est vrai, le processeur s’arrête lorsque l’opération courante est terminée ; N (bit) : le bit de statut Negative. Les opérations arithmétiques affectent la valeur vrai à ce bit lorsqu’elles produisent un résultat négatif. Certaines opérations n’affectent pas la valeur de ce bit, ainsi sa valeur ne reflète pas toujours l’état courant de l’accumulateur ; Z (bit) : le bit de statut Zero. Les opérations arithmétiques affectent la valeur vrai à ce bit lorsqu’elles produisent le résultat zéro. Certaines opérations n’affectent pas la valeur de ce bit, ainsi sa valeur ne reflète pas toujours Marcel l’étatTurcotte courantITIde l’accumulateur ; 1521. Introduction à l’informatique II MDR (octet) : registre donnée mémoire (Memory Data Register). Une donnée transférée (read/loaded) de la mémoire vers le processeur est toujours placée dans le registre de donnée. De même, une donnée transférée du processeur vers la mémoire (stored) doit être placée dans le registre de donnée ; MAR (mot) : registre adresse mémoire (Memory Address Register ). Ce registre contient l’adresse mémoire à partir de laquelle une donnée doit être lue ou vers laquelle elle doit être écrite ; A (octet) : Accumulateur. Toutes les opérations arithmétiques utilisent ce registre comme opérande et aussi pour sauver leur résultat ; ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Description des unités fonctionnelles du TC-1101 RW (bit) : le bit de statut READ/WRITE. Si sa valeur est vrai, signifie qu’une donnée sera lue (fetched) de la mémoire et transférée dans le registre MDR de l’unité centrale. Si faux, signifie qu’une donnée sera transférée du registre MDR vers la mémoire. Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Description des unités fonctionnelles du TC-1101 Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Mnemoniques, opCodes, descriptions LDA STA CLA INC ADD SUB JMP JZ JN DSP HLT Interpreter (Virtual machine) ITI 1521. Introduction à l’informatique II Simulateur TC1101 I utilise des constantes afin de representer les OPCODES ; I des variables de classe représentent la mémoire et les registres ; I la méthode accessMemory() simule le transfert des données entre le processeur et la mémoire ; I la méthode centrale est run() qui simule le cycle fetch-execute : lire l’OPCODE, transfert de l’opérande et exécution de l’instruction courante. Marcel Turcotte ITI 1521. Introduction à l’informatique II Constantes pour représenter les OPCODES import j a v a . i o . ∗ ; i m p o r t SimIO ; // r e a d d a t a from a f i l e c l a s s Sim { // a d d r e s s e s a r e 2 b y t e s p u b l i c s t a t i c f i n a l i n t MAX ADDRESS = 9 9 9 9 ; // l o a d from memory t o t h e a c c u m u l a t o r p u b l i c s t a t i c f i n a l i n t LDA = 9 1 ; // s a v e a c c u m u l a t o r t o memory p u b l i c s t a t i c f i n a l i n t STA = 3 9 ; // s e t a c c u m u l a t o r t o 0 p u b l i c s t a t i c f i n a l i n t CLA = 8 ; // i n c r e m e n t a c c u m u l a t o r by 1 p u b l i c s t a t i c f i n a l i n t INC = 1 0 ; // add t o t h e a c c u m u l a t o r p u b l i c s t a t i c f i n a l i n t ADD = 9 9 ; // s u b t r a c t from t h e a c c u m u l a t o r p u b l i c s t a t i c f i n a l i n t SUB = 6 1 ; // u n c o n d i t i o n a l b r a n c h ” go t o ” p u b l i c s t a t i c f i n a l i n t JMP = 1 5 ; // b r a n c h t o a d d r e s s i f Z p u b l i c s t a t i c f i n a l i n t JZ = 1 7 ; // b r a n c h t o a d d r e s s i f N p u b l i c s t a t i c f i n a l i n t JN = 1 9 ; // d i s p l a y t o s c r e e n p u b l i c s t a t i c f i n a l i n t DSP = 1 ; // ” h a l t ” p u b l i c s t a t i c f i n a l i n t HLT = 6 4 ; Modéliser la mémoire et les registres private static final i n t [ ] memory = new i n t [ MAX ADDRESS + 1 ] ; // program c o u n t e r p r i v a t e s t a t i c i n t pc ; // a c c u m u l a t o r private static int a ; // o p c o d e o f t h e c u r r e n t i n s t r u c t i o n p r i v a t e s t a t i c i n t opCode ; // a d d r e s s o f t h e o p e r a n d p r i v a t e s t a t i c i n t opAddr ; // s t a t u s b i t ” Z e r o ” p r i v a t e s t a t i c boolean z ; // s t a t u s b i t ” N e g a t i v e ” p r i v a t e s t a t i c boolean n ; // s t a t u s b i t ” H a l t ” p r i v a t e s t a t i c boolean h ; // memory a d d r e s s r e g i s t e r p r i v a t e s t a t i c i n t mar ; // memory d a t a r e g i s t e r p r i v a t e s t a t i c i n t mdr ; // b i t Read / W r i t e . Read = True ; W r i t e = F a l s e p r i v a t e s t a t i c b o o l e a n rw ; // . . . Chargement du programme en langage machine Accès mémoire // t h e method s i m u l a t e s t h e e f f e c t o f a c t i v a t i n g t h e a c c e s s // c o n t r o l l i n e . p r i v a t e s t a t i c v o i d accessMemory ( ) { public s t a t i c void load ( String filename ) throws IOException { int [ ] values ; int i ; int address = 0; SimIO . s e t I n p u t F i l e ( f i l e n a m e ) ; w h i l e ( ! SimIO . e o f ( ) ) { v a l u e s = SimIO . r e a d C o m m e n t e d I n t e g e r L i n e ( ) ; f o r ( i = 0 ; i < v a l u e s . l e n g t h ; i ++) { memory [ a d d r e s s ] = v a l u e s [ i ] ; address = address + 1; } } } i f ( rw ) { // rw=True s i g n i f i e s ” r e a d ” // c o p y t h e v a l u e from memory t o p r o c e s s o r mdr = memory [ mar ] ; } else { // rw=F a l s e s i g n i f i e s ” w r i t e ” // c o p y a v a l u e from t h e p r o c e s s o r t o t h e memory memory [ mar ] = mdr ; } } // . . . FETCH-EXECUTE // ‘ ‘ FETCH−EXECUTE ’ ’ c y c l e s i m u l a t i o n s t a r t s // a t t h e a d d r e s s 00 00 FETCH-EXECUTE (suite) // i f t h e opCode i s odd , t h i s // n e c e s s i t a t e s an o p e r a n d p u b l i c s t a t i c void run ( ) { if pc = 0 ; h = false ; // a l w a y s s t a r t s a t z e r o // r e−i n i t i a l i z e t h e s t a t u s b i t h a l t w h i l e ( h == f a l s e ) { // l o a d opCode mar = pc ; pc = pc + 1 ; // pc i s i n c r e m e n t e d rw = t r u e ; accessMemory ( ) ; opCode = mdr ; FETCH-EXECUTE (suite) // e x e c u t e t h e i n s t r u c t i o n s w i t c h ( opCode ) { c a s e LDA : { mar = opAddr ; // r e a d v a l u e d e s i g n a t e d by o p e r a n d rw = t r u e ; accessMemory ( ) ; a = mdr ; // p u t t h i s v a l u e i n t o a c c u m u l a t o r break ; } instruction ( ( opCode % 2 ) == 1 ) { mar = pc ; pc = pc + 1 ; // i n c r e m e n t pc rw = t r u e ; accessMemory ( ) ; // r e a d i n g t h e h i g h p a r t o f opAddr = mdr ; // t h i s a d d r e s s mar = pc ; pc = pc + 1 ; // i n c r e m e n t pc rw = t r u e ; accessMemory ( ) ; // r e a d l o w p a r t o f t h i s a d d r e s s opAddr = 100 ∗ opAddr + mdr ; // p u t h i g h+lo w t o g e t h e r } FETCH-EXECUTE (suite) c a s e STA : { mdr = a ; // p u t c o n t e n t o f t h e a c c u m u l a t o r mar = opAddr ; // a t a d d r e s s d e s i g n a t e d by opAddr rw = f a l s e ; accessMemory ( ) ; break ; } c a s e CLA : a = z = n = break } { 0; true ; false ; ; // c l e a r = s e t a c c u m u l a t o r t o z e r o // a l s o s e t s s t a t u s b i t Z and N Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue FETCH-EXECUTE (suite) FETCH-EXECUTE (suite) c a s e INC : a = z = n = break } c a s e SUB : { mar = opAddr ; // r e a d v a l u e d e s i g n a t e d by o p e r a n d rw = t r u e ; accessMemory ( ) ; a = ( a − mdr ) % 1 0 0 ; // s u b t r a c t from t h e a c c u m u l a t o r z = ( a == 0 ) ; // u p d a t e t h e s t a t u s b i t s n = (a < 0); break ; } { ( a + 1 ) % 1 0 0 ; // i n c r e m e n t = add 1 t o a c c u m u l a t o r ( a == 0 ) ; // a f f e c t t h e s t a t u s b i t s (a < 0); ; c a s e ADD: { mar = opAddr ; // r e a d v a l u e d e s i g n a t e d by o p e r a n d rw = t r u e ; accessMemory ( ) ; a = ( a + mdr ) % 1 0 0 ; // add t h i s v a l u e t o a c c u m u l a t o r z = ( a == 0 ) ; // u p d a t e t h e s t a t u s b i t s n = (a < 0); break ; } Marcel Turcotte c a s e JN : { i f (n) { pc = opAddr ; } break ; } c a s e HLT : { h = true ; break ; // t h e o p e r a n d c o n t a i n s t h e a d d r e s s // o f n e x t i n s t r u c t i o n t o be e x e c u t e d ITI 1521. Introduction à l’informatique II FETCH-EXECUTE (suite) c a s e JZ : { if (z) { pc = opAddr ; } break ; } c a s e JMP : { pc = opAddr ; break ; } FETCH-EXECUTE (suite) c a s e DSP : { mar = opAddr ; rw = t r u e ; accessMemory ( ) ; // r e a d v a l u e d e s i g n a t e d by o p e r a n d // b r a n c h i f Z // i n o r d e r t o p r o d u c e a c l e a n o u t p u t add z e r o s t o t h e l e f t // i f n e c e s s a r y // b r a n c h i f N } S t r i n g smar = ” ” + mar ; w h i l e ( smar . l e n g t h ( ) < 4 ) { smar = ” 0 ” + smar ; S t r i n g smdr = ” ” + mdr ; i f ( mdr < 1 0 ) { smdr = ” ” + smdr ; } System . o u t . p r i n t l n ( ”memory l o c a t i o n ” + smar + ” c o n t a i n s ” + smdr ) ; break ; } d e f a u l t : System . o u t . p r i n t l n ( ” E r r o r − unknown opCode : ” + opCode ) ; } // s e t s H t o t r u e } } } } Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Résumé I Prochain cours Vous devez I I I Comprendre les types primitifs et références Maı̂triser les structures de contrôles J’ai présenté un modèle simplifié de l’architecture d’un ordinateur I J’ai simulé l’exécution d’un programme I Vous devriez comprendre la notion de variable dans le contexte de cette architecture simplifiée Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue I Retour sur les types primitifs et références I Appel par valeur I Portée Marcel Turcotte ITI 1521. Introduction à l’informatique II Prérequis Architecture des ordinateurs Appendice : Simulateur Java TC1101 Épilogue Ressources I E. B. Koffman and Wolfgang P. A. T. Data Structures : Abstraction and Design Using Java. John Wiley & Sons, 2e edition, 2010. P. Sestoft. Java Precisely. The MIT Press, second edition edition, August 2005. D. J. Barnes and M. Kölling. Objects First with Java : A Practical Introduction Using BlueJ. Pensez-y, n’imprimez ces notes de cours que si c’est nécessaire ! Prentice Hall, 4e edition, 2009. Marcel Turcotte ITI 1521. Introduction à l’informatique II Marcel Turcotte ITI 1521. Introduction à l’informatique II