目录
EFLAGS/RFLAGS
- intel手册:3.4.3 EFLAGS Register
push和pop操作
x86_64架构中,push和pop指令用于将数据压入栈中或从栈中弹出数据。具体运行过程如下:
- push指令的运行过程:(先减)
- 将要压入栈中的数据放入寄存器中。
- 将栈指针寄存器(RSP)减去8个字节(因为x86_64架构中一个字节为8位),使其指向栈顶。
- 将数据从寄存器中存入栈顶指向的内存地址中。
- pop指令的运行过程:(后加)
- 将栈顶指向的内存地址中的数据取出。
- 将栈指针寄存器(RSP)加上8个字节,使其指向下一个栈顶。
- 将取出的数据存入指定的寄存器中。
需要注意的是,栈是一种后进先出(LIFO)的数据结构,因此push指令将数据压入栈顶,而pop指令则从栈顶弹出数据。此外,栈指针寄存器(RSP)指向的是栈顶元素的地址,而不是栈底元素的地址。
栈底是SP的初始位置,栈顶是SP的当前位置