Re: Re: přístup na byty v int C

Jaromir Sukuba jarin.hw na gmail.com
Středa Říjen 30 11:29:00 CET 2013


Presvedcil som sa: XC1.12

unsigned long i;
...
i++;

0xFFEA: MOVLW 0x1
0xFFEC: ADDWF i, F, ACCESS
0xFFEE: MOVLW 0x0
0xFFF0: ADDWFC 0x8, F, ACCESS
0xFFF2: MOVLW 0x0
0xFFF4: ADDWFC 0x9, F, ACCESS
0xFFF6: MOVLW 0x0
0xFFF8: ADDWFC 0xA, F, ACCESS

Cize celkom pochopitelny kus "assembleru". Nulovanie W po kazdej
inkrementacii je predpokladam dan za free verziu kompilatora - pouziva
sa vseobecne pripocitanie 32-bitovej konstanty k premennej, bez ohladu
na to, ze jedno z nich je skratka jednotka.
Andy, ako to robis, ze uplne bezne veci u teba skratka nefunguju?
Rozmyslam, ze by som ta zamestnal ako beta-testera.




Dňa 30. októbra 2013 11:12, Andrej Jancura <aj.hwlist na gmail.com> napísal/a:
> Ahoj,
>
> nemusis sa hned citit dotknuty vsetkym co napisem. Pozri ja som to pochopil
> tak, ze aj ked uniony nie su podla normy a cez pointre mi nikdy takato
> konverzia nechodila, lebo kompilator vrestal, myslim si, ze mozes pisat kod
> tak, aby si bol podla normy a sucasne vygenerujes optimalny kod v asm. Taky
> ako by si ho napisal v pure asm.
>
> Tie konstrukcie si ale musis najst sam a pozriet ako sa co preklada. A v
> pripade PicC a XC8 je kazda C konstrukcia generovana inym kodom. Mozes sa o
> tom presvedcit napr. ked si das unsigned long int i, a v programe mas i++...
> Neviem sice ako posledna xc1.21, ale nejaka 1.12 to generovala takou
> rutinou, kde som prvy krat v zivote skonstatoval, ze neviem pochopit co ten
> kus asembleru robi. Predchadzajuca verzia kompilatora totiz pouzivala
> klasicky incfsz...
>
> Zial uz som dlho nic s tymto nerobil, pretoze som bol znechuteny tym, ze aj
> ked som vygeneroval z C kod ako keby bol z asembleru v app. note, aj tak mi
> to poriadne nechodilo na hw. Avsak medzicasom som prisiel na par trikov, ale
> to sa zda, ze je cisto hw zalezitost a treba pouzit iny algoritmus obsluhy
> hw.
>
> A.
>
>
> Dňa 30. októbra 2013 9:57, Jan Waclawek <konfera na efton.sk> napísal(-a):
>
>> Lenze type punning nie je podla normy; resp. z normy priamo vyplyva, ze
>> obe
>> metody maju normou nedefinovany vysledok.
>>
>> Ako som bol pisal, ak mas pocit, ze nieco treba mat urcite napisane
>> nejakym
>> sposobom, netreba zbytocne vahat a treba ist do asm. To zase u tych ARMov
>> nie je uplne trivialne, ale u 8-bitov sa to priamo nuka. Uznavam, ze nie
>> kazdy kompilator ma taku uzasnu podporu pre inline asm ako gcc a uznavam,
>> ze u gcc to zase pada na hubu kvoli mizernej dokumentacii...
>>
>> wek
>>
>>
>>
>> ----- Original Message ---------------
>> >Ahoj,
>> >
>> >to si mozes dovolit na tvojej F4... Ale na cipe s 8K-16K instrukcii je
>> >kazdy trik dobry. Ono aj ked to pises podla normy, tak sa to da napisat
>> >rozne, tak aby si mal minimalny vygenerovany kod.
>> >
>> >
>> >2013/10/29 Jan Waclawek <konfera na efton.sk>
>> >
>> >> Ak "sa to napise" tak, ako norma predpisuje, tak na optimalizaciach
>> >> nezalezi.
>> >>
>> >> A o to tu ide.
>> >>
>> >> wek
>> >>
>> >>
>> >> ----- Original Message ---------------
>> >> >No ja bych rekl, ze vic zalezi na zapnutych optimalizacich, nez jak se
>> >> >to napise...
>> >>
>>
>> _______________________________________________
>> 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