Pregunta

Estoy intentando realizar una operación AND en un registro, como una máscara de bits para eliminar el bit más significativo (que pasa a ser de 16 bits cuando se cuenta desde 0). Sin embargo, cuando intento compilar mi código utilizando gcc, me da los mensajes de error siguientes:

mensajes de ensamblador: 19: Error: desbordamiento reubicación

Mi conjetura es que esto tiene algo que ver con el tamaño del bit de máscara que estoy solicitando, porque cuando realizo la AND con dos registros que contienen pequeñas cantidades que no se produce el mismo error. El código en sí parece,

.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 alguien puede ofrecer alguna información sobre cómo resolver este problema sería muy apreciada.

Gracias,

badPanda

¿Fue útil?

Solución

El bit más significativo es el bit 15 (en un entero de 16 bits, cuando los bits son cero basado).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top