Académique Documents
Professionnel Documents
Culture Documents
add a,b,c
R0 0
R1
…
R31
CP
LO
HI
07/11/2020 12:05 I.Abdesslem 4
les instructions. 4
Les registres du MIPS
f=(g+h)-(i+j);
Load
Processeur Mémoire
Store
Chargement mot :
lw $1,100($2)
$1 = Mémoire[$2+100]
Rangement mot :
sw $1,100($2)
Mémoire[$2+100] = $1
Adresse Donnée
0 10
4 45
Processeur 8 8456666
12 0
... ...
Numéro d’octet
3 2 1 0 Motorolla, MIPS, SPARC
Numéro d’octet
Intel 8086, VAX, Alpha
0 1 2 3
T[i]=h+T[i] ;
les instructions. 14
Exemple
if (i==j)
f=g+h;
else
f=g-h;
les instructions. 15
Exemple
While (stock[i]==k)
i=i+j;
les instructions. 16
Le format des instructions
Instruction de type R
31-26 25-21 20-16 15-11 10-6 5-0
0 rs rt rd decval fonct
Exemples :
les instructions. 18
Le format des instructions
Instruction de type I
Instruction de chargement ou de rangement
31-26 25-21 20-16 15-0
35ou43 rs rt adresse
6 bits 5 bits 5 bits 16 bits
Exemples :
lw $1,100($2) signification : $1=Mémoire($2+100)
35 2 1 100
Sw $1,100($2) signification : Mémoire($2+100)=$1
43 2 1 100
les instructions. 19
Le format des instructions
Instruction de branchement
31-26 25-21 20-16 15-0
4 ou 5 rs rt adresse
Exemples :
beq $1,$2,100 signification : si ($1=$2) aller en 100
4 1 2 100
les instructions. 20
Le format des instructions
• Instruction type J
op adresse
6 bits 26 bits
Exemple : J 2000
2 2000
6 bits 26 bits
31 26 21 16 11 6 0
R-type op rs rt rd decval funct add, sub
les instructions. 21
Modes d’adressage
1. Adressage par registre
31 26 21 16 11 6 0
op rs rt rd decval funct
registre
Opérande est un registre Add $4,$2,$3
2. Adressage indexé
op rs rt adresse
registre
+ Mémoire
lw $1,100($2)
Opérande se trouve à
l’emplacement mémoire
les instructions. 22
Modes d’adressage
3. Adressage immédiat
op rs rt immédiat
6 bits 5 bits 5 bits 16 bits
4. Adressage relatif à CP
op rs rt adresse
CP
les instructions. 24
L’utilisation de la mémoire
7fffffff
Segment de pile
Segment de
données
10000000
Segment de texte
00400000 Réservé
les instructions. 25
instructions arithmétiques
Instruction Exemple signification
add add $1,$2,$3 $1 = $2 + $3 exception possible
sous sub $1,$2,$3 $1 = $2 – $3 exception possible
add immediate addi $1,$2,100 $1 = $2 + 100 exception possible
add non signé addu $1,$2,$3 $1 = $2 + $3 pas d’exception
sous non signé subu $1,$2,$3 $1 = $2 – $3 pas d’exception
add imm. non sig addiu $1,$2,100 $1 = $2 + 100 pas d’exception
mul mult $2,$3 Hi, Lo = $2 x $3
Mul non signé multu$2,$3 Hi, Lo = $2 x $3
div div $2,$3 Lo = $2 ÷ $3, Lo = quotient
Hi = $2 mod $3 Hi = reste
div non signé divu $2,$3 Lo = $2 ÷ $3,
Hi = $2 mod $3
Move from Hi mfhi $1 $1 = Hi
Move from Lo mflo $1 $1 = Lo les instructions. 26
instructions logiques
Instruction Exemple Signification
and and $1,$2,$3 $1 = $2 ET $3
or or $1,$2,$3 $1 = $2 OR $3
xor xor $1,$2,$3 $1 = $2 XOR $3
nor nor $1,$2,$3 $1 = $2 NOR $3
and immediat andi $1,$2,10 $1 = $2 ET 10
or immediat ori $1,$2,10 $1 = $2 OU 10
xor immediat xori $1, $2,10 $1 = $2 XOR 10
shift left logical sll $1,$2,10 $1 = $2 << 10
shift right logical srl $1,$2,10 $1 = $2 >> 10
shift right arithm. sra $1,$2,10 $1 = $2 >> 10
shift left logical sllv $1,$2,$3 $1 = $2 << $3
shift right logical srlv $1,$2, $3 $1 = $2 >> $3
shift right arithm. srav $1,$2, $3 $1 = $2 >> $3
les instructions. 27
instructions de transfert de données
Instruction Comment
sw $3, 500($4) enreg. D’un mot en mémoire
sh $3, 502($2) enreg. D’un demi-mot
sb $2, 41($3) enreg. D’un octet
lui $1, 40 Load Upper Immediate (16 bits shifted left par 16)
LUI $1 0040
les instructions. 29
Langage machine et langage assembleur
les instructions. 30
MARS 4.5 ?
les instructions. 31
1-Instructions et pseudo-instructions
Les instructions (RISC) étant très élémentaires, on
ajoute des pseudo-instructions, qui n’existent pas
réellement pour le processeur, mais sont traduites
vers une suite d’instructions réelles par l’assembleur.
Par exemple,
les instructions. 32
1.Instructions et pseudo-instructions
les instructions. 33
1.Instructions et pseudo-instructions
les instructions. 34
1.Instructions et pseudo-instructions
Ou encore,
l i $t0,0xA400020
est expansée en
lui $at,0x0A40
ori $t0, $at,0x0020
les instructions. 35
1.Instructions et pseudo-instructions
Ou encore,
move $2,$3
est expansée en
add $2,$3,$0
les instructions. 36
2.Les commentaires :
Un commentaire sera toujours précédé par un ‘#’ .
# <commentaire>
Exemple :
#################
#-----Programme-----#
#################
les instructions. 37
3.Les chaines de caractères :
Exemple :
.asciiz “Hello world !\n”
newline(retour-chariot) \n
tabulation \t
les instructions. 38
4.Les directives de SPIM :
les instructions. 39
4.Les directives de SPIM :(Suite)
Exemples :
.data : déclaration du segment de données.
les instructions. 40
4.Les directives de SPIM :(Suite)
les instructions. 41
les instructions. 42
5.Les appels système :
$v0
$a0-$a3 syscall
$a0
$v0
les instructions. 43
4.Les appels système ( Suite ) :
Nom No Effet
print_int 1 imprime l'entier contenu dans a0
print_string 4 imprime la chaîne en a0 jusqu'à '\000'
read_int 5 lit un entier et le place dans v0
Lecture d’une chaîne
read_string 8 L’adresse du buffer en a0
La longeur de la chaîne en a1
exit 10 arrêt du programme en cours d'exécution
les instructions. 44
Un exemple complet 1: Factorielle (itératif)
.data
str1: .asciiz " Entrez un entier :"
str2: .asciiz "Sa factorielle est "
.text
main: li $v0 , 4 # system call code for print_str
la $a0 , str1 # address of string to print
syscall # print the string
les instructions. 45
Un exemple complet 1: Factorielle (itératif)
li $3 , 1 # initialisation du resultat
loop: blt $v0,1,sortie # Si $v0 <1, on sort
mul $3,$v0,$3
sub $v0,$v0,1
b loop # sinon , $3=$3*$v0 , $v0 =$v0 -1
les instructions. 46
Un exemple complet 1: Factorielle (itératif)
li $v0,1 # system call code for print_int
move $a0,$3 # integer to print
syscall # print the integer
les instructions. 47
Manipulation d’un tableau de mots
.data
tab1 : .word 10,20,30,40,50
tab2 : .word 0,0,0,0,0
somme: .word 0
.text
main: li $18,0
li $17,5
la $a0,tab1
la $a1,tab2+16
les instructions. 48