ITI 1521. Introduction à l`informatique II=1Pensez

publicité
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
Téléchargement