Espace m´
emoire
La zone de m´
emoire de donn´
ees se d´
eclare avec le mot-clef .data.
C’est l`
a que l’on stocke les “variables”.
Le “type” des variables renseigne uniquement sur la place en
m´
emoire de chaque variable : ce ne sont en r´
ealit´
e que des
adresses.
Le “type” .space indique simplement que l’on r´
eserve le
nombre d’octet indiqu´
es (sans les mettre `
a z´
ero).
.data
c.byte ’a’ ; octet
n1 .halfword 26 ; 2 octets
n2 .word 353 ; 4 octets
tab .space 40
Programme
La zone m´
emoire du programme est signal´
ee par le mot-clef .text.
.text
li $t1,0
li $t2,100
saut: add $t1,$t1,t2
addi $t2,$t2,-1
bgt $t2,$0,saut
On y lit :
des instructions,
des points d’accroche (saut), c’est-`
a-dire des adresses dans le code.
Chargement, sauvegarde
Les instructions commenc¸ant par
lchargent (load) dans les registres,
ssauvegardent (save) un registre en m´
emoire.
Le caract`
ere suivant donne la taille (word ou byte), ou bien
immediate pour une valeur directe.
lw $t0,a; charge a dans t0
lb $t1,b; charge le premier octet de b dans t1
sw $t0,a; enregistre t0 dans a
li $t0,5; charge 5 dans t0
L’instruction move se contente de copier les registres.
move $t0,$t1 ; t0 := t1
Op´
erations
La forme g´
en´
erale des instructions binaires est OP $d $s $t qui veut
dire “le registre $d prend la valeur $s OP $t”.
OP peut prendre les valeurs suivantes :
add, sub,
and, or, xor, op´
erations bool´
ennes bit-`
a-bit.
Certains ont ´
egalement la variante OPi, o `
u$t est remplac´
e par une
valeur directe.
add $t0,$t1,$t2 ;t0=t1+t2
ori $t0,$t1,1; met le bit de poids faible de
; t1 a 1, puis le stocke dans t0