【问题标题】:what is special purpose register? [closed]什么是特殊用途寄存器? [关闭]
【发布时间】:2011-08-15 22:51:28
【问题描述】:

什么是特殊用途寄存器?

特殊用途寄存器的名称是什么,每个都有一点说明?

【问题讨论】:

    标签: assembly x86 cpu-registers


    【解决方案1】:

    来自维基百科 - Processor register:

    特殊用途寄存器 (SPR) 保存程序状态;它们通常包括程序计数器(又名指令指针)、堆栈指针和状态寄存器(又名处理器状态字)。在嵌入式微处理器中,它们还可以对应专门的硬件元素。


    通用寄存器 (GPR) 可以同时存储数据和地址,即它们是组合的数据/地址寄存器。

    【讨论】:

    • 能否分别列出专用寄存器和通用寄存器的名称?其实我在这两者之间很困惑......
    • @sadia - 你看过我链接的维基百科文章吗?
    【解决方案2】:

    我认为通过谷歌搜索可以找到大量资源。 但这是 x86 处理器的简短列表:

    CS: Code Segement
    IP: Instruction Pointer
    SS: Stack Segment
    SP: Stack Pointer
    

    还有很多

    【讨论】:

      【解决方案3】:

      顾名思义,特殊用途寄存器是专为一项任务而设计的寄存器。例如,csdsgs 和其他段寄存器属于专用寄存器,因为它们的存在是为了保存段号。 eaxecx 等是通用寄存器,因为您可以将它们用于任何事情,而没有(几乎)没有限制。例如,您不能mov es, ds,但可以mov eax, ebx
      因此,x86 上的通用寄存器是:

      • eax
      • ecx
      • edx
      • ebx
      • esi
      • 编辑
      • ebp
      • 特别是

      而特殊用途的寄存器是:

      • cs
      • ds
      • ss
      • es
      • fs
      • gs
      • eip
      • 标志

      我想他们都在这里,但是如果我忘记了,请发表评论;)
      BTW this 可能是一个很好的资源(第一个非维基百科谷歌的“特殊用途寄存器 x86”的结果)。

      【讨论】:

      • ESP 是 GPR 之一,但它也有特殊用途。中断修改 ESP 以指向内核堆栈(如果不在 ring0 中),并推送中断返回上下文(EFLAGS 和 CS:EIP)。
      • 其他特殊用途的寄存器包括:控制寄存器(例如CR3指向顶层页面目录)、调试寄存器和“模型特定”寄存器。但是有些 MSR 是标准化的,例如在 x86-64 中,syscall 入口点地址和 RFLAGS 的掩码值。 swapgs 保存的 GS 值是另一个 SPR。我认为在 32 位模式下,sysenter 还使用 MSR 作为入口点地址,而不必像 int 0x80 那样从 IDT 重新加载或缓存它。
      猜你喜欢
      • 2021-08-09
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      相关资源
      最近更新 更多