逆向反汇编:X86常用的寄存器及一般使用的场景

一、数据寄存器

     1.1 EAX: Acculturator 累加寄存器(32位), AX 算术运算主要寄存器(高16位),可作为函数返回值;

     1.2 EBX:base 基址寄存器,存放指针,内存寻址时存放的基址,寄存器间接寻址方式;

     1.3 ECX:Count 计数寄存器,可做thiscal 中this指针存放的位置,可做Rep前缀指令和Loop指令的内定寄存器,可做fastcal的第一个参;

     1.4 EDX:资料寄存器,可用来存放整除产生的余数,可做fastcal 的第二个参;

     1.5 EDI:Destiny 目标索引寄存器,字符串操作中作为目标串地址;

     1.6 ESI:source 来源索引寄存器,可做this指针,可做运算寄存器;

     1.7 EBP:基地址,栈底指针,也被称为框架指针,【esp,ebp】之间存放当前函数的局部变量;

        EBP上面是当前函数的临时变量,下面是返回地址和参数和上层函数的局部变量;

     1.8 ESP:extended base pointer 堆栈指针,栈顶指针,在函数内部不变,可寄存器相对寻址。

     1.9 EIP: 将要运行的代码位置;

 寄存器 编号(二进制) 编号(十进制) 
32位16位8位    
EAXAXAL 000 0
ECXCXCL 001 1
EDXDXDL 010 2
EBXBXBL 011 3
ESPSPAH 100 4
EBPBPCH 101 5
ESISIDH 110 6
EDIDIBH 111 7
       
       
备注: 之所以 31~0 的顺序,是因为是小端。      
31    1615      0 15      0 15     87      0
EAX  AX AHAL
ECX  CX CHCL
EDX  DX DHDL
EBX  BX BHBL
ESP  SP   
EBP  BP   
ESI  SI   
EDI  DI   

二、段寄存器

     CS:code segment 代码段的段值 , 加EIP 就是当前地址;

     DS:data segment 数据段;

     SS: stack segment 堆栈段: + SP 

     ES: Extra segment 附加段寄存器 : FS,GS

   当程序执行时,要决定CS、DS、SS在内存中哪里,通常DS时固定的,而根据需要改CS;

三、状态值寄存器

    EFLAGES:于操作系统有关,一组状态值,系统标志 及控制位,中断或者异常的时候,EFLAGES的值被保存于TSS(Task State Segment,任务状态段);

   ZF:结果为0,置灰为1,否则清0;

   CF:(CarryFlag) 进位标志,溢出,最高有效位溢出(如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。);使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。
   OF: 溢出标志OF(OverflowFlag)(反映有符号数加减运算所得结果是否溢出。)
          如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。
   进位与溢出的区别:进位标志表示无符号数运算结果是否超出范围;溢出标志表示有符号数运算结果是否超出范围.

   SF:有符号整型最高位,就是0表示正,1表示负;(反映运算结果的符号位,它与运算结果的最高位相同。)

  

   PF:奇偶标志PF(ParityFlag),反映运算结果中“1”的个数的奇偶性(如果“1”的个数为偶数,则PF的值为1,否则其值为0。)

   AF:辅助进位标志AF(AuxiliaryCarryFlag)
           在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:
           (1)、在字操作时,发生低字节向高字节进位或借位时;
           (2)、在字节操作时,发生低4位向高4位进位或借位时

   IF:中断允许标志IF(Interrupt-enableFlag)

 DF:方向标志DF(DirectionFlag)

   TF: 追踪标志TF(TrapFlag),当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求.这种方式主要用于程序的调试。

上面为一些大概的总结, 具体看同分类下的转载文章;

   

    

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值