• x86-64CPU寄存器介绍


    三种操作数

    在本教程中,我们只关心整数寄存器和XMM寄存器,您应该已经知道寄存器是什么,快速回顾。

    R0,R1...R15

    RAX,累加器

    RCX,计数器

    RDX,除法余数

    RBX,基地址

    RSI,RDI 字符串寄存器

    • %rdi,%rsi,%rdx,%rcx,%r8,%r9 用作函数参数,依次对应第1参数,第2参数。。。。当参数超过6个时,参数会向地址压栈。

    RSP,RBP, 栈寄存器

    请注意,其中8个寄存器具有备用名称,您可以将每个寄存器的最低32位视为寄存器本身,但是使用以下名称。

    R0D,R1D,R2D,...R15D

    EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI

    您可以将每个寄存器的最低16位视为寄存器本身,使用以下名称

    R0W,R1W,R2W, ...R15W

    AX,CX,DX,BX,SP,BP,SI,DI

    您可以将每个寄存器的最低8位视为寄存器本身,但是使用以下名称

    R0B,R1B,..R15B

    AL,CL,DL,...DIL

    由于历史原因,R0..的第15位到第8位R3被命名位

    SSE寄存器,XMM0-XMM7:SSE整型寄存器

    YMM0-YMM7 avx256寄存器

    ZMM0-ZMM7 avx512 寄存器

    MMX寄存器与ST寄存器的关系,这些寄存器是浮点寄存器ST0-ST7的一部分,

    3.2 x86架构64位模式寄存器

    16个64位通用寄存器

    RAX/RBX/RCX/RDX/RSI/RDI/RBP/RSP/ R8~R15

    4个段相关的寄存器。

    cs 为代码段寄存器,一般用于存放代码;

     通常和IP 使用用于处理下一条执行的代码

    cs:IP

    基地址:偏移地址

    cs地址对应的数据 相当于c语言中的代码语句

    ds 为数据段寄存器,一般用于存放数据;

    ds地址对应的数据 相当于c语言中的全局变量

    ss 为栈段寄存器,一般作为栈使用 和sp搭档;

    ss地址对应的数据 相当于c语言中的局部变量

    ss相当于堆栈段的首地址  sp相当于堆栈段的偏移地址

    es 为扩展段寄存器; 

    8个64位MMX寄存器 MM0~MM7

    • 16个128位XMM寄存器:XMM0~XMM15
    • 16个256位YMM寄存器:YMM0~YMM15(仅AVX指令集使用)
    • 32个512位ZMM寄存器 : ZMM0~ZMM31(仅AVX512指令集使用)
    • 用gdb打印寄存器的数据值

     

    flags寄存器说明

     

  • 相关阅读:
    如何用内容营销推动企业成长?媒介盒子教你三步实现
    Linux下Samba服务安装及启用全攻略
    从零开始langchain-chatchat部署
    C语言练习题——实参形参
    3dmax 单位匹配和基本单位设置
    git学习
    1136 A Delayed Palindrome
    maven 初学
    Unity技术手册-初识编辑器-其他窗口
    解决VS Code终端中文乱码问题
  • 原文地址:https://blog.csdn.net/fantasy_ARM9/article/details/125521689