codegröße plötzlich ver-20-facht!?

Gast #1058377
Lesenswert?

Hallo Zusammen,

habe ein Porblem mit folgendem Quellcode (hier die wichtigsten 
Schnipsel):

...

int f_high = 40;
//float T_high = 500/f_high;   // 500/40 = 12.5

zwert = 0b00010011;
float teiler = 6.8;

float timeloop;
timeloop = 12.5 + zwert/teiler;

...

Problem ist folgendes, wenn ich die 12.5 aus "timeloop =..." durch 
T_High ersetze, also "timeloop = T_high + zwert/teiler;" so ist meine 
Codegröße mit einem Schlag von 200Byte auf über 4000Byte angestiegen!

Hat jemand eine Idee woran das liegt, bin (als Neuling) total 
überfragt...

Hintergrund: Ich muss aus einigen global definierten Variablen wichtige 
Werte ermitteln, so dass bei einer späteren Änderung von Variablen nicht 
der ganze Quellcode noch einmal überarbeitet werden muss.

Verwende AVR Studio mit GNU-Compiler, ATMega8 und das 
Funk-Evaluationsboard von Pollin.

Danke für eure Hilfe.
Zander
Gast #1058406
Lesenswert?

also zuerst einmal:

müssen es floats sein?
eigentlich schafft man fast jedes AVR Problem mit ein wenig Nachdenken 
auch mit Festkomma Arithmetik

außerdem solltest du dir mal überlegen was da jetzt konstanten sind und 
was variablen. werte die eigentlich konstant sind in variablen zu 
schreiben verwirrt etwas (evtl auch den compiler)

gruß sebba
#1058413
Lesenswert?

GCC ist normalerweise recht gut darin, Variablen bekannten Inhalts in 
eine spätere Rechnung durchzuschieben. Allerdings gibt es dabei 
entsprechend der Sprachdefinition und dem zulässigen Aliasing Grenzen: 
beispielsweise ist Schluss wenn ein Pointer auf den gleichen Datentyp 
irgendwo rumlungert.
Gast #1058417
Lesenswert?

@sebba:
wie genau soll das mit der "Festkomma Arithmetik" laufen?
bzw. wie könnte es anders aussehen, damit ich Variablen mit zwei 
Nachkommastellen hab?

die einzige globale Variable ist "f_high = 40",
"teiler" muss auch noch über eine Funktion verknüpft werden.
#1058632
Lesenswert?

Wenn ichs richtig in erinnerung hab stand beim nuesten GCC bzw vor nem 
Monat oder so dabei, dass es einen bekannten aber noch nicht gefixten 
bug mit den Fließkommalibs gibt und man sie deshalb mit dem neusten 
nicht verwenden kann / soll. Kann aber sein das ich mich irre =/ is 
etwas her.

Gruß ErgoProxy

Eddie hat grade das gefunden (ganz unten):
http://www.mikrocontroller.net/articles/WinAVR#Hilfe.21_Habe_neues_WinAVR_und_das_Datensegement_ist_jetzt_riesig.21_.28WinAVR-20071221.29

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