ITI Introduction à l informatique II

Documents pareils
Conception de circuits numériques et architecture des ordinateurs

ASR1 TD7 : Un microprocesseur RISC 16 bits

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Architecture des ordinateurs

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

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Exécution des instructions machine

Rappels d architecture

as Architecture des Systèmes d Information

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

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

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

Architecture matérielle des systèmes informatiques

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Cours 1 : La compilation

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Cours 3 : L'ordinateur

Programmer en JAVA. par Tama

Java et les bases de données

Cours Informatique 1. Monsieur SADOUNI Salheddine

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Java Licence Professionnelle CISII,

Génération de code binaire pour application multimedia : une approche au vol

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Concept de machine virtuelle

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

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

TP1 : Initiation à Java et Eclipse

Éléments de programmation et introduction à Java

Annexe : La Programmation Informatique

Programmation en Java IUT GEII (MC-II1) 1

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Machines virtuelles Cours 1 : Introduction

td3a correction session7az

IV- Comment fonctionne un ordinateur?

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

Exercices sur SQL server 2000

Une introduction à Java

Éléments d'architecture des ordinateurs

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

Compilation (INF 564)

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

Licence Sciences et Technologies Examen janvier 2010

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

UE C avancé cours 1: introduction et révisions

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

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

Synchro et Threads Java TM

NEC Virtual PC Center

Point sur les solutions de développement d apps pour les périphériques mobiles

Développement Logiciel

Architecture des ordinateurs Introduction à l informatique

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Tests de montée en charge avec Tsung

Cours 1 : Qu est-ce que la programmation?

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

CM2 L architecture MIPS32

Notions fondamentales du langage C# Version 1.0

Création et Gestion des tables

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

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)

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Votre premier projet Android

Gestion mémoire et Représentation intermédiaire

Chapitre I Notions de base et outils de travail

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Architecture des Ordinateurs. Partie II:

Introduction à l informatique en BCPST

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

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

Microprocesseur + Logiciel

Derrière toi Une machine virtuelle!

Conférence sur les microcontroleurs.

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

NanoSense. Protocole Modbus de la sonde Particules P4000. (Version 01F)

Chapitre VI- La validation de la composition.

Cheque Holding Policy Disclosure (Banks) Regulations. Règlement sur la communication de la politique de retenue de chèques (banques) CONSOLIDATION

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

INITIATION AU LANGAGE JAVA

Cours Informatique Master STEP

Pourquoi R devient incontournable en recherche, enseignement et développement

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Vanilla : Virtual Box

Introduction à MapReduce/Hadoop et Spark

Approche Contract First

Leçon 1 : Les principaux composants d un ordinateur

Claude Delannoy. 3 e édition C++

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

OpenPaaS Le réseau social d'entreprise

NBS System et Zend Technologies Découvrez la scalabilité sans limite pour vos applications PHP grâce au Zend Cloud

Transcription:

(contributions de R. Holte) École d ingénierie et de technologie de l information Université d Ottawa Version du 8 janvier 2012. Pensez-y, n imprimez ces notes de cours que si c est nécessaire!

Revue Objectifs : 1. Connaître les attentes face à Java 2. Introduction à l architecture des ordinateurs et l exécution d un programme Lectures : Pages 597 631 de E. Koffman and P. Wolfgang.

Prérequis Vous devez maîtriser ces concepts : Utilisation des types prédéfinis de Java : y compris les tableaux et les chaînes de caractères

Prérequis Vous devez maîtriser ces concepts : Utilisation des types prédéfinis de Java : y compris les tableaux et les chaînes de caractères Structures de contrôles : telles que if, for, while... ;

Prérequis Vous devez maîtriser ces concepts : Utilisation des types prédéfinis de Java : y compris les tableaux et les chaînes de caractères Structures de contrôles : telles que if, for, while... ; 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) ;

Prérequis Vous devez maîtriser ces concepts : Utilisation des types prédéfinis de Java : y compris les tableaux et les chaînes de caractères Structures de contrôles : telles que if, for, while... ; 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) ; Comment éditer, compiler et exécuter un programmes Java.

Pourquoi Java?

Pourquoi Java? 1 Java 18% 2 C 18% 3 C++ 10% 4 PHP 9% 5 Basic 6% 6 C# 5% 7 Python 4% 8 Perl 3% 9 Objective-C 3% 10 Delphi 2% TIOBE Programming Community Index

Pourquoi Java? Java partage le premier rang avec C des langages les plus utilisés, pourtant, je ne connais pas d applications Java.

Pourquoi Java? 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? La partie serveur des applications et services Web Applications mobiles (téléphones portables)

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. Slashdot 3 janvier 2012 http ://bit.ly/xsk5pn

Pourquoi Java? La programmation en C demande une grande discipline (gestion de la mémoire, manipulation de pointeurs... )

Pourquoi Java? La programmation en C demande une grande discipline (gestion de la mémoire, manipulation de pointeurs... ) Java est un bon véhicule pour l enseignement (interface, héritage simple, types génériques... )

Pourquoi Java? La programmation en C demande une grande discipline (gestion de la mémoire, manipulation de pointeurs... ) Java est un bon véhicule pour l enseignement (interface, héritage simple, types génériques... ) Lorsqu on maîtrise Java, l apprentissage des langages orientés objet ou impératifs est simple

Exécution d un programme Quels sont les deux principaux modes d exécution?

Exécution d un programme Quels sont les deux principaux modes d exécution? Program (byte-code) Compiled program (binary code) Interpreter (Virtual machine)

Compilation et exécution d un programme Java > javac MyProgram.java Produira MyProgram.class (code-octet byte-code)

Compilation et exécution d un programme Java > javac MyProgram.java Produira MyProgram.class (code-octet byte-code) > java MyProgram Ici, java c est la Machine Java Virtuelle (JVM).

Compilation et exécution d un programme Java > javac MyProgram.java 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) Interpreter (Virtual machine)

Motivation 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).

Motivation 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). Cette présentation a pour but de présenter un modèle simplifié de l exécution des programmes au niveau du matériel.

Motivation 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). Cette présentation a pour but de présenter un modèle simplifié de l exécution des programmes au niveau du matériel. La maîtrise du concept de variables références est essentielle à la réussite de ce cours!

TC1101 Présentation d un modèle simplifié d un microprocesseur et de son langage d assemblage. MAR MDR Main memory R/W OpCode OpAddr H PC OpAddr L A Control H Z N ALU

modèle de von Neumann L architecture des ordinateurs modernes suit le modèle proposé par (John) von Neumann (1945). mémoire : contient les instructions et les données unité de traitement : effectue les opérations arithmétiques et logiques unité de contrôle : interprète les instructions memory Processing Unit

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) ; 0 1 1 0...

Modèle de la mémoire 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 2 1 0

Modèle de la mémoire 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 3 2 1 0

Central Processing Unit (CPU), µ-processeur 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 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

Mnémoniques, opcodes, description LDA 91 load x STA 39 store x CLA 08 clear (a=0, z=vrai, n=faux) INC 10 incrémente accumulateur (modifie z et n) ADD 99 ajoute x à l accumulaeur (modifie z et n) SUB 61 retranche x de l accumulateur (modifie z et n) JMP 15 branchement inconditionnel vers x JZ 17 branchement sur x si z==vrai JN 19 branchement sur x si n==vrai DSP 01 affiche la valeur se trouvant à l adresse x HLT 64 fin

Compilation 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.

Compilation 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

Division par soustractions successives [1] CLA STA Quot [2] LDA X [3] SUB Y [4] JN [7] [5] STA Temp LDA Quot INC STA Quot LDA Temp [6] JMP [3] [7] ADD Y [8] STA Rem [9] DSP Quot [10] DSP Rem [11] HLT X BYTE 25 Y BYTE 07 Quot BYTE 00 Rem BYTE 00 Temp BYTE 00

Division : code machine [1] CLA STA Quot [2] LDA X [3] SUB Y [4] JN [7] [5] STA Temp LDA Quot INC STA Quot LDA Temp [6] JMP [3] [7] ADD Y [8] STA Rem [9] DSP Quot [10] DSP Rem [11] HLT X BYTE 25 Y BYTE 07 Quot BYTE 00 Rem BYTE 00 Temp BYTE 00 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

Division : code machine 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

Registres Résident dans le processeur, très grande vitesse d accès

Registres Résident dans le processeur, très grande vitesse d accès On y accède à l aide d un nom logique plutôt qu une adresse (MAR, MDR,... )

Registres Résident dans le processeur, très grande vitesse d accès On y accède à l aide d un nom logique plutôt qu une adresse (MAR, MDR,... ) 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 ;

Registres Résident dans le processeur, très grande vitesse d accès On y accède à l aide d un nom logique plutôt qu une adresse (MAR, MDR,... ) 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 ;

Registres Résident dans le processeur, très grande vitesse d accès On y accède à l aide d un nom logique plutôt qu une adresse (MAR, MDR,... ) 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 ; Leur taille varie selon leur fonction.

Main memory MAR PC IR MDR R0 General Registers Rn Control ALU

