基本程序运行寄存器

该文章为读《逆向工程核心原理》笔记

X86

介绍

一共有四种:

  • 通用寄存器(32位):
    • EAX:累加器(针对操作数和结果数据)
    • EBX:基址寄存器(DS段钟的数据指针)
    • ECX:计数器(字符串和循环操作,每循环一次-1)
    • EDX:数据寄存器(I/O指针)
    • EDI:目的变质寄存器
    • ESI:源变址寄存器
    • EBP:基址寄存器
    • ESP:栈指针寄存器(PUSH、POP、RETN、CALL指令可以直接修改)
  • 段寄存器(16位):
    • CS:代码段寄存器
    • DS:栈段寄存器
    • SS:数据段寄存器
    • ES:附加(数据段)寄存器
    • FS:数据段寄存器:程序调试,计算SHE、TEB、PEB等地址
    • GS:数据段寄存器
  • 程序状态与控制寄存器(32位):EFLAGS:32个标志位
    • ZF:是否是0:结果是0,置为1
    • OF:溢出:有符号整数溢出 or MSB改变时,为1
    • CF:进位:无符号整数溢出,为1
  • 指令指针寄存器(32位):EIP:存储下一条要执行的指令的地址,CPU获取EIP内容后,EIP自动+指令的字节大小

寄存器

  • 通用寄存器

  • 段寄存器

IA-32的保护模式中,段是一种内存保护技术,它把内存划分为多个区段,并为每个区段赋 予起始地址、范围、访问权限等,以保护内存。 此外,它还同分页技术 ( Paging )一起用于将虚 拟内存变更为实际物理内存。 段内存记录在SDT ( Segment Descriptor Table,段描述符表 )中, 而段寄存器就持有这些SDT的索引( index )。

  • 程序状态与控制寄存器


x86

  • 通用寄存器

x64系统中,通用寄存器的大小扩展到64位 ( 8个字节),数量也增加到18个 (新增了R8~ R15 寄存器)。 x64系统下的所有通用寄存器的名称均以字母 R 开头( x86以字母“E”开头 )

支持访问寄存器的8、16、32位(如AL,AH,AX,EAX)

64位本地模式中,不使用段寄存器:CS,SS,DS,FS,GS,仅限于向下兼容32位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值