C xc8

Zuffa Jan ZuffaJ na cgc.sk
Středa Prosinec 6 10:06:38 CET 2017


Trochu od temy (nie je to xc8), som vcera riesil

float fSymP;
fSymP = (float)dwSampleRate / 2375.0f;
m_wRDSDecBy = (WORD)((fSymP / fSamPerSym));

pre dwSampleRate 228000 a fSamPerSym = 8
vyslo bez optimalizacie wRDSDecBy = 12 (spravne), po zapnuti
optimalizacie wRDSDecBy = 11 (zle)

Pri zapnutej optimalizacii bolo v fSymP = 95.9999998
pri vypnutej 96.0000000. Neviem preco. Vyriesilo to +0.5f
Chyba je pravdepodobne v druhom riadku.

j.

-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jan Waclawek
Sent: Wednesday, December 06, 2017 9:49 AM
To: HW-news
Subject: Re: C xc8

To su prave tie body kde sa ukazuje, ze C++ je iny jazyk. V C je taka konverzia dovolena, ale nemusi dopadnut dobre; C99 6.3.2.3#6:

Any pointer type may be converted to an integer type. Except as previously specified, the result is implementation-defined. If the result cannot be represented in the integer type, the behavior is undefined. 

Ak by si skusil gcc, nie g++:

f.c:3: warning: initialization makes integer from pointer without a cast
f.c:3: error: initializer element is not computable at load time

Inaksie povedane, bez ohladu na ten zavinac-operator, prekladac nemusi vyhlasit chybu, ba dokonca moze prekladac mat aj implementovanu taku konverziu, ktora je v char reprezentovatelna, a potom je vysledok implementacne zavisly (t.j. mal by byt zdokumentovany v dokumentacii k prekladacu).

wek


PS. To C++ nepoznam. Pozrel som si mojho oblubeneho Dereka Jonesa a tam sa pise, ze aj v C++ je to dovolene, ale formulacia je inaksia:

A pointer can be explicitly converted to any integral type large enough to hold it.

Z toho potom vyplyva ta rozdielna chyba v gcc a g++. V g++ nastane chyba pri konverzii; v gcc - a tu musim povedat, ze som pouzil avr-gcc, lebo to je dolezite -  pri tej konverzii len vyhlasi warning a chyba nastane pri pokuse generovat direktivu "zober najnizsi byte z integeru" pre linker, pretoze hodnota toho pointra nie je v okamihu kompilacie znama. 

const int iitLoader = "BootLoader";

skonci v gcc len tym warningom.




----- Original Message ---------------

Subject: Re: C xc8
   From: Miroslav Šinko <sinkomiro na gmail.com>
   Date: Wed, 06 Dec 2017 01:07:11 +0100
     To: HW-news <hw-list na list.hw.cz>

>Problem je, ze pri tom druhom zapise sa kompilator snazi vobec nieco robit.
>
>Definicia adresy je velmi specificka, bez nej konci kompilacia inymi 
>kompilatormi nasledovne:
>
>const char ootLoader = {"BootLoader"};
>
>VC:
>error C2440: 'initializing' : cannot convert from 'const char [11]' to 
>'const char'
>There is no context in which this conversion is possible
>
>g++:
>error: invalid conversion from 'const char*' to 'char'
>
>miro
>
>On 5.12.2017 22:28, konfera na efton.sk wrote:
>> To prve definuje pole charov dlzky danej inicializatorom, a nainicializuju ju tym retazcom.
>>
>> Tie druhe dva definuju na adrese 0x30 premennu typu char (t.j. jedeb jediny byte), do ktorej sa snazia narvat (nainicializovat ju na) pointer na retazcovu konstantu (string literal). Ta pochopitelne moze byt potom umiestnena kdekolvek.
>>
>> wek
>>
>>
>>
>> -----Original Message-----
>>
>> From:  "Miroslav Draxal"<evik na volny.cz>
>> Subj:  C xc8
>> Date:  Tue 5. Dec 2017 17:24
>> Size:  2K
>> To:  "'HW-news'"<hw-list na list.hw.cz>
>>
>>       Dobrý den,
>> Ne3 to ode1lu jako bug vxc8, optám se zdej1ích odborníku.
>>
>> const char ootLoader [] @0x30 = {"BootLoader"};
>>   ulo3í do ROM od adresy 0x30
>>
>> const char ootLoader  @0x30 = {"BootLoader"};
>>
>> ulo3í do ROM od adresy 0x100 pro procesory do 8kW, 0xf00 pro procesory do 64kW bez upozorniní.
>> Myslíte, 3e je ktomu nijaký duvod?
>> Díky za reakce, Míra
>>
>> Ps. Navazuje na vlákno PIC XC8 Bootloader
>>
>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz 
>> http://list.hw.cz/mailman/listinfo/hw-list
>
>_______________________________________________
>HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz 
>http://list.hw.cz/mailman/listinfo/hw-list

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list