堆栈初识

堆栈初识
xiu堆栈
用于临时存放数据的一种【数据项按序排列的数据结构】,堆栈本质上就是一块内存
,由于寄存器可存储的大小有限,无法满足程序在运行的时候对临时数据的运算,所以我们需要在内存里开辟一块特殊的空间
1、用于操作临时数据
2、它需要记得自己存了多大的数据
3、对自己所管辖的数据要具有快速查找的功能
设计原理
借用两个三十二位寄存器来存储两个内存地址,这两个内存地址中间的区域就是堆栈的数据 base–>top
两个内存地址相减的值就是存储数据的大小
windows机器堆栈存储数据通常是从大的地址单位向小的地址单位存储数据
两个内存地址任选一个加上偏移量就能找到我们想要的数据
模拟堆栈
堆栈最早存入数据的内存地址编号称为栈底 EBP
堆栈最后存入数据的内存地址编号称为栈顶 ESP
假设ebx寄存器存放的我们栈底的地址
假设edx寄存器存放的我们栈顶的地址
入栈
也就是向堆栈里写入数据
存数据的时候栈底一直不变,也就是ebx不变
接下来存入四个字节的数据,可以先写入数据再改变栈顶的值
也可以先改变栈顶的值再写入数据
出栈
也就是把堆栈里面的数据拿出来
同理,先改变栈顶指针的值,再弹出值也行,重点就在于我们要计算清楚自己想要的数据的地址编号即可
快速操作堆栈
push
pop