Interface entre la mémoire et l UCT Les bits ne sont pas transférés un à la fois, mais en parallèle On appelle bus, l ensemble des fils (lignes) qui permettent la communication entre les unités On distingue 3 types de bus : bus de données, bus d adressage et bus de contrôle Le nombre de lignes (fils) détermine la largeur du bus.

... MAR Main memory... MDR R/W Control Unit

Bus d adressage La largeur du bus détermine la taille maximale de la mémoire Si la largeur du bus est de 16 lignes, les adresses sont constituées de 16 bits, il y a donc 2 16 = 65536 adresses différentes, s il y a 32 lignes, les adresses sont constituées de 32 bits, il y donc 2 32 4 10 9 adresses différentes Le registre adresse mémoire (MAR) aura 32 bits afin de stocker une adresse

Bus de données La taille du bus détermine le nombre de bits transférés en un seul accès (depuis/vers la mémoire).

Bus de contrôle (lignes) 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

Transfert vers la mémoire Afin de transférer une valeur v du processeur vers l adresse x de la mémoire : 1. mettre v dans le registre de donnée (MDR), 2. mettre x dans le registre d adresse (MAR), 3. mettre le bit de statut RW à faux, 4. activer la ligne de contrôle access memory.

Transfert depuis la mémoire Afin de transférer une valeur de l adresse x (en mémoire) vers le processeur : 1. mettre la valeur x dans le registre d adresse (MAR), 2. mettre le bit de statut RW à vrai, 3. activer la ligne de contrôle access memory 4. le registre de donnée (MDR) contient maintenant une copie de la valeur se trouvant à l adresse x de la mémoire.

Cycle transfert-exécute 1. transfert : 1.1 transfert de l OPCODE, 1.2 incrémente PC, 2. selon OPCODE alors transfert opérande : 2.1 transfert premier octet, 2.2 incrémente PC, 2.3 transfert second octet, 2.4 incrémente PC, 3. exécute. Fetch-Execute Cycle.

Exemple Afin d ajouter 1 à la valeur x et de sauver le résultat dans y (y = x + 1).

Exemple Afin d ajouter 1 à la valeur x et de sauver le résultat dans y (y = x + 1). Charger la valeur de x dans l accumulateur, registre A. Incrémenter la valeur de l accumulateur, Sauver la valeur qui se trouve dans l accumulateur à l adresse y.

Exemple Afin d ajouter 1 à la valeur x et de sauver le résultat dans y (y = x + 1). Charger la valeur de x dans l accumulateur, registre A. Incrémenter la valeur de l accumulateur, Sauver la valeur qui se trouve dans l accumulateur à l adresse y. Ceci implique 3 instructions machines : 91 : load 10 : increment 39 : store

Exemple Afin d ajouter 1 à la valeur x et de sauver le résultat dans y (y = x + 1). Charger la valeur de x dans l accumulateur, registre A. Incrémenter la valeur de l accumulateur, 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

Simulateur Java TC1101 Cette section contient des informations supplémentaires au sujet de ce microprocesseur. MAR MDR Main memory R/W OpCode OpAddr H PC OpAddr L A Control H Z N ALU

Simulateur Java TC1101 Le Simulateur Java TC1101 joue un rôle semblable à la Machine Java Virtuelle (JVM) l interpréteur à droite il partage aussi plusieurs caractéristiques. Program (byte-code) Compiled program (binary code) Interpreter (Virtual machine)

Mnemoniques, opcodes, descriptions LDA 91 load x STA 39 store x CLA 08 clear (a=0, z=vrai, n=faux) INC 10 incrémente accumulateur (modifie z et n) ADD 99 ajoute x à l accumulaeur (modifie z et n) SUB 61 retranche x de l accumulateur (modifie z et n) JMP 15 branchement inconditionnel vers x JZ 17 branchement sur x si z==vrai JN 19 branchement sur x si n==vrai DSP 01 affiche la valeur se trouvant à l adresse x HLT 64 fin

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) ;

Description des unités fonctionnelles du TC-1101 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 ;

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 l état courant de l accumulateur ;

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.

Simulateur TC1101 utilise des constantes afin de representer les OPCODES ; des variables de classe représentent la mémoire et les registres ; la méthode accessmemory() simule le transfert des données entre le processeur et la mémoire ; 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.

Constantes pour représenter les OPCODES import j a v a. i o. ; import SimIO ; // r e a d data 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 to 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 to 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 to 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 to 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 branch go to p u b l i c s t a t i c f i n a l i n t JMP = 1 5 ; // branch to address 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 ; // branch to address 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 to 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 p r i v a t e s t a t i c f i n a l 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 p r i v a t e s t a t i c i n t a ; // opcode 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 operand 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 Zero 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 data 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/ Write. Read = True ; Write = False p r i v a t e s t a t i c boolean rw ;

