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

存储技术

595人已加入

描述

  什么是指令指针寄存器

  指令指针寄存器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)寄存器,用它只可访问栈顶。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分