arm64汇编篇-04堆与栈的关系

栈:

栈是一种具有特殊的访问方式的存储空间(后进先出, Last In Out Firt,LIFO)。



堆:

堆用于动态分配和释放程序所使用的对象.(这边不详细介绍堆,汇编中主要是看栈的运用)。

地址读取:

内存中内存地址的读取是从低地址向高地址读取的。

栈与堆的关系:




上面简单的画了一下堆栈的关系,Stack Overflow大家应该不是很陌生,在开发中遇到的很多刁钻的问题都可以在Stack Overflow中找到答案而其意义却是堆栈溢出。

栈的内存开辟是从高地址往低地址段开辟,但是读取内存都是从低地址往高地址读取的,所以栈里面涉及到栈平衡和叶子函数调用的问题,在后续文章里会介绍。

同时栈的开辟是通过移动sp来实现的,上一章介绍了sp寄存器是始终指向栈顶的,所以在叶子函数中可以不开辟栈来实现寄存器数据操作。


猜你喜欢

转载自blog.csdn.net/asuno_1/article/details/80582529