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
> [email protected]
> 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
*********************************************************************