again - &total + n will add n*4 to 'total' is this an output of objdump??? looks like something is really missing here.
incorrect addressing might be result of *&, etc operations... ~d On Saturday 04 January 2003 00:12, Mark Stokes wrote: > Ok, I'm starting a new thread because that last bug/whatever was getting > lost in the discussion about the DADD high byte conversation. > > I found something weird. If I have the following: > interrupt (BASICTIMER_VECTOR) wakeup BasicTimerIRQ(void) > { > total = total + 25; > 1378: b2 50 19 00 04 02 add #25, &0x0204 ;#0x0019 > 137e: 82 63 06 02 adc &0x0206 ; > __asm__( "dadd %A1, %A0\n\t" > 1382: b2 a0 19 00 00 02 dadd #25, &0x0200 ;#0x0019 > 1388: 82 a3 02 02 dadc &0x0202 ; > "dadd %B1, %B0" : "=rm" (total) : "i" (25)); > __asm__("\tDADD %1, %0": "=rm" (total) : "n" (25) ); > 138c: b2 a0 19 00 00 02 dadd #25, &0x0200 ;#0x0019 > __asm__("\tDADC %0": "=rm" (*((&total)+1) ) ); > 1392: 82 a3 04 02 dadc &0x0204 ; > _BIC_SR_IRQ(LPM3_bits); > 1396: b1 c0 d0 00 00 00 bic #208, 0(r1) ;#0x00d0 > //P1OUT=~P1OUT; //invert port 1 > } > 139c: 00 13 reti > > Notice the first assignment is referencing the incorrect RAM location of > 204 and 206. This is curious. However, if I remove the last ASM > statement, it works fine: > interrupt (BASICTIMER_VECTOR) wakeup BasicTimerIRQ(void) > { > > total = total + 25; > 1378: b2 50 19 00 00 02 add #25, &0x0200 ;#0x0019 > 137e: 82 63 02 02 adc &0x0202 ; > __asm__( "dadd %A1, %A0\n\t" > 1382: b2 a0 19 00 00 02 dadd #25, &0x0200 ;#0x0019 > 1388: 82 a3 02 02 dadc &0x0202 ; > "dadd %B1, %B0" : "=rm" (total) : "i" (25)); > __asm__("\tDADD %1, %0": "=rm" (total) : "n" (25) ); > 138c: b2 a0 19 00 00 02 dadd #25, &0x0200 ;#0x0019 > //__asm__("\tDADC %0": "=rm" (*((&total)+1) ) ); > _BIC_SR_IRQ(LPM3_bits); > 1392: b1 c0 d0 00 00 00 bic #208, 0(r1) ;#0x00d0 > //P1OUT=~P1OUT; //invert port 1 > } > 1398: 00 13 reti > > Any ideas? Apparently, "(*((&total)+1) )" is somehow affecting the use > of "total" in the first assignment??! Again, a quick check of the > "main" function, and "total" is being referenced at 0x0200 (which is > where it is). > > -Mark > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Mspgcc-users mailing list > Mspgcc-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/mspgcc-users -- ********************************************************************* ("`-''-/").___..--''"`-._ (\ Dimmy the Wild UA1ACZ `6_ 6 ) `-. ( ).`-.__.`) Enterprise Information Sys (_Y_.)' ._ ) `._ `. ``-..-' Nevsky prospekt, 20 / 44 _..`--'_..-_/ /--'_.' ,' Saint Petersburg, Russia (il),-'' (li),' ((!.-' +7 (812) 314-8860, 5585314 *********************************************************************