我正在研究一些低级操作系统代码(64 位),并且试图弄清楚如何从 CPL0 切换到 CPL3。问题是我遇到的英特尔开发人员手册中的这个小句子:''......处理器不允许将程序控制从以 0,1 或 2 的 CPL 运行的过程转移到以 0,1 或 2 运行的过程CPL 或 3,返回时除外。"
TSS(任务状态段)甚至没有堆栈指针,那么 CPL3 代码将用于堆栈吗?我知道这是可能的(否则操作系统将如何启动任何应用程序代码)但我找不到任何文档。似乎您必须将一些 CPL3 代码的地址推送到堆栈上以欺骗处理器运行 CPL3 代码,但这听起来有点草率。你们知道更好的方法吗?任何帮助深表感谢。