At 22:19 2003-1-10 +0100, you wrote:
I just observed very strange thing.

By changing the source line order the same source line (multiplication) is
translated either into

    movea.w   d4,a0
    move.l    a0,86(a7)
    move.l    a0,d0
    move.l    #-1730,d1
    jsr       __lmul__
    move.l    d0,d3

or into

    move.w    d6,d3
    muls.w    #-1730,d3

The second alternative seems to be optically shorter, but it actually uses
register value inherited from the previous code. That's OK.
What I don't understand is that in one case the multiplication is realized
via muls instruction, in the other a call to the emulator is used instead.
Could you show the lines of code? The first one is doing a signed 32-bit multiplication, while the second is doing a signed 16-bit multiplication. Is it possible that with one line order, you've got a long temporary result that's affecting the multiplication?

--
Ben Combee <[EMAIL PROTECTED]>
CodeWarrior for Palm OS technical lead
Palm OS programming help @ www.palmoswerks.com

--
For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/

Reply via email to