【发布时间】:2011-08-15 22:51:28
【问题描述】:
什么是特殊用途寄存器?
特殊用途寄存器的名称是什么,每个都有一点说明?
【问题讨论】:
标签: assembly x86 cpu-registers
什么是特殊用途寄存器?
特殊用途寄存器的名称是什么,每个都有一点说明?
【问题讨论】:
标签: assembly x86 cpu-registers
来自维基百科 - Processor register:
特殊用途寄存器 (SPR) 保存程序状态;它们通常包括程序计数器(又名指令指针)、堆栈指针和状态寄存器(又名处理器状态字)。在嵌入式微处理器中,它们还可以对应专门的硬件元素。
通用寄存器 (GPR) 可以同时存储数据和地址,即它们是组合的数据/地址寄存器。
【讨论】:
我认为通过谷歌搜索可以找到大量资源。 但这是 x86 处理器的简短列表:
CS: Code Segement
IP: Instruction Pointer
SS: Stack Segment
SP: Stack Pointer
还有很多
【讨论】:
顾名思义,特殊用途寄存器是专为一项任务而设计的寄存器。例如,cs、ds、gs 和其他段寄存器属于专用寄存器,因为它们的存在是为了保存段号。 eax、ecx 等是通用寄存器,因为您可以将它们用于任何事情,而没有(几乎)没有限制。例如,您不能mov es, ds,但可以mov eax, ebx。
因此,x86 上的通用寄存器是:
而特殊用途的寄存器是:
我想他们都在这里,但是如果我忘记了,请发表评论;)
BTW this 可能是一个很好的资源(第一个非维基百科谷歌的“特殊用途寄存器 x86”的结果)。
【讨论】:
syscall 入口点地址和 RFLAGS 的掩码值。 swapgs 保存的 GS 值是另一个 SPR。我认为在 32 位模式下,sysenter 还使用 MSR 作为入口点地址,而不必像 int 0x80 那样从 IDT 重新加载或缓存它。