win32汇编-门的概念
为了使高优先级的代码能够安全地被低优先级的代码调用,保护模式下增加了“门”的概念。“门”指向某个优先级高的程序所规定的入口点,所有优先级低的程序调用优先级高的程序只能通过门重定向,进入门所规定的入口点。这样可以避免低级别的程序代码从任意位置进入优先级高的程序的问题。保护模式下的中断和异常等服务程序也要从“门”进入
80386的门分为中断门、自陷门和任务门几种。
在保护模式下要表示一个中断或异常服务程序的信息需要用8个字节,包括门的种类以及xxxx:yyyyyyyy格式的入口地址等。这组信息叫做“中断描述符”。这样,中断向量表就无法采用和实模式下同样的4字节一组的格式。保护模式下把所有的中断描述符放在一起组成“中断描述符表”IDT(Interrupt Descriptor Table) 。IDT不再放在固定的地址00000h处, 而是采用可编程设置的方式,支持的中断数量也可以设置。为此80386处理器引入了一个新的48位寄存器IDTR。IDTR的高32位指定了IDT在内存中的基址(线性地址) , 低16位指定了IDT的长度, 相当于指定了可以支持的中断数量。
由于保护模式下用中断门可以从低优先级的代码调用高优先级的代码,所以不能让用户程序写中断描述符表, 否则会引发安全问题(又想到了CIH病毒) 。这样就如关了窗子挡住苍蝇, 也挡住了微风, 用户的系统扩展程序也就不能像在DOS中一样再用中断服务程序的方式提供服务了。因为用户程序根本没有权限将中断地址指到自己的代码中来。
在Windows中, 操作系统使用动态链接库来代替中断服务程序提供系统功能, 所以Win 32汇编中int指令也就失去了存在的意义。这就是在Win 32汇编源代码中看不到int指令的原因。其实那些调用API的指令就相当于在DOS系统中使用int指令来完成系统功能。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2021-10-03 opencv-cv::Matx 固定矩阵类
2020-10-03 qt5--拖放