- #include <stdio.h>
- int m = 8;
- int fun(int a,int b)
- {
- int c = 0;
- c = a + b;
- return c;
- }
- int main()
- {
- int i = 4;
- int j = 5;
- m = fun(i, j);
- return 0;
- }
编译一下,然后反汇编:
- $ arm-linux-gnueabi-gcc main.c -o main
- $ arm-linux-gnueabi-objdump -D -D main
- 00010400 <fun>:
- 10400: e52db004 push {fp} ; (str fp, [sp, #-4]!)
- 10404: e28db000 add fp, sp, #0
- 10408: e24dd014 sub sp, sp, #20
- 1040c: e50b0010 str r0, [fp, #-16]
- 10410: e50b1014 str r1, [fp, #-20] ; 0xffffffec
- 10414: e3a03000 mov r3, #0
- 10418: e50b3008 str r3, [fp, #-8]
- 1041c: e51b2010 ldr r2, [fp, #-16]
- 10420: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
- 10424: e0823003 add r3, r2, r3
- 10428: e50b3008 str r3, [fp, #-8]
- 1042c: e51b3008 ldr r3, [fp, #-8]
- 10430: e1a00003 mov r0, r3
- 10434: e24bd000 sub sp, fp, #0
- 10438: e49db004 pop {fp} ; (ldr fp, [sp], #4)
- 1043c: e12fff1e bx lr
- 00010440 <main>:
- 10440: e92d4800 push {fp, lr}
- 10444: e28db004 add fp, sp, #4
- 10448: e24dd008 sub sp, sp, #8
- 1044c: e3a03004 mov r3, #4
- 10450: e50b300c str r3, [fp, #-12]
- 10454: e3a03005 mov r3, #5
- 10458: e50b3008 str r3, [fp, #-8]
- 1045c: e51b1008 ldr r1, [fp, #-8]
- 10460: e51b000c ldr r0, [fp, #-12]
- 10464: ebffffe5 bl 10400 <fun>
- 10468: e1a02000 mov r2, r0
- 1046c: e59f3010 ldr r3, [pc, #16] ; 10484 <main+0x44>
- 10470: e5832000 str r2, [r3]
- 10474: e3a03000 mov r3, #0
- 10478: e1a00003 mov r0, r3
- 1047c: e24bd004 sub sp, fp, #4
- 10480: e8bd8800 pop {fp, pc}
- 10484: 00021024 andeq r1, r2, r4, lsr #32