Chargement du programme en langage machine public s t a t i c void l o a d ( S t r i n g f i l e n a m e ) throws I O E x c e p t i o n { i n t [ ] v a l u e s ; i n t i ; i n t a d d r e s s = 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 ( ) ) { values = SimIO. readcommentedintegerline ( ) ; f o r ( i = 0 ; i < va lue s. length ; i++) { memory [ a d d r e s s ] = v a l u e s [ i ] ; a d d r e s s = a d d r e s s + 1 ; } } }

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 ( ) { i f ( rw ) { // rw=true s i g n i f i e s r e a d // copy t h e v a l u e from memory to p r o c e s s o r } e l s e { mdr = memory [ mar ] ; // rw=f a l s e s i g n i f i e s w r i t e // copy a v a l u e from t h e p r o c e s s o r to 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 p u b l i c s t a t i c v o i d run ( ) { pc = 0 ; // a l w a y s s t a r t s a t z e r o h = f a l s e ; // re 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 incremented rw = true ; accessmemory ( ) ; opcode = mdr ;

FETCH-EXECUTE (suite) // i f t h e opcode i s odd, t h i s i n s t r u c t i o n // n e c e s s i t a t e s an operand i f ( ( opcode % 2) == 1) { mar = pc ; pc = pc + 1 ; // i n c r e m e n t pc rw = true ; 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 = true ; accessmemory ( ) ; // read low part of t h i s address opaddr = 100 opaddr + mdr ; // put h i g h+low t o g e t h e r }

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 ) { case LDA : { mar = opaddr ; // r e a d v a l u e d e s i g n a t e d by operand rw = true ; accessmemory ( ) ; a = mdr ; // put t h i s value into accumulator break ; }

FETCH-EXECUTE (suite) case STA : { mdr = a ; // put 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 ; } case CLA : { a = 0 ; // c l e a r = s e t a c c u m u l a t o r to z e r o z = t r u e ; // a l s o s e t s s t a t u s b i t Z and N n = f a l s e ; break ; }

FETCH-EXECUTE (suite) case INC : { a = ( a + 1) % 1 0 0 ; // i n c r e m e n t = add 1 to a c c u m u l a t o r z = ( a == 0 ) ; // a f f e c t t h e s t a t u s b i t s n = ( a < 0 ) ; break ; } case ADD: { mar = opaddr ; // r e a d v a l u e d e s i g n a t e d by operand rw = true ; accessmemory ( ) ; a = ( a + mdr ) % 1 0 0 ; // add t h i s value to accumulator z = ( a == 0 ) ; // update t h e s t a t u s b i t s n = ( a < 0 ) ; break ; }

FETCH-EXECUTE (suite) case SUB : { mar = opaddr ; // r e a d v a l u e d e s i g n a t e d by operand rw = true ; accessmemory ( ) ; a = ( a mdr ) % 100; // 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 ) ; // update t h e s t a t u s b i t s n = ( a < 0 ) ; break ; } case JMP: { pc = opaddr ; // t h e operand c o n t a i n s t h e a d d r e s s break ; // o f n e x t i n s t r u c t i o n to be e x e c u t e d }

FETCH-EXECUTE (suite) case JZ : { i f ( z ) { // branch i f Z pc = opaddr ; } break ; } case JN : { // branch i f N i f ( n ) { pc = opaddr ; } break ; } case HLT : { h = t r u e ; // s e t s H to t r u e break ; }

FETCH-EXECUTE (suite) case DSP : { mar = opaddr ; // r e a d v a l u e d e s i g n a t e d by operand rw = true ; accessmemory ( ) ; // in order to produce a clean output add zeros to the l e f t // i f n e c e s s a r y 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 < 10) { smdr = + smdr ; } System. out. 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. out. p r i n t l n ( E r r o r unknown opcode : + opcode ) ; } } } }

Résumé Vous devez

Résumé Vous devez Comprendre les types primitifs et références

Résumé Vous devez Comprendre les types primitifs et références Maîtriser les structures de contrôles

Résumé Vous devez 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

Résumé Vous devez 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 J ai simulé l exécution d un programme

Résumé Vous devez 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 J ai simulé l exécution d un programme Vous devriez comprendre la notion de variable dans le contexte de cette architecture simplifiée

Prochain cours Retour sur les types primitifs et références

Prochain cours Retour sur les types primitifs et références Appel par valeur

Prochain cours Retour sur les types primitifs et références Appel par valeur Portée

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. Prentice Hall, 4e edition, 2009.

Pensez-y, n imprimez ces notes de cours que si c est nécessaire!