Automaticke pretypovani u AVR-GCC

Miroslav Šinko sinkomiro@gmail.com
Středa Červenec 22 20:32:25 CEST 2009


Dňa 22.7.2009, Milan B. <milan@bastl.sk> napísal(a):
> Takze tu vznika domnienka: GCC sa snazi co najviac pracovat s operandmi
> v nativnej sirke slova, predpokladajuc ze CPU s takymito operandmi vie
> pracovat najefektivnejsie.  Ak ma k tomu nejaky dovod (napr. vysledok sa
> uklada do premennej konkretneho typu), tak svoje chovanie moze zmenit -
> to je pripad C. Kedze avr-gcc  ma definovanu nativnu sirku slova 16 bit
> tak pripady A a B su spracovane ako 16-bitove (pretoze vysledok sa len
> pouzije pri porovnani, nikde sa neuklada). Ak si ten isty priklad
> vyskusame s x86 gcc, dostaneme sa k 32-bitovym operaciam - co len
> potvrdzuje tuto domnienku
> (Len na okraj: ak v pripade C je premenna ss 32-bitova, cela transakcia
> sa udeje v 32 bitoch aj na AVR... )

So vsetkym vo vasom maili suhlasim, len nie s oznacenim "domnienky" vo
vyssie ponechanom odseku. Toto chovanie je dane normou ANSI C (usual
arithmetic conversions atd), ako som popisal vo svojich mailoch. Ak
prekladate na 32-bitovom x86 prekladaci, int je 32 bitovy, takze
konverzie su na tuto sirku. Nepotvrdzuje to vsak domnienku, ale "len"
spravne splna normou.

miro



Další informace o konferenci Hw-list