当内核在第一次启动x86-64 CPU上的本地用户空间Linux应用程序时,除了RSP和RIP具有其通常含义外,大多数寄存器都为零,而CS SS和R11寄存器不为零:
cs 0x33 51
ss 0x2b 43
r11 0x200 512
我的理解是,在x86-64中,由于长模式下采用的是平坦的64位地址模型,CS和SS寄存器是未使用的。
内核与CS和SS寄存器有关吗?用户空间是否应该直接忽略它们?
此外,R11中的初始512值是否具有任何含义?
info target
命令可以告诉你当前处于32位还是64位模式。在32位模式下,无法访问64位寄存器,所以如果你看到了任何64位寄存器,那么你实际上就处于64位模式。r11
泄漏了rflags
寄存器的信息。 - Jester