SRAM-Verbrauch für float division?

Gast #898761
Lesenswert?

Hallo!

Könnte mir bitte jemand den folgenden Effekt erklären?

Sobald ich die Zeile
1
... = x / 3.40;
 im Program habe, sind laut AVR Studio auf einmal ca. 250 Bytes im SRAM 
mehr belegt.

Vermeide ich dabegen die float division mit
1
... = x * 100 / 340;
 is der RAM Verbrauch wieder wie vorher.

Gut, die zweitet Varinaten ist, sowieso besser, da ich damit auch Platz 
im flash spare.

Aber warum verbraucht das dazu linken der float Funktionen Speicher im 
SRAM? Ich bin verwirrt... ;)

Gruß
Eiko
#899026
Lesenswert?

Eiko wrote:

> Aber warum verbraucht das dazu linken der float Funktionen Speicher im
> SRAM? Ich bin verwirrt... ;)

Möglicherweise wird dabei die falsche Version einer Lib-Funktion 
reingezogen. Die generische GCC Version der Floating Point Funktionen 
benutzt eine 256 Byte Tabelle (=> __clz_tab oder so in der Art, zu 
finden im Map File). Nur sollte die nie zum Zuge kommen, weil eigentlich 
die Funktionen der avr-libc verwendet werden sollten.

Das war insbesondere ein fatales Problem der WinAVR Version von Dezember 
2007, wo die avr-libc nicht ganz zur Version des Compilers passte.
Gast #899104
Lesenswert?

ja, das mit der Tabelle wird es sein. Findet sich auch im Map File 
wieder. Aber eigentlich dachte ich, ich hätte ne neuere Version. Muss 
ich morgen mal nach schauen.


Und wann eine Division eine float und wann eine int Operation ist, war 
hier gar nicht das Thema ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren