Hi,

you are looking in the right place. Probably you can not see your
functions because gcc inlines them for performance and code size
issues (the balance between the two is actually a complicate matter,
so let's just skip the details -
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Inline.html ). What ncc
does is actually to translate all the nesC code into a big C code,
app.c . Since C has not namespaces it mangles the function names to
avoid name clashing. The schema it uses is:
componentname__interfacename__eventorfunctionname. Let's take for a
sample code-hunting session the Blink application. The event
Timer0.fired() in the Blink application is translated into
BlinkC__Timer0__fired() . If you look for it in
build/yourplatforname/app.c you'll see that it is declared as:

static inline void BlinkC__Timer0__fired(void )

The "inline" keyword means that the compiler will evaluate the
possibility to substitute the code of the function into its caller. In
the case of BlinkC__Timer0__fired you'll see that it is called only by
 the VirtualizeTimerC__0__Timer__fired(), so is highly probable that
the compiler will find the inlining profitable both in terms of code
size and speed. But VirtualizeTimerC__0__Timer__fired is inlineable
itself, and is called by VirtualizeTimerC__0__fireTimers(uint32_t now)
(which is not declared as inline). This is the function name that you
can find using msp430-objdump. If you try to dump main.exe for the
blink application you'll see that the
VirtualizeTimerC__0__Timer__fired is inlined into
VirtualizeTimerC__0__fireTimers, and its assembly code is (snipped):

    46fa:       4f 4b           mov.b   r11,    r15
    46fc:       1f 93           cmp     #1,     r15     ;r3 As==01
    46fe:       0e 24           jz      $+30            ;abs 0x471c
    4700:       2f 93           cmp     #2,     r15     ;r3 As==10
    4702:       03 34           jge     $+8             ;abs 0x470a
    4704:       0f 93           tst     r15
    4706:       04 24           jz      $+10            ;abs 0x4710
    4708:       1b 3c           jmp     $+56            ;abs 0x4740
    470a:       2f 93           cmp     #2,     r15     ;r3 As==10
    470c:       0d 24           jz      $+28            ;abs 0x4728
    470e:       18 3c           jmp     $+50            ;abs 0x4740
    4710:       b0 12 42 40     call    #0x4042
    4714:       f2 e0 10 00     xor.b   #16,    &0x0031 ;#0x0010
    4718:       31 00
    471a:       0b 3c           jmp     $+24            ;abs 0x4732
    471c:       b0 12 42 40     call    #0x4042
    4720:       f2 e0 20 00     xor.b   #32,    &0x0031 ;#0x0020
    4724:       31 00
    4726:       05 3c           jmp     $+12            ;abs 0x4732
    4728:       b0 12 42 40     call    #0x4042
    472c:       f2 e0 40 00     xor.b   #64,    &0x0031 ;#0x0040
    4730:       31 00
    4732:       b0 12 56 40     call    #0x4056

The code that turns on and off the leds is:

    4710:       b0 12 42 40     call    #0x4042
    4714:       f2 e0 10 00     xor.b   #16,    &0x0031 ;#0x0010
    4718:       31 00
    471a:       0b 3c           jmp     $+24            ;abs 0x4732
    471c:       b0 12 42 40     call    #0x4042
    4720:       f2 e0 20 00     xor.b   #32,    &0x0031 ;#0x0020
    4724:       31 00
    4726:       05 3c           jmp     $+12            ;abs 0x4732
    4728:       b0 12 42 40     call    #0x4042
    472c:       f2 e0 40 00     xor.b   #64,    &0x0031 ;#0x0040
    4730:       31 00
    4732:       b0 12 56 40     call    #0x4056

(the calls to #0x4042 and #0x4056 respectively begin and and an atomic
section). So you may not find your function name when you dump the
assembled file, but your code is still there ;)

Hope this helps.

Regards

--
Giuseppe Cardone



On Wed, Feb 10, 2010 at 9:34 AM, Arik Sapojnik <[email protected]> wrote:
> Hey,
>
> I have generated assembly code by running "msp430-objdump -D main.exe".
> But I don't see any of my functions there.
> Where can I see my code?
>
> --
> Best Regards,
> Arik Sapojnik
>
>
> _______________________________________________
> Tinyos-help mailing list
> [email protected]
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to