Domanda

sto tentando di eseguire un'operazione AND di bit in un registro, come una maschera di bit per rimuovere il bit più significativo (che risulta essere bit 16 quando il conteggio da 0). Tuttavia, quando provo a compilare il mio codice utilizzando gcc, mi dà i seguenti messaggi di errore:

Messaggi Assembler: 19: Errore: overflow delocalizzazione

La mia ipotesi è che questo ha qualcosa a che fare con la dimensione del bit mascherare Mi candido, perché quando mi esibisco la E con due registri che contengono piccoli numeri non rileva lo stesso errore. Il codice stesso sembra,

.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

Se qualcuno potrebbe offrire una certa comprensione su come risolvere questo problema sarebbe molto apprezzato.

Grazie,

badPanda

È stato utile?

Soluzione

Il bit più significativo è il bit 15 (in un numero intero di 16 bit, quando i bit sono base zero).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top