Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Assembler ::  Gelöst: Konvertierung 64Bit Fließkommazahl nach 64Bit Integer (SSE2)     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
supernicky
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.11.2011
Beiträge: 201
Beitrag supernicky Mitglied 23:12:08 16.07.2015   Titel:   Gelöst: Konvertierung 64Bit Fließkommazahl nach 64Bit Integer (SSE2)            Zitieren

Hallo,

ich suche eine Möglichkeit eine 64Bit Float nach 64Bit Int (Vorzeichen egal)
umzuwandeln.

Die FPU macht ihr Arbeit ordentlich aber gibts da nicht auch was von SSE2/SSE3?

Folgendes habe ich gefunden aber das Resultat ist zu "klein".
Assembler:
cvtsd2si ecx, xmm0     ;wandelt in 32Bit Int mit Vorzeichen um


Nicky


Zuletzt bearbeitet von supernicky am 23:39:51 29.03.2016, insgesamt 2-mal bearbeitet
92
Unregistrierter




Beitrag 92 Unregistrierter 08:18:07 17.07.2015   Titel:   Re: Konvertierung 64Bit Fließkommazahl nach 64Bit Integer (SSE2)            Zitieren

supernicky schrieb:

... aber das Resultat ist zu "klein".
Assembler:
cvttsd2si ecx, xmm0     ;wandelt in 32Bit Int mit Vorzeichen um


??
Sehe ich das richtig, oder ist hier schlicht "ecx" (als source) "zu klein" für dein Vorhaben?! ;)
supernicky
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.11.2011
Beiträge: 201
Beitrag supernicky Mitglied 09:43:09 17.07.2015   Titel:              Zitieren

das ist es in der tat.

Er wandelt die 64bit Fließkommazahl aus xmm0 in eine 32Bit Ganzzahl mit Vorzeichen um.

Ich möchte ein Float ins ASCII Format umwandeln.
Dazu multipliziere ich die Float z.B. mit 10000.0
und speichere sie als Int ab, somit habe ich bis 4
Nachkommastellen.
Der Rest erfolgt wie gewohnt.

Zahl / 10 = Nachkommastelle, dann + 48 = ASCII.
Wenn mein Float nun schon 2.000.000.000 ist, was ja
immer noch in 32bit passt, sieht es nach der Multiplikation
schon anders aus. Dafür brauch ich dann den 64Bit Integer.

Wie gesagt, die FPU kann es auch.

für Hilfe wie immer dankbar,

Nicky

Das es entsprechende Windows-Funktionen (ftoa) gibt, ist mir bekannt aber für
mein Vorhaben nicht anwendbar.


Zuletzt bearbeitet von supernicky am 09:48:23 17.07.2015, insgesamt 1-mal bearbeitet
supernicky
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.11.2011
Beiträge: 201
Beitrag supernicky Mitglied 22:11:32 29.03.2016   Titel:   Gelöst: Konvertierung 64Bit Fließkommazahl nach 64Bit Integer (SSE2)            Zitieren

falls es noch jemanden interessiert...

in einer 64Bit Anwendung kann man
Assembler:
cvtsd2si rax, xmm0

nutzen...

Das wandelt die 64bit Fließkommazahl in eine 64bit Integer um und
speichert sie in RAX.

Zitat:

Intel 64 and IA-32 Architectures Software Developer's Manual

Seite 129:
CVTSD2SI Convert scalar double-precision floating-point values to a doubleword integer


Unter 32Bit bleibt es bei
Assembler:
cvtsd2si eax, xmm0

hier kann nur die FPU helfen.

Nicky


Zuletzt bearbeitet von supernicky am 22:15:38 29.03.2016, insgesamt 1-mal bearbeitet
C++ Forum :: Assembler ::  Gelöst: Konvertierung 64Bit Fließkommazahl nach 64Bit Integer (SSE2)   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.