STM8L + Cosmic compiler: optimierung, die code unlogisch macht

Gast #4051863
Lesenswert?
• ▲
▼
Hallo, ich hab folgenden Code:
1
#include "stm8l15x.h"
2
#include "stm8l15x_it.h"
3

4
main()
5
{ 
6
  uint8_t index;
7
  uint8_t element;
8
  CLK_DeInit();
9
  CLK_SYSCLKSourceSwitchCmd(ENABLE);
10
  CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);
11
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
12
  while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI)
13
  {}
14
  LCD_GLASS_Init();
15
  while(1)
16
  {  
17
    for(element = 0x00; element <= 0xFF; element++){
18
      for(index = 0x00; index <= 0xFF; index++){
19
        LCD->RAM[(uint8_t)element] = 0x00;
20
        LCD->RAM[(uint8_t)element] = index;
21
      }
22
      LCD->RAM[(uint8_t)element] = 0x00;
23
      delay_ms(750);
24
    }
25
  }
26
}

Problem:
die erste for-schleife mit element wird wegoptimiert... D.h. element 
bleibt immer als 0x00 stehen. Warum macht mir der Compiler das?
Gast #4051878
Lesenswert?
• ▲
▼
>Auf das hätte man auch selber kommen können

Zum Beispiel, indem man die Compiler-Warnungen so einstellt, dass jede 
Kleinigkeit bemängelt wird. GCC würde dann zu deinem Programm sagen:
warning: comparison is always true due to limited range of data type

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.