[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