是课堂笔记,仅供自己复习使用
bl 指令 跳转 ,将下一条指令放入lr(X30)寄存器
ret 返回到lr 寄存器 保存的地址,执行代码
lr 寄存器
pc 寄存器 指向马上要执行的代码地址
sp 寄存器 指向我们的栈
栈平衡 (每个函数调用完毕后,将拉伸的占栈空间平衡回去 (将sp加回去))
栈 : 函数调用会开辟栈空间 (内存空间),
作用:存放函数局部变量、参数、寄存器的保护。
参数 :X0 - X7 (个数有关系、数据类型也有关(float有特殊的寄存器、向量寄存器))放得下才行,多余的会入栈
嵌套调用: 回去的路保护
|— A(开辟) —> B (开辟) —>A (开辟)
|— A <- -> 递归 ,内存溢出
不停的开辟空间没有平栈
=========================================================
内存分区
代码区: 特点:可读可写可执行
栈区域: 存放参数和局部变量
堆区域: 动态申请 可读可写
全局:可读可写
常量区:只读!(逆向可读可写)