Hello again!

There is something odd in the emitted assembly code for my ISR. Note that the 
first two 
instructions are "clr a" followed by "div x,a". This makes no sense to me.

void tim2c_isr(void) __interrupt (14)
{
    *(volatile char *)(0x5304) = 0;
__asm
__endasm;
}

sdcc -mstm8 -c x1.c

000000                         44 _tim2c_isr:
000000 4F               [ 1]   45         clr     a
000001 62               [ 2]   46         div     x, a
                               47 ;       x1.c: 4: *(volatile char *)(0x5304) = 
0;
000002 35 00 53 04      [ 1]   48         mov     0x5304+0, #0x00
                               49 ;       x1.c: 6: __endasm;
000006 80               [11]   50         iret

These two instructions go away if there is no inline assembly.

Any ideas?
Thanks,
-Richard

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to