C nebo ASM?
j s
jarin.hw@gmail.com
Ètvrtek Kvìten 21 15:56:15 CEST 2009
Isteze je,
najprv som sa do tohot vlakna nechcel zapajat, ked som videl vagny
popis "problemu" kolegu Michala HW, ako to unho byva zvykom.
Vas komentar je stopercentne spravny. Da sa kompilator ukecat, aby
pracoval s roznymi pamatovymi modelmi (ktore sa hodia podla toho, aku
a ako chcete vyuzivat pamat), potom je mnoho moznosti, ako skombinovat
optimalizacie (teda konkretne u MCC18 viac ako u hitechovskeho).
Skusal som dany kod pre MCC18 a len v ramci pasie a hrania sa s
nastaveniami som za niekolko minut vygeneroval rozne varianty kodu,
ktore sa od seba podstatne lisili citatelnostou a velkostou. To, ze
sem niekto placne hogo-fogo nejaky kod, nie je vobec nejaka relevantna
informacia.
A to som pisal len o optimalizaciach, ktore dokaze urobit kompilator
na danom kusku kodu. Ze mu clovek moze ulahcit pracu tym, ze pri
pisani kodu v C bude premyslat, to je druha vec. A znacne nepopularna
:-)
J.S.
2009/5/21 Jan Waclawek <konfera@efton.sk>:
> Neviem ako je to u PICiek, ale trebars u '51 velmi zalezi na konkretne zvolenom pametovom modeli, resp. na deklarovanych pamatovych triedach pre jednotlive premenne.
>
> Napriklad ak je pouzity "generic" pointer, ktory moze ukazovat do ktorejkolvek z pamati, tak jednak je ten pointer vacsi nez "specializovany", a druhak praca s nim je vyrazne komplikovanejsia. Podobne ak sa umiestnia premenne v externej pamati (v nejakom "vacsom" pamatovom modeli), tak znova je praca s nimi komplikovanejsia a zdlhavejsia.
>
> Nie je rozdiel medzi tymto a tym, co poslal pan kolega Michal HW, prave v takomto niecom?
>
> wek
>
>
>
> ----- Original Message ---------------
>
> Subject: Re: C nebo ASM?
> From: Petr Zahradnik <clexpert@clexpert.cz>
> Date: Thu, 21 May 2009 14:53:11 +0200
> To: HW-news <hw-list@list.hw.cz>
>
>>Puvodni zprava ze dne 21.5.2009 od Michal HW:
>>
>>> Divam se ne preklad Hitech C kompilatoru pro PIC18:
>>> Pom=0;
>>> for (Ukazatel=8;Ukazatel<32+8;++Ukazatel) {
>>> Pom=Pom+Bufer[Ukazatel];
>>> *p_Ukaz++=Bufer[Ukazatel];
>>> }
>>
>>Ja jsem to odeslal moc rychle, chtel jsem jeste doplnit, ze (stale
>>kompilator CCS C) pro PIC18 vyplodi toto:
>>
>>.................... Pom=0;
>>006E: CLRF 06
>>.................... for (Ukazatel=8;Ukazatel<32+8;++Ukazatel) {
>>0070: MOVLW 08
>>0072: MOVWF 07
>>0074: MOVF 07,W
>>0076: SUBLW 27
>>0078: BNC 00C0
>>.................... Pom=Pom+Bufer[Ukazatel];
>>007A: CLRF 03
>>007C: MOVF 07,W
>>007E: ADDLW 0A
>>0080: MOVWF FE9
>>0082: MOVLW 00
>>0084: ADDWFC 03,W
>>0086: MOVWF FEA
>>0088: MOVF FEF,W
>>008A: ADDWF 06,F
>>.................... *p_Ukaz++=Bufer[Ukazatel];
>>008C: MOVFF 09,03
>>0090: MOVF 08,W
>>0092: INCF 08,F
>>0094: BTFSC FD8.2
>>0096: INCF 09,F
>>0098: MOVWF x6E
>>009A: MOVFF 03,6F
>>009E: CLRF 03
>>00A0: MOVF 07,W
>>00A2: ADDLW 0A
>>00A4: MOVWF FE9
>>00A6: MOVLW 00
>>00A8: ADDWFC 03,W
>>00AA: MOVWF FEA
>>00AC: MOVFF FEF,70
>>00B0: MOVFF 6F,FEA
>>00B4: MOVFF 6E,FE9
>>00B8: MOVFF 70,FEF
>>.................... }
>>00BC: INCF 07,F
>>00BE: BRA 0074
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
Dal¹í informace o konferenci Hw-list