• 汇编学习笔记(18)


    基本概念

      80386将8086中的中断分成了两个

    中断

    由外部硬件引起的中断仍然较中断 

    异常

    有内部中断引起的中断改叫异常,因为为他一般与代码的运行有关,而中断一般与代码的运行无直接关系

    然后根据 恢复点,即异常处理完之后从哪里介质运行又细分为3类

    故障

    在指令运行前或运行中出异常,处理完异常后会重新执行指令,比如缺页异常 

    陷阱

    在指令运行完之后出异常,异常处理完后从吓一跳开始处理,比如INT软中断 

    终止

    处理完之后会返回,有处理程序自己决定怎么办,一般是很严重的错误,比如处理异常的时候出异常了

     

    虽然对中断做了细分,但是处理方式还是和8086差不多,只不过中断表被保存在了IDT寄存器中

    IDT寄存器中只能有中断门,陷阱门,任务门,注意这里的陷阱门与 中断分类的陷阱门没直接区别,所以当中断发生的时候根据中断号,在IDT表中找到对应的处理程序。

    这里没有强制的对应关系,也就是说无论何种中断或异常,他的处理程序都可以是  中断门,陷阱门,任务门 中的异常

     

    权限要求

    如果是有CPU主动触发的中断或异常,他是不比较CPL和门的DPL的

    如果是INT指令触发的,则需要比较CPL和门的DPL要求是 CPL<= DPL

     

    中断门和陷阱门

    中断门和陷阱门的处理方式和用CALL调用任务门是一样的,当门指向的是非一致代码段,并且CPL> DPL的时候会设CPL = DPL,返回用IRET,同样IRET和RET的处理方式也是一模一样,所以这里甚至可以用RET代替IRET

    注意中断门和陷阱门市当前任务下进行的,所以环境的保护需要自己处理

    中断门和陷阱门的唯一区别就是是否自动启动中断屏蔽即标志位IF的置位区别

     

    任务门

    和直接用CALL 调用门也没啥区别,唯一的区别就是这里会将中断信息压栈到新任务的堆栈上,处理完也是用IRET返回,IRET可以通过标志寄存器的TN位知道这次是任务门调用还是中断门和陷阱门的调用,然后根据情况选择是代码转跳还是任务切换。好像RET也行?

     

    注意点: 中断和陷阱门在原任务环境下运行,所以要注意环境的保护,而任务门则切换的任务环境起到了隔离的的作用相对安全,各有利弊

     

     

     

  • 相关阅读:
    PV、UV、VV,CV的含义
    JS动态修改页面EasyUI datebox不生效、EasyUI动态添加Class、EasyUI动态渲染解析解决方案
    JavaScript Object.defineProperty()方法详解
    jquery on()方法绑定多个选择器,多个事件
    jQuery自定义事件
    jquery插件开发快速入门
    JavaScript日期处理
    js原生函数bind
    使用jquery.pjax实现SPA单页面应用
    PushState+Ajax实现简单的单页面应用SPA
  • 原文地址:https://www.cnblogs.com/alwaysking/p/12345970.html
Copyright © 2020-2023  润新知