x86处理器零碎知识

EFLAGS/RFLAGS

  • intel手册:3.4.3 EFLAGS Register
    image
    image
    image
    image
    image
    image

push和pop操作

x86_64架构中,push和pop指令用于将数据压入栈中或从栈中弹出数据。具体运行过程如下:

  1. push指令的运行过程:(先减)

    • 将要压入栈中的数据放入寄存器中。
    • 将栈指针寄存器(RSP)减去8个字节(因为x86_64架构中一个字节为8位),使其指向栈顶。
    • 将数据从寄存器中存入栈顶指向的内存地址中。
  2. pop指令的运行过程:(后加)

    • 将栈顶指向的内存地址中的数据取出。
    • 将栈指针寄存器(RSP)加上8个字节,使其指向下一个栈顶。
    • 将取出的数据存入指定的寄存器中。

需要注意的是,栈是一种后进先出(LIFO)的数据结构,因此push指令将数据压入栈顶,而pop指令则从栈顶弹出数据。此外,栈指针寄存器(RSP)指向的是栈顶元素的地址,而不是栈底元素的地址。

栈底是SP的初始位置,栈顶是SP的当前位置

异常和中断

posted @ 2023-11-01 18:47  摩斯电码  阅读(27)  评论(0编辑  收藏  举报