在保护模式和长模式(即不是16位模式)下,包括CS在内的段寄存器不再只是额外的4位地址。它们索引到段描述符表中,具有基数+限制(正常基数=0 限制=4GiB,即平面内存模型),但也具有其他属性。
代码段描述符决定了 CPU 模式(例如 32 位兼容模式与 64 位长模式)。在 64 位内核上,64 位用户空间进程可以far jmp生成一些 32 位代码。这在实践中没有用,甚至可能在操作系统在上下文切换后返回您的进程时中断。
TODO:挖掘一个链接,其中有人展示了如何做到这一点。我认为最近甚至有一个关于此的问题,其中详细回答了如何找到正确的段号。