IEEE754 in Assembler

Gast #512022
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
Gast #512438
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!
Gast #513552
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
Gast #517100
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.
Persönliche Seite #517104
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.
Gast #517774
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!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.