Forum: Compiler & IDEs IEEE754 in Assembler


von Manni (Gast)


Lesenswert?

Gibt es für die AVR uC eine .asm Bibliothek für die Add (Sub) Mul und 
Div Routinen im IEEE 754 Format (32 bit) hier in den Foren ? Ich habe 
das Forum "Codesammlung" bis zum ersten Eintrag am 04.01.2002 
durchgesehen und nichts gefunden.

Vielleicht habe ich ja was übersehen oder ihr könnt mir einen Tip geben, 
wo ich sowas finden kann.

Gruß
Manni

von A.K. (Gast)


Lesenswert?

avr-libc

von König Europas (Gast)


Lesenswert?

Ich denke mal, da gibt es keine volle Implementierung. Prof. Kahan 
beschreibt hier gut den Aufbau und Sinn des IEEE754-Formats:
http://www.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF

Ich bezweifele mal, dass du dich mit der avr-libc an die verschiedenen 
Traps dranhängen kannst.

Prominentestes Beispiel für das Fehlen voller IEEE754-Funktionalität ist 
der Absturz der Ariane-Rakete!

von Manni (Gast)


Lesenswert?

@A.K.
So wie König sagt, werde ich es tunlichst unterlassen mich an die libc 
"dranzuhängen". Würde wohl eher ein Jahrzehnt-Projekt.

@König Europas
Danke für den Link, habe bzgl. IEEE754 schon alle möglichen 
Definitionen, Beschreibungen und Notes aus dem Netz gefischt, teils gut, 
teils übel.

Übrigens: nicht nur Over- oder auch Underflows führen zu solch 
kostspieligen Katastrophen. Es sind auch mal ganz banale Gründe: 
Putzlappen bei der Integration bzw. beim Final Flight Acceptance Review 
im Antriebssystem vergessen. Davon könnte ich noch viele aufzählen ...

Trotzdem vielen Dank für die Infos.
Manni

von Ale (Gast)


Lesenswert?

Wenn du möchtest FP aber auf BCD, ich kann vielleicht dir helfen.

Gruß

Ale

von Manni (Gast)


Lesenswert?

FP in BCD ist auch ein Möglichkeit, aber damit nicht mehr kompatibel zum 
C compiler --> man weiss ja nie was alles noch für Projekte kommen !?!

Ich sitze gerade dran, die FP Arithmetik im Format IEE754 in Assembler 
zu erstellen. Esrt mal Add, Sub, Mul, Div und dann noch string floating 
point zahl (z.B.: "-1.234567E-27") nach IEE754 und das ganze noch 
zurück.

Wenn ich das habe, werde ich's ins Forum stellen zum Testen und Meckern 
!!!

Trotzdem vielen Dank für deine Idee.

von Hans-jürgen H. (hjherbert) Benutzerseite


Lesenswert?

Neu?

In der Library ist alles schon drin. Die Programme heißen __addsf3 
__subsf3
__mulsf3 und __divsf3. Die Quellen dafür gibt es da:

http://download.savannah.gnu.org/releases/avr-libc/

Ich hatte das auch mal probiert die Quellen sind da :
Beitrag "float arithmetic"

Besondere Schwierigkeiten machen +Inf -Inf NaN und subnormal - Wenn man 
da etwas wegoptimiert spart man viel Zeit und Platz.

Testcases (Überprüfungsprogramme) gibt es im avr-libc CVS, auf
https://savannah.nongnu.org/cvs/?group=avr-libc

Wenn Du schon ein Porgramm schreibst, dann nimm den ersten Wert (a) in 
r25 r24 r23 r22, den zweiten in r21 r20 r19 r18, dann sind deine 
Programme kompatibel zu avr-libc und zm Compiler.

An einem Testcase-interpreter und Simulator schreibe ich gerade noch. 
Wenn er fertig ist schiebe ich ihn auf den thread 
Beitrag "float arithmetic"


Trotzdem: nicht aufgeben, vielleicht wird Deine Version ja besser 
schneller kürzer, genialer.

von Manni (Gast)


Lesenswert?

Hab alles gefunden und werd' mal genauer reinschauen, auch in deine 
home.zip.

Was mir auf die Schnelle bei den "savannah" sourcen aufgefallen ist, 
dass man dass das IEEE754 Thema "Runden" als nicht relevant ansieht. 
Vielleicht hab ich das auch nur übersehen. Werde forschen !

Danke dir für die vielen Links!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.