Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   'unsigned 8bit' Floating Point -> 2x '4bit' Floating Point (https://www.delphipraxis.net/80248-unsigned-8bit-floating-point-2x-4bit-floating-point.html)

schty 5. Nov 2006 19:22


'unsigned 8bit' Floating Point -> 2x '4bit' Floating Poin
 
Es ist nicht gerade schwierig ein 8bit unsigned Integer in 2x4bit (Nibbles) aufzuteilen, und das alles mit nur wenigen logischen AND und SHIFT Befehlen.

Aber nun kommt es: wie macht man folgendes im inline Assembler, anfangend mit einem 8bit unsigned Integer Wert 'gespeichert' in einem 32bit Floating Point (SSE):
1. Diese 8bit integer Wert herausfiltern und...
2. Aufteilen in zwei 4bit Werte (Nibbles)
3. Diese zwei 4bit Werte speichern in zwei 32bit Floating Points (SSE)

dizzy 6. Nov 2006 23:38

Re: 'unsigned 8bit' Floating Point -> 2x '4bit' Floating
 
Wenn du dir mal anschaust, wie Floats aufgebaut sind, wirst du feststellen, dass das unmöglich äquivalent übertragbar ist. In einem Float steht nämlich nicht einfach die Zahl zu einer anderen Basis, sondern stellt viel mehr eine Wertevorgabe, mit der eine CPU mit ein paar definierten mathematischen Schritten wieder eine Dezimalzahl herstellen kann.
Rein prinzipiell kannst du dir natürlich eine 32Bit Floatingpoint Zahl in ein Register schlabbern und zerhackstückeln, jedoch steht in den Einzelteilen dann nur noch Krams, der einzeln in keiner Weise Aussagekraft besitzt (vom Vorzeichenbit mal abgesehen, dass dank seiner Größe ja in jeder Struktur mit vollem Informationsgehalt platz findet :D).


Edit: Yeek! Ich seh jetzt grad erst das "SSE" :oops:. Nun, das Zerlegen wirst du vermutlich ein einem normalen CPU Register machen müssen. SSE bietet eine ganze Reihe an Opcodes um Werte von/in diese zu kopieren, darunter auch Konvertierungen für Integer. Diese und diese Seite fand ich recht ansprechend, um mal danach zu wühlen. Aus dem Stehgreif kann ich allerdings keine fertige Lösung zauber. (Muss mal wieder mehr in diese Richtung machen *sigh*)

schty 7. Nov 2006 18:49

Re: 'unsigned 8bit' Floating Point -> 2x '4bit' Floating
 
Schönen Dank, diese Links können doch hilfreich sein :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz