堆栈数据结构-stack data structure
堆栈的原则是:后进先出(Last-In-First-Out)。运行时的堆栈是一个内存数组,由ESP寄存器负责管理,32位下堆栈的每个字节的地址长度是4个字节。ESP寄存器基本上不会由程序员控制,要用call / ret / push / pop间接修改。
ESP总是指向添加或压入到栈顶的最后一个值的内存地址。程序一开始ESP显示的是栈底的内存地址,随着放入栈的内容增加,内存地址编号是越来越小的。
push的操作数可以是内存地址、寄存器、立即数。
push 8位内存数据/寄存器---不允许
push 16位内存数据/寄存器(栈顶减2)
push 32位内存数据/寄存器(栈顶减4)
push 立即数(立即数视为32位,栈顶减4)