一、函数的类型
1、 叶子函数
C代码
void test(){ int a = 2; int b = 3; } void func(){ int a = 4; int b = 5; test(); }
test的汇编代码
sub sp, sp, #16 ;=16 orr w8, wzr, #0x3 orr w9, wzr, #0x2 str w9, [sp, #12] str w8, [sp, #8] add sp, sp, #16 ;=16 ret
2、⾮叶子函数
函数里面会调用其他的函数
func的汇编代码
sub sp, sp, #32 ; =32 stp x29, x30, [sp, #16] ; 8-byte Folded Spill add x29, sp, #16 ; fp = sp + 16 mov w8, #5 orr w9, wzr, #0x4 stur 4, [x29, #-4] str 5, [sp, #8] bl _haha ldp x29, x30, [sp, #16] ; 8-byte Folded Reload add sp, sp, #32 ; =32 ret