Pagina 6 di 9

Re: MIB

Inviato: lun 15 ott 2012, 20:38
da Linkinf22
Come converti quei valori in metri?
Perché a me leggendoli senza virgola (prendendo il primo) viene 1198244644 mentre con la virgola (float) viene 60355.140625.

Credo di aver capito cosa indicano quei 4 byte che precedono le coordinate, solo che mi servirebbe convertire quei valori in metri.

Re: MIB

Inviato: lun 15 ott 2012, 23:44
da Maximvs
Allora link nel disassemblare mi sono imbattuto in una istruzione particolare che revolt utilizza per la conversione ed è la seguente:

cvttsd2si

prova a vedere quì nella guida di microsoft ho cercato nella sezione C++

http://msdn.microsoft.com/en-us/library ... 71%29.aspx

Re: MIB

Inviato: mar 16 ott 2012, 21:14
da Linkinf22
Ma la funzione per eseguire quella conversione (_mm_cvttsd_si32) prende come parametro una struttura __m128d che è costituita da un array di due double :confuso:

Re: MIB

Inviato: mar 16 ott 2012, 21:17
da Maximvs
il risultato viene fornito da quella funzione

Re: MIB

Inviato: mar 16 ott 2012, 21:20
da Linkinf22
Riesci a vedere cosa viene passato a quella funzione?
Perché il valore che stiamo cercando di leggere è costituito da 32 bit e già un double è da 64 bit, due double sono ben 128 bit. Se ne carica 32 di bit, dove li piglia i restanti 96?

Re: MIB

Inviato: mar 16 ott 2012, 21:26
da Maximvs
link è questa la funzione usata in revolt:
Converts the two double-precision, floating-point values of a to 32-bit signed integers using truncate.

r0 := (int) a0
r1 := (int) a1
r2 := 0x0 ; r3 := 0x0

int _mm_cvttsd_si32 (__m128d a);

CVTTSD2SI

Re: MIB

Inviato: mar 16 ott 2012, 21:38
da Linkinf22
Appunto, richiede due valori double-precision floating point presi dal parametro "a" (che appunto è di tipo "struttura contenente un array di due double") da convertire in un int (32 bit) troncandoli.

Ma io i due double da mettere nell' array contenuto in "a" dove li piglio?
Io ciò che piglio sono i 4 byte che prendo dal file (i famosi 4 byte che precedono i 12 byte delle coordinate).

Re: MIB

Inviato: mar 16 ott 2012, 21:42
da Maximvs
prova a vedere che dovrebbero essere quelli dopo magari do uno sguardo al sorgente

Re: MIB

Inviato: mar 16 ott 2012, 21:47
da Linkinf22
Ma quelli dopo sono le coordinate... a meno che :dubbi:
Provo a fare una cosa

Re: MIB

Inviato: mar 16 ott 2012, 21:55
da Linkinf22
Niente, tentativo fallito :-(

Re: MIB

Inviato: mar 16 ott 2012, 22:00
da Maximvs
cosa hai provato a fare ?

hai messo 23c3 in un array
e 6b47 nell'altro?
per vedere se restituisce

12D?

o
r0: C323
r1: 476B

Re: MIB

Inviato: mar 16 ott 2012, 22:10
da Linkinf22
Linkinf22 ha scritto:
Maximvs ha scritto:anche perchè ad esempio la distanza espressa in metri della pista che uno sceglie, in questo caso market2 è composta da:
24C3 6B47 che sarebbero 301 metri
Ma tu hai trovato 24C3 6B47 nel file .PAN di supermarket 2?
Maximvs ha scritto:Si linkinf22 la lunghezza della pista è contenuta nel file .pan
Ma non riesci proprio a capire come fa revolt a cavar fuori 301 da quel 24 C3 6B 47?

Re: MIB

Inviato: mar 16 ott 2012, 22:47
da Maximvs
link dimmi le 4 coppie di bytes che vuoi decifrare

Ti ho spedito dei sorgenti forse li hai già guarda te

Re: MIB

Inviato: mer 17 ott 2012, 0:11
da Hermes
Linkinf22 ha scritto:24 C3 6B 47?
beh penso siano queste! lol

Re: MIB

Inviato: mer 17 ott 2012, 16:11
da Michelangelo
Linkin, attento ai double-post. Se ti ci metti pure tu è la fine lol