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

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.