当前位置:诺佳网 > 电子/半导体 > 存储技术 >

指令指针寄存器是什么_作用有哪些

时间:2017-11-13 | 栏目:存储技术 | 点击:

  什么是指令指针寄存器

  指令指针寄存器IP(X86型CPU)相当于ARM型CPU中的程序计数器PC,用于控制程序中指令的执行顺序。正常运行时,IP中含有BIU要取的下一条指令(字节)的偏移地址,一般情况下,每从内存中存取一次指令码,IP就自动加1,从而保证指令的顺序执行。IP实际上是指令机器码存放内存单元的地址指针,IP的内容可以被转移类指令(如JMP)强迫改写,以改变程序执行的顺序。

  注意!我们编制的程序不能直接访问IP,即不能用指令去取出IP的值或给IP设定值(如不能用mov指令给IP赋值)。

  指令指针寄存器是什么_作用有哪些

  指令指针寄存器的作用

  指针寄存器包括 EBP ESP,低 16 位为 SBP SP。

  BP 为可以直接存取堆栈中的数据,SP 可以访问栈顶。

  EBP 被用做框架指针,例如,一个程序在逆向后的代码中:

  push ebp;

  mov ebp,esp;

  ebp 保存了一个栈,最后 mov 使得 esp 成为该栈的栈顶指针。

  指令指针寄存器记作 EIP ,低 16 位为 IP 。用来存放下次将要执行的指令在代码段的偏移量。

  32位CPU有2个32位通用寄存器EBP和ESP。其低16位对应先前CPU中的SBP和SP,对低16位数据的存取,不影

  响高16位的数据。

  寄存器EBP、ESP、BP和SP称为指针寄存器(PointerRegister),主要用于存放堆栈内存储单元的偏移量,

  用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

  指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

  它们主要用于访问堆栈内的存储单元,并且规定:

  BP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;

  SP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。

您可能感兴趣的文章:

相关文章