调用门:调用门描述符(GDT)获得目标地址,并同时从特权级3中压入用户上下文信息,

❓你的疑问本质是:

lcall 使用调用门进入内核时,为什么说“从调用门中取出目标 CS:EIP”,却没看到它先压到内核栈里?不应该也要 push 进去再跳过去吗?

结论先说:

不是把目标 CS:EIP 压到栈里才跳过去,而是直接“跳转”到调用门里指定的目标段和偏移地址。真正压入栈的是“用户态的返回地址”(也就是从哪来的,而不是去哪的)。


✅ 我来给你完整梳理流程(关键一步步走)


✅ ① 你执行的是:

lcall selector:offset   ; selector 是 GDT 中的“调用门”段选择子

✅ ② CPU 读取调用门描述符(来自 GDT):

包含以下内容:

字段 作用
Target Selector 目标代码段(比如 Ring0 的 CS)
Target Offset 目标代码段内的入口偏移(EIP)
DPL 调用门可访问权限(谁可以调用)
Par
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值