Ceckarsky kviz III

Jan Kral kral@fortech.cz
Sobota Červen 6 18:49:15 CEST 2009


Tech hodnot 0x7fff to melo podle me nabyvat proto, ze v nejvyssim bitu je ulozeno znamenko. To ze se zapnutymi optimalizacemi se to chova jinak nez pri vypnutych optimalizacich jste zminil az ted.

Takze v tom pripade je moje prvni uvaha o znamenku spatne a zrejme se prostym pricitanim k int promenne meni hodnota v plnem rozsahu a prekladac nema duvod neco zkrouhnout.
Spis to bude tim, ze prekladac pri optimalizaci se domniva, ze vzhledem k predchazejicimu i++ nemuze dojit k tomu, ze by bylo znamenko nekdy zaporne a tudiz tento test nedela a provadi natvrdo jen tu jednu vetev, druhou vubec do prekladu nezahrne. A to jeste v tom lepsim pripade, protoze vzhledem k while (1) a opakovanem nastavovani stejne hodnoty na port muze dojit pri optimalizaci k tomu, ze udela nastaveni te hodnoty a teprve potom udel aprazdny cyklus while (1)


S pozdravem JK

> 
> >> >Pripadne je mozne delat test ne na 0x8000, ale na 0x4000 
> a pak to fungovat bude. 
> >> 
> >> To je pravda.
> >> 
> >> >Jestli to chcete na plnou hubu, tak to bude tim, ze 
> promenna typu int a delku 2 byty bude nabyvat ve zminem 
> prikladu hodnot 0-0x7fff.
> >> 
> >> Hmmmm... Mozete to prosim odovodnit?
> >
> >Zrejme prekladac hodnotu 0x8000 zkrouhne na 0x0000, protoze 
> se "nevleze" do daneho
> >typu?
> 
> 
> No, znie to sice vierohodne, ale teraz pride pointa: povodny 
> autor otazky experimentoval s nastaveniami prekladaca, a 
> zistil, ze ak sa preklada so zapnutymi optimalizaciami, tak 
> LEDka neblika.
> 
> Lenze ak sa preklada s vypnutymi optimalizaciami, tak LEDka blika.
> 
> Myslite, ze *zapnutim* optimalizacie sa *prida* operacia 
> ("zkrouhnutie")?
> 
> wek
> 



Další informace o konferenci Hw-list