Assembly CPU如何知道针对硬件中断运行哪个中断服务例程?

Assembly CPU如何知道针对硬件中断运行哪个中断服务例程?,assembly,x86,cpu,interrupt,Assembly,X86,Cpu,Interrupt,例如,按下键盘上的一个键,导致CPU产生硬件中断,CPU向中断控制器发送确认。在中断处理阶段,CPU如何根据键盘上的按键知道要运行哪个中断服务例程?CPU确认中断后,中断控制器(PIC)将中断号发送回CPU。然后,CPU将该中断号作为索引输入中断向量表,以找到合适的处理程序,然后从那里继续。另请参见@MichaelPetch-对于使用或基于8259A型中断芯片的早期PC,有两个中断确认(INTA)。第一个INTA更新中断状态,但不驱动数据总线,第二个INTA导致中断号写入数据总线。我假设后来的芯

例如,按下键盘上的一个键,导致CPU产生硬件中断,CPU向中断控制器发送确认。在中断处理阶段,CPU如何根据键盘上的按键知道要运行哪个中断服务例程?

CPU确认中断后,中断控制器(PIC)将中断号发送回CPU。然后,CPU将该中断号作为索引输入中断向量表,以找到合适的处理程序,然后从那里继续。另请参见@MichaelPetch-对于使用或基于8259A型中断芯片的早期PC,有两个中断确认(INTA)。第一个INTA更新中断状态,但不驱动数据总线,第二个INTA导致中断号写入数据总线。我假设后来的芯片组放弃了完整的8259模拟,并在第一个INTA上发送中断号。注意:不同的体系结构和处理器设计工作方式不同(x86 vs mips vs arm vs etc)。它们通常分为两类或三类,或者是大量独立的中断线,每个向量一条。一个或几个中断进入内核,在内核的另一侧有一个控制器,允许在多个单独的中断中使用和多路复用器。在后一种情况下,是硬件或软件询问中断控制器是谁导致了中断。当然,在所有这些之后,您仍然可以有一个芯片/板设计,进一步多路复用中断线,理想情况下,软件必须查询该实现,以找出是谁导致了中断,有时,你必须询问一系列外围设备以找出是谁。