7.3. EXERCICES 135
inc 4,%l1
inc 4,%l5
ba mer25
dec %i1
mer30:
ret
restore
7. L’instruction de branchement inconditionnel
ba adr
doit ˆetre remplac´ee par les instructions suivantes si, par rapport `a
l’adresse de l’instruction de branchement ba, l’adresse symbolique adr
ne permet pas d’obtenir un d´eplacement en mots tenant sur 19 bits :
setx adr,%l7,%l0
jmp %l0
nop
Si l’instruction de branchement est un branchement conditionnel, par
exemple
ble %xcc,adr
par quelle suite d’instructions cette instruction devra-t-elle ˆetre rem-
plac´ee par le programmeur, si ce dernier estime que le d´eplacement
correspondant est trop grand pour tenir sur 19 bits ?
Si l’adresse num´erique qui correspond `a l’adresse symbolique adr est
0X204C lors de l’assemblage du programme et que l’adresse num´e-
rique de l’instruction de branchement d´etermin´ee par l’assembleur
est 0X31A4, donnez l’instruction machine (la suite de 32 bits) corres-
pondant `a l’instruction ba adr sachant que
– le code cond pour le branchement inconditionnel est 10002,
– le code pour xcc est 102,
– le format des instructions de branchement est
0 0 0 1 pccconda0 déplacement
8. ´
Ecrivez un sous-programme en langage d’assemblage qui effectue le
produit scalaire de deux vecteurs. Le sous-programme accepte quatre
param`etres : l’adresse du premier vecteur (%o0), la taille du premier
vecteur (%o1), l’adresse du deuxi`eme vecteur (%o2) et la taille du
deuxi`eme vecteur (%o3).
9. ´
Ecrivez un programme en langage d’assemblage qui effectue la lecture
de deux vecteurs et qui affiche la valeur de leur produit scalaire.