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