今天在做2015年408的时候发现了一道题,问中断的相关知识,说的是保存PC是由硬件完成的,然而,在2016年408的第44题中,说是CPU完成的保存PC,因此,针对这两点我很迷惑,于是查阅了中断隐指令如何执行。
中断隐指令包括:关中断,保存断点,形成中断向量地址。
CPU响应中断后,输出中断响应信号,自动将状态标志寄存器FR或EFR的内容压入堆栈保护起来,然后将FR或EFR中的中断标志位IF与陷阱标志位TF清零,从而自动关闭外部硬件中断。因为CPU刚进入中断时要保护现场,主要涉及堆栈操作,此时不能再响应中断,否则将造成系统混乱
保护断点就是将CS和IP/EIP的当前内容压入堆栈保存,以便中断处理完毕后能返回被中断的原程序继续执行,这一过程也是由CPU自动完成。
当系统中有多个中断源时,一旦有中断请求,CPU必须确定是哪一个中断源提出的中断请求,并由中断控制器给出中断服务子程序的入口地址,装入CS与IP/EIP两个寄存器。CPU转入相应的中断服务子程序开始执行。
本部分知识来源于网络(侵删)
https://zhidao.baidu.com/question/1512710059563018260.html#:~:text=CPU%E5%93%8D%E5%BA%94%E4%B8%AD%E6%96%AD%E5%90%8E,%E9%97%AD%E5%A4%96%E9%83%A8%E7%A1%AC%E4%BB%B6%E4%B8%AD%E6%96%AD%E3%80%82
说实话,上面那些我也看不太懂,但是突然想到了一个事情,就是CPU和硬件会不会不是二元对立的。因为显然是在CPU中执行的中断隐指令,然后大家也都说是由硬件完成。
因此,这两个说法不矛盾,中断隐指令是由CPU中的硬件完成。
补充:中断隐指令叫中断隐指令的原因是,由系统自动完成,在这个过程中,不需要操作系统的参与。