arm64汇编篇-04堆与栈的关系
2018-05-24 本文已影响20人
ClementGu
栈:
栈是一种具有特殊的访问方式的存储空间(后进先出, Last In Out Firt,LIFO)。
堆:
堆用于动态分配和释放程序所使用的对象.(这边不详细介绍堆,汇编中主要是看栈的运用)。
地址读取:
内存中内存地址的读取是从低地址向高地址读取的。
栈与堆的关系:
上面简单的画了一下堆栈的关系,Stack Overflow大家应该不是很陌生,在开发中遇到的很多刁钻的问题都可以在Stack Overflow中找到答案而其意义却是堆栈溢出。
栈的内存开辟是从高地址往低地址段开辟,但是读取内存都是从低地址往高地址读取的,所以栈里面涉及到栈平衡和叶子函数调用的问题,在后续文章里会介绍。
同时栈的开辟是通过移动sp来实现的,上一章介绍了sp寄存器是始终指向栈顶的,所以在叶子函数中可以不开辟栈来实现寄存器数据操作。