Professional Documents
Culture Documents
Compilation
(INF 564)
Introduction & architecture MIPS
Francois Pottier
10 decembre
2014
Francois Pottier
Presentation
du cours Le processeur MIPS Programmation du MIPS
Presentation
du cours
Le processeur MIPS
Programmation du MIPS
Francois Pottier
Presentation
du cours Le processeur MIPS Programmation du MIPS
Francois Pottier
Presentation
du cours Le processeur MIPS Programmation du MIPS
Apercu du cours
En 9 seances,
ecrivons
un compilateur dun langage source
Francois Pottier
Presentation
du cours Le processeur MIPS Programmation du MIPS
pour ecrire
un programme complexe et el
dans un langage
egant
pour decouvrir
des techniques et algorithmes dusage gen
:
eral
Francois Pottier
Presentation
du cours Le processeur MIPS Programmation du MIPS
Attention !
Un compilateur, ...
I
I
Francois Pottier
Presentation
du cours Le processeur MIPS Programmation du MIPS
Texte source
Texte cible
Achage
Pseudo-Pascal
ASM
Slection d'instructions
UPP
LIN
Cration du graphe
de flot de contrle
Linarisation du graphe
de flot de contrle
RTL
ERTL
Explicitation des
conventions d'appel
Francois Pottier
LTL
Presentation
du cours Le processeur MIPS Programmation du MIPS
Plan du cours
1. Architecture MIPS.
2. Syntaxe, semantique
et interpretation
de Pseudo-Pascal.
5. Creation
du graphe de flot de controle (de UPP vers RTL).
Francois Pottier
Presentation
du cours Le processeur MIPS Programmation du MIPS
Presentation
du cours
Le processeur MIPS
Programmation du MIPS
Francois Pottier
Presentation
du cours Le processeur MIPS Programmation du MIPS
Francois Pottier
10
Presentation
du cours Le processeur MIPS Programmation du MIPS
Le processeur
memoire.
Il
dispose
egalement
dun
petit
nombre
demplacements
memoire
plus rapides, appeles
registres.
Les instructions que doit executer
le processeur sont elles-memes
stockees
en memoire.
Un registre special
nomme pc contient ladresse
De facon rep
et
ee,
le processeur lit linstruction stockee
a` ladresse pc
(fetch), lanalyse (decode), puis linterpr`ete (execute), ce qui peut avoir
pour effet de modifier certains registres (dont pc) et/ou la memoire.
Francois Pottier
11
Presentation
du cours Le processeur MIPS Programmation du MIPS
CISC et RISC
Les principales differences
entre processeurs concernent leur jeu
dinstructions.
I
poss`edent en gen
peu de registres, dont certains sont
eral
reserv
es
gen
de nombreux registres, lesquels sont uniformes.
eral
Francois Pottier
12
Presentation
du cours Le processeur MIPS Programmation du MIPS
La memoire
La memoire
est un grand tableau dont les indices sont les adresses.
(8 bits).
Cependant, les lectures et ecritures
en memoire
se font sur des
quantites
plus importantes que loctet. Le mot est la
de memoire
Francois Pottier
13
Presentation
du cours Le processeur MIPS Programmation du MIPS
La memoire
virtuelle
virtuelles.
La MMU est utilisee
par le syst`eme dexploitation pour donner a`
chaque processus lillusion quil dispose de toute la memoire.
Francois Pottier
14
Presentation
du cours Le processeur MIPS Programmation du MIPS
15
La memoire
vue depuis un processus
Pile (stack)
Paramtres de fonctions
Variables locales
sp
Tas (heap)
Donnes
Variables globales
Code
gp
pc
Francois Pottier
Presentation
du cours Le processeur MIPS Programmation du MIPS
r0 a` r31. Le
registre r0, appele zero, contient toujours la valeur 0, meme apr`es
une ecriture.
Les 31 autres registres sont interchangeables.
Neanmoins,
ces 31 registres peuvent e tre, par convention :
reserv
es
consider
es
comme sauvegardes
par lappele (s0-s7) ou non
(t0-t9) lors des appels de fonctions ;
reserv
es
reserv
es
reserv
es
16
Presentation
du cours Le processeur MIPS Programmation du MIPS
Francois Pottier
17
Presentation
du cours Le processeur MIPS Programmation du MIPS
dest , offset(base)
Francois Pottier
18
Presentation
du cours Le processeur MIPS Programmation du MIPS
Ecriture
(store word) :
sw
source , offset(base)
Francois Pottier
19
Presentation
du cours Le processeur MIPS Programmation du MIPS
Francois Pottier
20
Presentation
du cours Le processeur MIPS Programmation du MIPS
Ecriture
dune constante (Load Immediate) :
li
dest , constant
Francois Pottier
21
Presentation
du cours Le processeur MIPS Programmation du MIPS
move
dest , source
neg
dest , source
22
Presentation
du cours Le processeur MIPS Programmation du MIPS
Addition (Add) :
add
On a egalement
sub, mul, div.
On a egalement
sle, sgt, sge, seq, sne.
Francois Pottier
23
Presentation
du cours Le processeur MIPS Programmation du MIPS
(handler) prealablement
installe.
Francois Pottier
24
Presentation
du cours Le processeur MIPS Programmation du MIPS
Francois Pottier
25
Presentation
du cours Le processeur MIPS Programmation du MIPS
Saut inconditionnel
Saut (Jump) :
j
address
donnee
que lassembleur
sous forme symbolique par une etiquette
Francois Pottier
26
Presentation
du cours Le processeur MIPS Programmation du MIPS
Saut conditionnel
I
source , address
On a egalement
bgez, blez, bltz.
On a egalement
bne.
Francois Pottier
27
Presentation
du cours Le processeur MIPS Programmation du MIPS
address
Francois Pottier
28
Presentation
du cours Le processeur MIPS Programmation du MIPS
target
Francois Pottier
29
Presentation
du cours Le processeur MIPS Programmation du MIPS
dans
les registres a0-a3. Un resultat
peut e tre renvoye dans le
registre v0.
Francois Pottier
30
Presentation
du cours Le processeur MIPS Programmation du MIPS
des donnees
ou des instructions.
Francois Pottier
31
Presentation
du cours Le processeur MIPS Programmation du MIPS
Instructions et pseudo-instructions
Certaines des instructions prec
ne sont en fait pas
edentes
implantees
par le processeur, mais traduites par lassembleur en
sequences
dinstructions plus simples.
Par exemple,
blt $t0, $t1, address
est expansee
en
slt $at, $t0, $t1
bne $at, $zero , address
Francois Pottier
32
Presentation
du cours Le processeur MIPS Programmation du MIPS
Instructions et pseudo-instructions
Ou encore,
li
$t0, 400020
est expansee
en
lui $at, 6
ori $t0, $at, 6804
Pour nous, la distinction entre instructions et pseudo-instructions
naura pas dimportance.
Francois Pottier
33
Presentation
du cours Le processeur MIPS Programmation du MIPS
.data
hello :
.asciiz hello world\n
.text
main :
l i $v0, 4
la $a0, hello
syscall
jr $ra
#
#
#
#
#
#
#
#
#
Des donnees
suivent.
L adresse de la donnee
qui suit.
Chane terminee
par un z ero.
Francois Pottier
34
Presentation
du cours Le processeur MIPS Programmation du MIPS
Execution
dun programme par spim
cette procedure
rend la main.
Francois Pottier
35
Presentation
du cours Le processeur MIPS Programmation du MIPS
Execution
dun programme par spim
En realit
debute
au label start et termine lorsque le
e,
lexecution
Francois Pottier
36
Presentation
du cours Le processeur MIPS Programmation du MIPS
Execution
dun programme par mars
start.
ecrivez
votre programme. Vous pourrez lassembler et lexecuter
sans
Francois Pottier
37
Presentation
du cours Le processeur MIPS Programmation du MIPS
Presentation
du cours
Le processeur MIPS
Programmation du MIPS
Francois Pottier
38
Presentation
du cours Le processeur MIPS Programmation du MIPS
triviale.
Francois Pottier
39
Presentation
du cours Le processeur MIPS Programmation du MIPS
Tests
Le fragment de Pascal suivant :
if t1 < t2 then t3 := t1 else t3 := t2
peut e tre traduit en assembleur MIPS comme ceci :
blt $t1, $t2, then
move $t3, $t2
j
done
then :
move $t3, $t1
done :
# t3 := t2
# saut vers l etiquette
done
# t3 := t1
# suite du programme
Francois Pottier
40
Presentation
du cours Le processeur MIPS Programmation du MIPS
Boucles
Le fragment de Pascal suivant :
t2 := 0;
while t1 > 0 do begin t2 := t2 + t1; t1 := t1 1 end
peut e tre traduit en assembleur MIPS comme ceci :
l i $t2, 0
while :
blez $t1, done
add $t2, $t2, $t1
sub $t1, $t1, 1
j
while
done :
#
#
#
#
#
#
#
t2 := 0
debut
de la boucle
t2 := t2 + t1
t1 := t1 1
retour vers l etiquette
while
suite du programme
Francois Pottier
41
Presentation
du cours Le processeur MIPS Programmation du MIPS
Fonctions
La fonction Pascal suivante :
function succ (x : integer) : integer ;
begin
succ := x + 1
end;
peut e tre traduite en assembleur MIPS comme ceci :
succ :
addi $v0, $a0, 1
jr $ra
# retour a` l appelant
42
Presentation
du cours Le processeur MIPS Programmation du MIPS
Convention dappel
La convention dappel regit
la communication entre appelant et appele
convention proposee
par le fabricant est :
I
Francois Pottier
43
Presentation
du cours Le processeur MIPS Programmation du MIPS
Fonctions recursives
Francois Pottier
44
Presentation
du cours Le processeur MIPS Programmation du MIPS
Fonctions recursives
fact0
$a0, 1
$a0, $v0
# a0 := a0 1
# appel r ecursif
; l i t a0 et ecrit
dans v0
# v0 := a0 v0
# retour a` l appelant
# v0 := 1
# retour a` l appelant
Francois Pottier
45
Presentation
du cours Le processeur MIPS Programmation du MIPS
Fonctions recursives
peuvent e tre
actifs simultanement
:
a0
a0 1
a0 a0 1
...
fact
fact
v0 a0 v0
v0 a0 v0
Lappel recursif
modifie a0 en fait, il en detruit
le contenu. Or,
Francois Pottier
46
Presentation
du cours Le processeur MIPS Programmation du MIPS
La pile
Par convention, la pile grandit dans le sens des adresses
decroissantes.
Le registre sp pointe vers le sommet de la pile,
cest-a-dire
vers le dernier mot alloue.
`
Francois Pottier
47
Presentation
du cours Le processeur MIPS Programmation du MIPS
48
La version assembleur
Voici le code produit par une version de notre compilateur :
f17 :
addiu
sw
sw
move
blez
addiu
jal
mul
$sp,
$ra ,
$s0,
$s0,
$s0,
$a0,
f17
$v0,
f28 :
lw
lw
addiu
jr
f4 :
li
j
$sp, 8
4($sp)
0($sp)
$a0
f4
$s0, 1
$ra , 4($sp)
$s0, 0($sp)
$sp, $sp, 8
$ra
$v0, 1
f28
$s0, $v0
Francois Pottier