[elektro] GNU C forditási kérdés
hg12345
hg12345 at freemail.hu
Wed Oct 15 19:09:00 CEST 2008
Hi!
hogyan lehet rávenni a GNU-C 4.02 PIC30 forditót, hogyan ne
regiszter bázisra forditson, hanem indirekt cimzésre:
egy ilyen kód
(Source)^=((Source)^(New))&(Mask)
ne igy forduljon le: (ez nem jó!)
427C 801622 mov.w 0x02c4,0x0004
427E 801620 mov.w 0x02c4,0x0000
4280 B28830 xor.w #0x83,0x0000
4282 204831 mov.w #0x483,0x0002
4284 600001 and.w 0x0000,0x0002,0x0000
4286 690100 xor.w 0x0004,0x0000,0x0004
4288 881622 mov.w 0x0004,0x02c4
az egésszel alapvetően az a problémám, hogy Source-t indirekt
cimzéssel kéne kezelni.... : (A)
mov.w #Source,w2
mov.w #Mask,w1
mov.w #New,w0
xorwf.w w0,[w2],w0
and.w w1,w0,w0
xorwf.w w0,[w2],[w2]
ha a méret okozna a problémát akkor ez lenne a megoldás
mov.w #New,w0
mov.w #Mask,w1
xor.w Source,WREG
and.w w1,w0,w0
xor.w Source
a sokkal nagyobb probléma az, hogy miért kell egy helyben
megváltoztatandó cimen lévő adatot beolvasni és újra kiirni, amikor ez
epp elég problémás enélkül is.
Közvetlen ASM (****.S) fileban megirva megoldható, de nem szeretnék
ASM subrutinokat hivogatni
Nincs valakinek erre castolási otlete? (unsigned shor *) &
próbálkoztam de konvertálja.
probálkoztam inline asm kóddal, de ezt nem szereti egy ráadásúl
univerzális "g" nem is hajlandó lefordulni....
Már több hasonló kód problémával találkoztam
Van megoldásotok erre?
Játssz! Amőba, szófoci, biliárd, póker, sakk…kapcsolódj be, hogy kikapcsolódj :)
________________________________________________________
http://www.aramszunet.com
More information about the Elektro
mailing list