汇编学习笔记之寄存器综述

    寄存器是CPU的组成部分。因为在CPU内部,所以CPU对其读写速度是最快的,不需要IO传输,但同时也决定了此类寄存器数量有限,有限到几乎每个寄存器都有自己的名字,而且有些还有多个名字。
IA-32构架提供了16个基本寄存器,这16个基本寄存器可以归纳为如下几类:
    通用寄存器;
    段寄存器;
    状态和控制寄存器;
    指令寄存器;
1.1 通用寄存器
    32位通用寄存器有八个,主要用作逻辑运算/地址运算/内存指针,具体如下:
        eax------累加和结果寄存器
        ebx------数据指针寄存器
        ecx------循环计数器
        edx------i/o指针
        esi------源地址寄存器
        edi------目的地址寄存器
        esp------堆栈指针
        ebp------栈指针寄存器
    
    32位通用寄存器有八个:eax/ebx/ecx/edx/esi/edi/esp/ebp.
    这八个寄存器低16位分别有别名:ax/bx/cx/dx/si/di/sp/bp.
    其中ax/bx/cx/dx的高八位有别名ah/bh/ch/dh,低八位有别名al/bl/cl/dl.
    64-bit模式下寄存器扩展为rax/rbx/rcx/rdx/rsi/rdi/rsp/rbp/r8/r9/r10/r11/r12/r13/r14/r15.
    其中r8/r9/r10/r11/r12/r13/r14/r15是64bit模式新加入的寄存器.

1.2 段寄存器
    段寄存器cs/ds/es/fs/gs/ss,保存16位的段选择子,一个段选择子制定一个段在内存的指针,以便在内存访问段,访问方式与内存模式有关.
    CS(Code Segment):代码段寄存器
    DS(Data Segment),ES,FS,GS:数据段寄存器
    SS(Stack Segment):堆栈段寄存器
    ES(Extra Segment):附加段寄存器。
    
1.3 状态和控制寄存器eflags
    这个寄存器表示意义非常丰富,程序不恩那个直接操作该寄存器,由操作指令操作。
    除去保留位,其他每位都代表一个具体的含义,其中bits 0/2/4/6/7/11 是状态位,标识了某些操作后的状态,8/9/10是控制标识位。
    CF(bit0)------进位标识
    PF(bit2)------奇偶标识
    AF(bit4)------辅助进位标识
    ZF(bit6)------零标识
    SF(bit7)------符号标识
    OF(bit11)------溢出标识
    TF(bit8)------陷阱标识
    IF(bit9)------中断标识
    DF(bit10)------方向标识
    64bit模式下,该寄存器被扩展为64位:rflags,但32位保留未被使用,低32位含义不变。
1.4 指令寄存器EIP
    EIP------标识当前进程将要执行指令位置.
    在64位模式下扩展为RIP64位指令寄存器.
1.5 控制寄存器
    cr0,cr2,cr3,cr4
1.6 系统表指针寄存器
    idtr------中断描述符表信息
    gdtr------全局描述符表信息
    ldyr------局部描述符表信息
1.7 任务寄存器
    保存任务的状态信息tss
1.8 调试寄存器
    dr0-dr7 控制和允许监视进程的调试操作
1.9 x87 FPU寄存器
1.10 MMX寄存器
1.11 XMM寄存器

    (略)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值