Calcul vectoriel en Assembleur

samedi 22 décembre 2012Par : CyrIng

La calculatrice est enrichie des opérations vectorielles.

Suivant les spécifications du processeur ARM, trois modes de fonctionnement sont possibles :

  1. scalaire
  2. vectoriel
  3. mixte

Notre choix se porte sur le mode mixte avec les hypothèses suivantes :

  • une longueur de vecteur supérieure à 1
  • le premier opérande est un vecteur [a1 ... an]
  • le second opérande est soit un vecteur [b1 ... bn] soit un scalaire b
  • le résultat de l’opération est un vecteur [c1 ... cn]

Mise en œuvre avec le coprocesseur vfp :

  • pour une longueur de vecteur égale à 4 , le registre FPSCR est chargé avec ( 4 – 1 ) × ²↑16
  • les registres s8, s9, s10 et s11 sont chargés du vecteur [a1 a2 a3 a4]
  • si le second opérande est un vecteur alors les registres s20, s21, s22, s23 sont chargés depuis [b1 b2 b3 b4] ;
    sinon, si l’opérande est un scalaire alors il doit être chargé dans le registre s0
  • Les registres s12, s13, s14 et s15, résultats de l’opération, sont déversés dans le vecteur [c1 c2 c3 c4]