堆栈指针
- sp (Stack Pointer 栈顶指针)
- fp (Frame Pointer 栈底指针), 也就是x29
函数的堆栈
- 叶子函数(内部不在调用其他函数)
- 非叶子函数
叶子函数示例
void test() {
int a = 10;
int b = 20;
}
非叶子函数示例
void test() {
int a = 10;
int b = 20;
printf("111");
}
通过终端指令,将c文件转换成汇编代码
新建c文件
void haha() {
int a = 1;
int b = 2
}
终端cd到c文件的文件夹,执行指令
xcrun -sdk iphoneos clang -arch arm64 -S CTest.c
生成对应的CTest.s文件
.section __TEXT,__text,regular,pure_instructions
.build_version ios, 12, 0
.globl _haha ; -- Begin function haha
.p2align 2
_haha: ; @haha
.cfi_startproc
; %bb.0:
sub sp, sp, #16 ; =16
.cfi_def_cfa_offset 16
orr w8, wzr, #0x2
orr w9, wzr, #0x1
str w9, [sp, #12]
str w8, [sp, #8]
add sp, sp, #16 ; =16
ret
.cfi_endproc
; -- End function
.subsections_via_symbols