This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compiler/assembler puzzler



Hi all,  I've run into a problem having to do with the assembly language output by the TI C compiler.

I'm compiling the lwip stack.  In it you'll find this code:

At line 75, msg.function is assigned the address of the do_newconn function.  Simple enough.  Here's the assembler output as provided by a disassembly window:

Here's where it gets a little fuzzy for me because I'm new to ARM assembly, but I think R0 is getting assigned the 32-bit value located at $C$CON1.

This is where I get lost competely.  0x200075B8 is definately not the location of the do_newconn function.  Here's the do_newconn function:

It's at 0xCE7A.  Wait, gets better.  Here's the registers just after the load of $C$CON1 into R0:

0xCE7B?  Ignore the fact that I don't understand where that value came from--it's one byte off anyway.  That's a problem, of course.

If anyone has a little time to show me what I'm missing, I'd really appreciate it!

Thanks!