Float mit Assembler

Gast #319434
Ich habe gesehen dass die AVR Mikrocontroller den float Datentyp unter
C(++) unterstützen. Wie sieht das mit Assembler aus? Wird
Fliesskommaarithmetrik direkt vom Chip unterstützt oder "emuliert"?
Also gibt es auch Assembler-Befehle dazu? Hab in die Tabelle geschaut
aber das hilft mir auch nicht richtig weiter.
Gast #319435
nein, der AVR kann kein float in Hardware. Sowas nennt sich übrigens
Gleitkommaeinheit oder Floating Point Unit (FPU). Der Compiler setzt
das also alles in Software um. Deswegen float wenn immer geht
vermeiden!
#319436
Float kann man oft umgehen, indem man skaliert arbeitet (mit 16 oder
32-bit). Den Skalierfaktor legt man so, dass der Wertebereich möglichst
ausgenutzt wird und/oder man Schiebebefehle verwenden kann. Das nennt
man auch fixed-point.

z.B. Multiplikation mit 3,456 : *3456 / 1000   oder *3538/1024
angenähert *885/256

/1024 entspricht >>10   oder Zugriff um 1 Byte versetzt und >>2
/ 256 entspricht >>8    oder Zugriff um 1 Byte versetzt

Bitschieben um 8 kann man sich sparen, wenn man direkt auf das richtige
Byte zugreift.

Nenn mal ein Beispiel, was Du berechnen willst.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.