[assembly] caricare costante grande in un registro

frab1
Buon pomeriggio,
in Assembly per architetture Mips, come faccio a caricare grande senza che me la prenda come negativa? Ad esempio:

Se voglio caricare la costante $300000$ in $t0 , uso :
li $t0, 300000


$300000$ (decimale) è fatto di $4$ in base 16 nei bit piu' alti, e $-27680$ nei 16 bit bassi del registro
perche' in binario $300000 = 100 1001000111100000 $ ...
come faccio a dirgli di non prendermi la parte "bassa" della costante come un negativo? :roll:

Risposte
apatriarca
In assembly non esistono numeri positivi e negativi, sono entrambe sequenze di bytes/bits. Inoltre non mi è chiaro perché consideri il valore 300000 separandolo in due interi a 16 bit quando $t0 è di 32 bit e l'istruzione li sta caricando tutto il numero come valore a 32 bits. Ritengo quindi che il problema non sia nel codice che hai mostrato, ma del modo in cui usi, successivamente, quel valore. Se lo usi come intero con segno sarà necessariamente un valore negativo, se lo consideri come intero senza segno sarà un valore positivo.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.