[elektro] AVR assembly kérdés

Bali Zoltan eltexto at freemail.hu
Wed Feb 16 19:59:35 CET 2011


Hali!

>A kisebb-nagyobb vizsgálat viszont hibázik bizonyos esetekben a
>szimulátorom szerint, mintha pont a carry bit "nem menne végig" az
>összehasonlítás láncon:

Nálam jónak tünik. Az utolsó 12-12 összehasonlítás előtt van
a carry és utána is. iar.

Üdv.  Zoli






2011. 02. 16. 17:53 keltezéssel, Varsanyi Peter írta:
>
> 		Sziasztok!
>
>
> Nekiálltam asm-ben kioptimalizálni egy gyors kódot, de elakadtam egy
> elméleti problémánál. Adott két 24 bites elõjel nélküli szám, mondjuk
> R20:R21:R22 és R23:R24:R25 Ezek között akarok kisebb, nagyobb, egyenlõ
> vizsgálatokat végezni. Adatlap szerint a "CP Rd,Rr" végez byte-ok közötti
> compare-t, a "CPC Rd,Rr" pedig ettõl abban tér el, hogy "carry átvitelt" is
> csinál. Ezzel szemben az alábbit tapasztaltam:
>
> Az egyezés vizsgálat szépen mûködik, bármely eltérést kiszúr a ZERO bittel,
> amely szépen "végigmegy" az utasításokon, így a végén egyben kiértékelhetõ:
> 	cp  R20,R23
> 	cpc R21,R24
> 	cpc R22,R25
> 	brne/breq<címke>
>
> A kisebb-nagyobb vizsgálat viszont hibázik bizonyos esetekben a
> szimulátorom szerint, mintha pont a carry bit "nem menne végig" az
> összehasonlítás láncon:
> 	cp  R20,R23
> 	cpc R21,R24
> 	cpc R22,R25
> 	brcc/brcs<címke>
> A hiba akkor jelentkezik, amikor pl. az 123456H és a 123555H számot
> hasonlítom össze. A középsõ szám eltérését jelzõ carry bit felülíródik az
> utolsó számnál végrehajtott compare során - legalábbis a szimulátorom ezt
> állítja...
>
> Végezetül az AVR assembly leírás egyik oldala szerint a BRCC és a BRSH
> között az a különbség, hogy az utóbbi C+Z bitet figyel, míg az elsõ csak a
> Carry bitet, egy másik oldala szerint a kettõ utasítás egyenértékû, és
> mindkettõ csak a Carry bitet figyeli. Ugyanez a szitu a BRCS és BRLO
> utasításokkal. Látszólag így is mûködik, így viszont nem értem a doksi 10.
> oldalán leírtakat. (AVR Instruction Set, 0856C-09/01)
>
> Szóval per pillanat nem tudok máshogy összehasonlítani két 24 bites számot,
> mint 3-3 CP és BRxx utasítással, ami így "lassabb", mint amit szerintem el
> lehetne érni, ha a CP és a CPC utasítás között tényleg lenne különbség.
>
> A kérdésem tehát: hogy is van ez az egész? Van valami jó leírás a tipikus
> AVR ASM-es feltétel-vizsgálatokról, ill. valami rendes szimulátor, amely
> biztosan, sõt holtbiztosan teljesen tökéletesen dolgozik? Az enyémnek már
> nem hiszek...
>
> Köszi:
>
> Pepe
>
> -----------------------------------------
>            elektro[-flame|-etc]
>    
>
>
>
> No virus found in this incoming message.
> Checked by AVG - www.avg.com
> Version: 9.0.872 / Virus Database: 271.1.1/3447 - Release Date: 02/16/11 08:34:00
>
>    



More information about the Elektro mailing list