nope...
  e: b2 40 b4 ff  mov #-76, &0x0138 ;#0xffb4
12: 38 01
14: c2 43 39 01  mov.b #0, &0x0139 ;r3 As==00
check the third line...
or the result of mult does not depend on high nibble of OP2 ?
If there is a bug I'll fix this shortly.

~d


On Wednesday 20 October 2004 15:20, dkorov...@luxoft.com wrote:
> Dmitry,
> Will you explain me the thing. ((unsigned int)180) treated as a one byte
> variable? Why? Am I wrong in assumption that first wert should be
> converted to unsigned int, next 180 must be converted to unsigned int
> and at last multiplied. The result must be converted to unsigned int (no
> idea, what for).
> Am I right?
> Regards,
> Dmitriy Korovkin
>
> -----Original Message-----
> From: mspgcc-users-ad...@lists.sourceforge.net
> [mailto:mspgcc-users-ad...@lists.sourceforge.net]
> Sent: Wednesday, October 20, 2004 2:16 PM
> To: mspgcc-users@lists.sourceforge.net
> Subject: Re: [Mspgcc-users] Something strange with multiplication of
> constant byte numbers
>
> this is a feature actually:)
> you forgot about operations order.
> ~d
>
> On Wednesday 20 October 2004 12:48, Else Marcus wrote:
> > Hello!
> >
> > There is something strange with multiplication of constant byte
>
> numbers.
>
>
> ------------------------------------------------------------------------
> ---
>
> >- ------
> > Example 1.1:
> >
> > unsigned int multiplikation (unsigned char wert)
> > {
> >    return (unsigned int)((unsigned int)wert*((unsigned int)180));
> >    0: 02 12        push r2  ;
> >    2: 32 c2        dint
> >    4: 03 43        nop
> >    6: c2 4f 30 01  mov.b r15, &0x0130 ;
> >    a: c2 43 31 01  mov.b #0, &0x0131 ;r3 As==00
> >    e: b2 40 b4 ff  mov #-76, &0x0138 ;#0xffb4
> >   12: 38 01
> >   14: c2 43 39 01  mov.b #0, &0x0139 ;r3 As==00
> >   18: 1f 42 3a 01  mov &0x013a,r15 ;0x013a
> >   1c: 32 41        pop r2  ;
> > }
> >   1e: 30 41        ret
>
> ------------------------------------------------------------------------
> ---
>
> >- ------
> >
> > At line (e:) the high byte is set to 0xff. Because of the word access
>
> the
>
> > hardware multiplier will start and line (14:) has no effect.
> >
> > With storing the 180 in uiTemp the code is ok (Example 1.2).
>
> ------------------------------------------------------------------------
> ---
>
> >- ------
> > Example 1.2:
> >
> > unsigned int multiplikation (unsigned char wert)
> > {
> >    unsigned int uiTemp = 180;
> >    return (unsigned int)((unsigned int)wert*(unsigned int)uiTemp);
> >    0: 7f f3        and.b #-1, r15 ;r3 As==11
> >    2: 02 12        push r2  ;
> >    4: 32 c2        dint
> >    6: 03 43        nop
> >    8: 82 4f 32 01  mov r15, &0x0132 ;
> >    c: b2 40 b4 00  mov #180, &0x0138 ;#0x00b4
> >   10: 38 01
> >   12: 1f 42 3a 01  mov &0x013a,r15 ;0x013a
> >   16: 32 41        pop r2  ;
> > }
> >   18: 30 41        ret
>
> ------------------------------------------------------------------------
> ---
>
> >- ------
> >
> > The next example uses adding and shifting for multiplikation.
>
> ------------------------------------------------------------------------
> ---
>
> >- ------
> > Example 2.1:
> >
> > unsigned int multiplikation (unsigned char wert)
> > {
> >    return (unsigned int)((unsigned int)wert*((unsigned int)129));
> >    0: 4e 4f        mov.b r15, r14 ;
> >    2: 0e 5e        rla r14  ;
> >    4: 0e 5e        rla r14  ;
> >    6: 0e 5e        rla r14  ;
> >    8: 0e 5e        rla r14  ;
> >    a: 0e 5e        rla r14  ;
> >    c: 0e 5e        rla r14  ;
> >    e: 0e 5e        rla r14  ;
> >   10: 7f f3        and.b #-1, r15 ;r3 As==11
> >   12: 0f 8e        sub r14, r15 ;
> > }
> >   14: 30 41        ret
>
> ------------------------------------------------------------------------
> ---
>
> >- ------
> > The value to return ist wert - wert*128 and not wert + wert*128.
> >
> > With storing the 129 in uiTemp the code is ok again (Example 2.2).
>
> ------------------------------------------------------------------------
> ---
>
> >- ------
> > Example 2.2:
> >
> > unsigned int multiplikation (unsigned char wert)
> > {
> >    unsigned int uiTemp = 129;
> >    return (unsigned int)((unsigned int)wert*(unsigned int)uiTemp);
> >    0:       7f f3           and.b   #-1,    r15     ;r3 As==11
> >    2:       02 12           push    r2              ;
> >    4:       32 c2           dint
> >    6:       03 43           nop
> >    8:       82 4f 32 01     mov     r15,    &0x0132 ;
> >    c:       b2 40 81 00     mov     #129,   &0x0138 ;#0x0081
> >   10:       38 01
> >   12:       1f 42 3a 01     mov     &0x013a,r15     ;0x013a
> >   16:       32 41           pop     r2              ;
> > }
> >   18:       30 41           ret
>
> ------------------------------------------------------------------------
> ---
>
> >- ------
> >
> > Used options for mspgcc: -x c -c -g -O2 -Wall -mmcu=msp430x147
> >
> > Release: mspgcc-20040723.exe
> >
> > Is the different behavior between examples 1.1 and 1.2 and between 2.1
>
> and
>
> > 2.2 a bug or a feature?
> > Or is it my mistake?
> >
> > Marcus Else
> >
> >
> > -------------------------------------------------------
> > This SF.net email is sponsored by: IT Product Guide on
>
> ITManagersJournal
>
> > Use IT products in your business? Tell us what you think of them. Give
>
> us
>
> > Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out
>
> more
>
> > http://productguide.itmanagersjournal.com/guidepromo.tmpl
> > _______________________________________________
> > Mspgcc-users mailing list
> > Mspgcc-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/mspgcc-users
>
> -------------------------------------------------------
> This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
> Use IT products in your business? Tell us what you think of them. Give
> us
> Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out
> more
> http://productguide.itmanagersjournal.com/guidepromo.tmpl
> _______________________________________________
> Mspgcc-users mailing list
> Mspgcc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
> Use IT products in your business? Tell us what you think of them. Give us
> Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
> http://productguide.itmanagersjournal.com/guidepromo.tmpl
> _______________________________________________
> Mspgcc-users mailing list
> Mspgcc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users

Reply via email to