I had just a look at a very simple SPARC assembly output that I got from this C programm:
int addition_func(int a, int b) { return(a+b); } void main() { int a = 20; int b = 19; int res; res = addition_func(a, b); } Disassembly of section .text:
00000000 <addition_func>: 0: 81 c3 e0 08 retl 4: 90 02 00 09 add %o0, %o1, %o0 00000008 <main>: 8: 90 10 20 14 mov 0x14, %o0 c: 92 10 20 13 mov 0x13, %o1 10: 82 13 c0 00 mov %o7, %g1 14: 40 00 00 00 call 14 <main+0xc> 18: 9e 10 40 00 mov %g1, %o7 1c: 01 00 00 00 nop I do not understand why the "call" instruction says:
call 14 <main+0xc> Why is it not:
call 0 <addition_func+0x0> The program works fine, however, this output does not make too much sense to me. Any suggestions why it is handled this way?
Thanks