2009-02-12 7 views
2

J'apprends l'assemblage SPARC et je dois créer un script qui extrait un champ d'un registre. Le script accepte 3 valeurs, le nombre initial, la position de début du champ, la longueur du champ.
Il ne peut pas utiliser de fonctions de décalage, mais il peut utiliser multiplier et diviser.
Je souffre actuellement d'un virus respiratoire, et je suis par la suite sur une quantité importante de médicaments. J'ai beaucoup de mal à trouver où commencer. Certaines directions seraient grandement appréciées.SPARC - Masque de bits sans décalage

Répondre

3

Multiplier par 2 est un décalage vers la gauche et diviser par 2 est un décalage vers la droite (au moins pour les nombres non signés).

Si vous voulez décalage vers la gauche de 2 bits, c'est une multiplication par 4.

Ainsi, par exemple, si vous avez la valeur binaire:

b15    b0 
v     V 
0000 1111 0101 1000 

et que vous vouliez extraire b3 et b2, vous le feriez et le tout avec 0xC0 et diviser par 4.

0000 1111 0101 1000 
0000 0000 0000 1100 <- AND with 0xc0 
------------------- 
0000 0000 0000 1000 
------------------- 
0000 0000 0000 0010 <- divide by 4 

comme cela semble soupçonneux comme les devoirs (et je n'ai pas codé pour SPARC pour une longue temps), je ne vais pas essayer de vous donner une solution finie - cela devrait être suffisant pour vous lancer.

+0

Merci! Oui, j'aurais dû le rendre plus clair; Je cherchais seulement la direction pas une solution. Cela devrait être parfait, je verrai ce que je peux faire. – derrickp

Questions connexes