Question

Je suis en train d'effectuer une opération de bits et sur un registre, comme un masque pour supprimer le bit le plus significatif (qui se trouve être 16 bits lors de comptage de 0). Cependant, lorsque je tente de compiler mon code en utilisant gcc, il me donne les messages d'erreur suivants:

Messages Assembleur: 19: Erreur: débordement de déplacement

Je suppose que cela a quelque chose à voir avec la taille du bit je pose ma candidature masque, parce que quand je réalise l'ET avec deux registres contenant un petit nombre que je ne rencontre pas la même erreur. Le code lui-même ressemble à,

.global main
main:
save    %sp, -96, %sp

clr %l1
clr     %l2
set 0xffff, %l0
set 0xaaaa8c01, %l4
set 0xff001234, %l5
set 0x13579bdf, %l6
set 0xc8b4ae32, %l7
srl %l4, 31, %l1    
srl %l0, 15, %l2
xor %l1, %l2, %l1
and %l1, 0x1, %l1
sll %l0, 1, %l0
add %l0, %l1, %l0
and %l0, 0xffff, %l0


mov 1, %g1
ta  0

Si quelqu'un pourrait offrir un aperçu sur la façon de résoudre ce problème, il serait très apprécié.

Merci,

badPanda

Était-ce utile?

La solution

Le bit le plus significatif est le bit 15 (dans un nombre entier de 16 bits, lorsque les bits sont à base zéro).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top