Automaticke pretypovani u AVR-GCC

Tomáš Halabala tomas.halabala@iol.cz
Středa Červenec 22 13:37:24 CEST 2009


Miroslav Šinko napsal(a):
> 2009/7/22 Tomáš Halabala <tomas.halabala@iol.cz>:
>> Děkuji, jo toto je řešení, ale co mě na tom nejvíce zaráží je, jak jsem
>> psal, že v jednom případě překladač tu trojku nerozšířil a v jiném místě
>> programu s úplně stejným zápisem pouze s jinými názvy proměnných tu
>> trojku převedl na int, což jak píšete odpovídá ANSI C. Ale proč to tedy
>> dodržuje překladač podle nálady? To už asi zůstane nezodpovězeno.
>> Odpovědí je zřejmě asi IAR.
> 
> Prekladac to dodrzi vzdy (pokial teda splna normu) z pohladu vysledku.
> Je mozne, ze v jednom pripade rozpozna, ze aj bez konverzie z 8 na 16
> bit bude vysledok vzdy spravny, v druhom pripade to rozpoznat nevie.
> Ono tie vase priklady nie su uplne totozne, jeden pracuje so statickou
> premennou definovanou externe, druhy s konstantnym parametrom funkcie.

Vzhledem k tomu, ze se jedna o funkci AND (&), mezi nejakou 8-bitovou 
promennou a konstantou, plati a to i v pripade kdyz bude konstanta vetsi 
jak 255, ze bude vysledek s konverzi i bez konverze vzdy stejny. Takze 
pokud by v GCC bylo nejake rozpoznavani, tak je spatne, protoze dle meho 
nazoru neexistuje pripad, kdy by konverze v pripade funkce AND a 
8-bitove promenne k necemu byla. Po konverzi 8-bitove promenne na 16 
bitu, bude vzdy hornich 8 bitu nulovych, coz ve spojeni s funkci AND 
nijak nemeni vysledek.

> Preklad tiez zavisi na optimalizacii, ked si ten moj kod prelozite bez
> nej, prekladac poctivo na zasobniku vyhradi miesto pre lokalne
> premenne valx.
> Chcem tym povedat, ze prekladac zaruci funkcnost, ale nie pouzite
> sekvencie instrukcii. Rovnako sa moze stat, ze dalsia verzia GCC bude
> uvedene C zapisy prekladat uplne inac...
> 
>> Použil jsem C, protože se jedná o velmi rozsáhlý program a samozřejmě ty
>> nejkritičtější části jsou psané v assembleru. Administrativní část je v
>> C s tím, že neustále kontroluji efektivnost překladu. Slibuji si od toho
>> přece jen snadnější přenositelnost na jiné MCU a CPU, což je také
>> směrodatné.
> 
> OK, kde ma vyznam C, je jeho pouzitie v poriadku.
> 
> miro



Další informace o konferenci Hw-list