And*_*zos 3 linux x86 assembly x86-64 linux-kernel
内核在第一次进入时加载本机用户区Linux应用程序后,x86-64 CPU寄存器大多为零,除了具有通常含义的RSP和RIP之外,寄存器CS SS和R11都不为零:
cs 0x33 51
ss 0x2b 43
r11 0x200 512
Run Code Online (Sandbox Code Playgroud)
据我所知,CS和SS寄存器在x86-64上未使用,因为在长模式下我们有一个扁平的64位地址模型.
CS和SS寄存器是否意味着内核的任何内容?用户地区是否只是让他们一个人呆着?
R11中的初始512值是什么意思?
在64位模式下,段寄存器仍然指向IDT或GDT条目.但是,IDT/GDT条目仅包含有限的信息:
数据段选择器(对DS,ES,SS,FS和GS有效)仅包含一个位:"P"位表示该段存在.这仅适用于加载到FS和GS寄存器的段.
代码段选择器(对CS有效)包含访问权限信息和长模式位,表示当CS指向这样的段时64位模式有效.
段基数和段长度不存在.