PIC18F4620 TMR1 furcsa

Moczik Gabor pm at progzmaster.hu
Fri May 25 19:03:15 CEST 2007


Tibike wrote:
> Már az elején leszögeztem: nem értek én ehhez. Különben is, ott a
> smile :-)

Ne sétrődj meg, értettem a tréfát, meg egyúttal leírtam, miért csinálom így.

> Egyre több magasszintű nyelvben láthatja viszont - és egyre gyakrabban
> - az ember, hogy a verziószámok növekedése nem a meglévő hibák
> eltüntetését, az új procitípusok zökkenőmentes felvételét jelenti,
> hanem egyes, addig jól működő funkciók megbolondulását, rejtélyek
> sokaságát hozza magával.

Ez sajnos eléggé igaz, viszont a hiba szerintem nem a magasszintű nyelvben 
van, hanem a fordító fejleszőiben. Ha valaminek a viselkedését a korábbitól 
vagy a szabványoktól eltérőre változtatják, akkor legalább dobjon már egy 
warning-ot, ne nekem kelljen már minden egyes verzió 700 oldalas referencia 
könyvét meg changelog-ját végigolvasni.

> Mivel minden nyelv végül egy csinos asm kódot generál, amit aztán
> lefordít valamivel hexává, végeredményben a programozó vakon bízik a
> magasszintű nyelv fejlesztőjének assembler-tudásában.

Nono, én azért nem :-)
Mindig be van ixelve a "generate asm list file", es lenyeges reszeken 
megnezem mit general!
Meg azért ismerem a PIC asm utasításkészletét, ha nem muszáj nem írok olyan 
C utasítást, amit tudom hogy csak komplexen lehet fordítani.

Pl. ilyen a CARRY=RD7 utasítás is. Sima értékadás, csak nincs olyan értékadó 
utasítás amivel egy regiszter 7. bitjét a carry-ba lehetne másolni, így 
aztán ez full optimalizálás mellett is 4 utasítást generál.
Pedig tudhatná, hogy van ilyen utasítás: RLCF, rotate left through carry :-)
Azt viszont nem tudhatja, hogy nekem utána már nem kell a PORTD értéke, 
tehát nem kell átmeneti helyre se tenni, lehet helyben rotálni is.

Tehát úgy gondolom, hogy a hatékony fejlesztéshez ismerni kell az 
architektúrát, különben az lesz a vége mint a PC szoftvereknek...

> 3200 sor C? Nem tudom. Érzésre olyan 2-2.5-ös szorzóval kijön asm-ben
> az is. Többen állítják, hogy az vígan átlátható - persze ésszel kell
> azt a progit megírni!

Hát, a generált asm list az majd 10x akkora, persze abban van olyan szemét 
amit ember nem úgy írna. Viszont nincs benne kommment, egy ASM kódhoz pedig 
nem baj ha van legalább minden 20-ik sorhoz :-)

Mindenesetre abban asszem egyetérthetünk, hogy egy C forrást a sajátosságok 
átírása után mégiscsak könnyebb 16F877->18F452->18F4620 vonalon portolni, 
mint az asm-et.

(pl. a fent említett utasítás is átneveződött RLF-ről RLCF-re...)

-- 
((( Móczik Gábor  )))--((( pm -> @ -> progzmaster -> . -> hu  )))
((( Skype: moczik )))--((( Website: http://www.progzmaster.hu )))



More information about the Elektro mailing list