PDA

View Full Version : Conversione Word in Double


Titti92
23-01-2016, 10:15
Come posso convertire un intero in un double? Sto lavorando in assembly e non mi è permesso usare l'istruzione che lo fa direttamente, posso soltanto utilizzare quella che converte un intero in un floating point a singola precisione (32 bit). Considerate che nell'architettura MIPS (quella che utilizzo) vengono usati due registri adiacenti per memorizzare un double (quindi ad esempio $f20 e $f22).

Titti92
23-01-2016, 10:17
Se l'intero è piccolo allora posso caricare il registro più basso con 0 e quello più alto con il valore floating point?

cdimauro
24-01-2016, 08:54
Se l'intero è piccolo, puoi usare l'istruzione che converte da intero a FP a singola precisione.

Altrimenti sei costretto a realizzare una routine di conversione da int64 a double. Non è complicata, ma in assembly, e specialmente con l'architettura MIPS (che è abbastanza povera di istruzioni), ti ci vorrà un po'.

Titti92
24-01-2016, 13:08
Se l'intero è piccolo, puoi usare l'istruzione che converte da intero a FP a singola precisione.
Come pensavo, ma visto che i double utilizzano due registri allora dovrò riempire quello più basso con 0 no?

cdimauro
24-01-2016, 19:25
Non so come funziona l'architettura MIPS da questo punto di vista.

In genere i registri di un'FPU hanno una dimensione fissa, e consentono di memorizzare single, double, come pure interi. Ciò che accade con altre architetture è che un valore viene caricato secondo uno dei tipi di cui prima, e convertito nel tipo a precisione massima, che in genere è il double (extended per x87).

Ma se nell'architettura MIPS esiste un'istruzione per convertire da intero a single, allora può darsi che ciò che ho descritto non valga.

Devi vedere un po' come funziona.

In ogni caso ti avviso prima che mettere a 0 l'altro registro non funzionerebbe, perché la codifica interna di single e double è diversa.