Yes, this is a listing from the following command line: msp430-objdump -DS %1.elf > %1.lst Where %1 is the c source filename (w/o extension). I was unaware of the (&total+1) assignment. The question I have is then, if this is how that statement works, then why does it affect the first assignment, and not the asm statement when it occurs after both? What I'm trying to ask is, the asm statement references the correct RAM location. The += statement does not. And. The last asm (the one w/ the (&total+1) in it) is located after both other statements (therefore supposedly not affecting either of the other two statements?)
Thanks again. -Mark -----Original Message----- From: mspgcc-users-ad...@lists.sourceforge.net [mailto:mspgcc-users-ad...@lists.sourceforge.net] On Behalf Of Dmitry Sent: Friday, January 03, 2003 4:42 PM To: mspgcc-users@lists.sourceforge.net Subject: Re: [Mspgcc-users] Strange RAM location behavior w/ ASM 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 ********************************************************************* ------------------------------------------------------- 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