Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Produit scalaire de vecteurs
xoxo
Membre
Membre
Messages : 1
Enregistré en : mars 2017

#1 Message par xoxo » sam. 11 mars 2017 22:57

Bonsoir,

SVP j'ai deux vecteurs A et B de dimensions N de naturels codés sur 32 bits et SUM est une variable entier naturel codée également sur 32 bits.

Je veux coder en assembleur le produit scalaire de A et B où le résultat placé dans SUM. C'est ce que j'ai fait:

Code : Tout sélectionner


addi $s0
,$s0,0   //i=0
addi $s1,$zero,N   //i<N
addi $s11,$s11,0  //SUM=0
Looplw $s80($s5//le registre $s5 contient adresse de A
lw $s90($s6//le registre $s6 contient adresse de B
mul $s10,$s8,$s9  //A[i]*B[i]
add $s11,$s11,$s10  //SUM+=A[i]*B[i]
addi $s8,$s8,//registre incrémenté de la taille d'un mot et contient adresse du suivant
addi $s9,$s9,4
addi $s0
,$s0,//i++
bne $s0,$s1Loop

Déjà je ne sais pas si le code est juste.

Sinon ma question est : quelle sera la différence au niveau du code si c'est pour un processeur monocycle, multicycle ou pipeline? Egalement pour un pipeline sans/avec prédiction de branchement?

Merci !!

Produit scalaire de vecteurs
Claudius
Avatar de l’utilisateur
Amateur
Amateur
Messages : 116
Enregistré en : septembre 2015

#2 Message par Claudius » dim. 12 mars 2017 18:46

Bonsoir,

Déjà, si le PIC que tu comptes utiliser propose des instructions DSP (ce qui est fortement probable), ce que tu veux faire en 2 instructions et qui sont les plus couteuses en nombre de cycles et qui sont:

Code : Tout sélectionner

mul $s10,$s8,$s9    //A[i]*B[i]
add $s11,$s11,$s10  //SUM+=A[i]*B[i]

se fait en une et une seule instruction DSP du type Multiply–accumulate operation.

S'agissant de ta question "... quelle sera la différence au niveau du code ...", j'avoue ne pas comprendre ?!.


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités