在用户区的x86-64 Linux上CS和SS寄存器的含义是什么?

时间:2013-10-21 19:17:55

标签: linux assembly linux-kernel x86 x86-64

内核在第一次输入时加载本机用户空间Linux应用程序后,x86-64 CPU寄存器大部分为零,除了具有通常含义的RSP和RIP之外,寄存器CS SS和R11都不为零:

cs             0x33 51
ss             0x2b 43
r11            0x200    512

据我所知,CS和SS寄存器在x86-64上未使用,因为在长模式下我们有一个扁平的64位地址模型。

CS和SS寄存器是否意味着内核的任何内容?用户区是否只是让他们独自一人?

R11中的初始512值是否意味着什么?

1 个答案:

答案 0 :(得分:5)

在64位模式下,段寄存器仍然指向IDT或GDT条目。但是,IDT / GDT条目仅包含有限的信息:

数据段选择器(对DS,ES,SS,FS和GS有效)仅包含一个位:“P”位表示该段存在。这仅适用于加载到FS和GS寄存器的段。

代码段选择器(对CS有效)包含访问权限信息和长模式位,表示当CS指向这样的段时,64位模式处于活动状态。

段基数和段长度不存在。