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