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

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