
UNIVERSITĂ PIERRE ET MARIE CURIE
C) RĂGLES SYNTAXIQUE
1. les noms de ïŹchiers :
Les noms des ïŹchiers contenant un programme source en langage dâassemblage
doivent ĂȘtre sufïŹxĂ© par « .s ». Exemple : monprogramme.s
2. les commentaires :
ils commencent par un #ou un;et sâachĂšvent Ă la ïŹn de la ligne courante.
Exemple :
###############################################
# Source Assembleur MIPS de la fonction memcpy
###############################################
.... ; sauve la valeur copiée dans la mémoire
3. les entiers :
une valeur entiÚre décimale est notée 250, une valeur entiÚre octale est notée 0372
(prĂ©ïŹxĂ©e par un zĂ©ro), et une valeur entiĂšre hĂ©xadĂ©cimale est notĂ©e 0xFA (prĂ©ïŹxĂ©e
par zĂ©ro suivi de x). En hexadĂ©cimal, les lettres de AĂ Fpeuvent ĂȘtre Ă©crites en
majuscule ou en minuscule.
4. les chaĂźnes de caractĂšres :
elles sont simplement entre guillemets, et peuvent contenir les caractĂšres dâĂ©chap-
pement du langage C.
Exemple : "Oh la jolie chaĂźne avec retour Ă la ligne\n"
5. les labels :
ce sont des mnémoniques correspondant à des adresses. Ces adresses peuvent
ĂȘtre soit des adresses de variables,soit des adresses de saut. Ce sont des chaĂźnes
de caractĂšres qui commencent par une lettre, majuscule ou minuscule, un $,un
_,ouun.. Ensuite, un nombre quelconque de ces mĂȘmes caractĂšres auquels on
ajoute les chiffres sont utilisĂ©s. Pour la dĂ©claration, le label doit ĂȘtre sufïŹxĂ© par
«:». Exemple : $LC12:
Pour y référer, on supprime le « :».
Exemple :
message:
.asciiz "Ceci est une chaĂźne de caractĂšres...\n"
.text
__start:
MIPS R3000 langage dâassemblage - 5 octobre 1998 page - 5
UNIVERSITĂ PIERRE ET MARIE CURIE
la $4, message ; adresse de la chaine dans $4
ori $2, $0, 4 ; code du âprint_stringâ dans $2
syscall
Attention : sont illĂ©gaux les labels qui ont le mĂȘme nom quâun mnĂ©monique de
lâassembleur ou quâun nom de registre.
6. les immédiats :
ce sont les opĂ©randes contenus dans lâinstruction. Ce sont des constantes. Ce sont
soit des entiers, soit des labels. Ces constantes doivent respecter une taille maxi-
mum qui est fonction de lâinstruction qui lâutilise : 16 ou 26 bits.
7. les registres :
le processeur MIPS possĂšde 32 registres accessibles au programmeur. Chaque
registre est connu par son numĂ©ro, qui varie entre 0 et 31, et est prĂ©ïŹxĂ© par un $.
Par exemple, le registre 31 sera notĂ© $31 dans lâassembleur.
En dehors du registre $0, tous les registres sont identiques du point de vue de la
machine. Lorsque le registre $0 est utilisé comme registre source dans une instruc-
tion, la valeur lue est toujours 0, et utiliser ce registre comme registre destination
dans une instruction ne modiïŹe pas sa valeur.
AïŹn de normaliser et de simpliïŹer lâĂ©criture du logiciel, des conventions dâutilisation
des registres sont dĂ©ïŹnies.
$1 rĂ©servĂ© Ă lâassembleur
$2 valeur de retour des fonctions
$3 registre temporaire a ne pas sauver
$4, ..., $7 registres Ă sauver
$8, ..., $15 registres temporaires Ă ne pas sauver
$16, ..., $23 registres Ă sauver
$24, ..., $27 registres réservés aux procédures noyau
$28 pointeur sur les variables globales
$29 pointeur de pile
$30 registre temporaire a ne pas sauver
$31 adresse de retour dâappel de fonction
8. les arguments :
si une instruction nĂ©cessite plusieurs arguments, comme par exemple lâaddition
entre deux registres, ces arguments sont séparés par des virgules. Dans une ins-
truction assembleur, on aura en général comme argument en premier le registre
dans lequel est mis le rĂ©sultat de lâopĂ©ration, puis ensuite le premier registre source,
puis enïŹn le second registre source ou une constante.
MIPS R3000 langage dâassemblage - 5 octobre 1998 page - 6