中断向量与向量地址
中断号——中段的编号
什么是中断向量?我们可以把它理解成中断服务程序的入口地址。
比如说在 x86 系列当中,我们可以把中断向量理解成中断服务程序的段地址和偏移量组成的一个向量。
有的时候也指程序状态字,比如说 CPU 发生中断的时候,一些非体系结构寄存器或者是表示程序状态的一些寄存器,这些寄存器指令无法进行读取,那么在计算机的内部就把它集成成一个字,这个字我们把它称为程序状态字。那这个时候所谓中断向量,实际上就是指,和中断服务程序相关的入口地址,包括段地址,或者是偏移量,也包括执行中断服务程序的时候需要的一些状态信息。这就是中断向量。
实际上,中断服务程序的入口地址可以由中断向量来生成。
向量地址,是指中断向量保存的内存单元的地址,比如说中断服务程序入口地址所保存的内存单元的地址。或者是我们可以利用一条跳转指令,通过这个跳转指令,把它跳转到中断服务程序。那这个时候,它的向量地址就是指这条跳转指令在内存当中保存的地址,我们把这个称为向量地址。
我们看一下,要形成向量地址,我们用一个硬部件来做,这个文件叫做中断向量地址形成部件。
它的输入(的值)是由排队器输出得到的——就是我们刚才讲的那个链式排队器,或者是其他类型的中断优先级的排队器。要记住,排队器输出的结果当中只有一位是高电平,其他的各位都是低电平。有多少个中断源,或者是对应了多少个中断服务程序,那么就会有多少位输入。
它的输出对应了中断向量地址(向量地址),也就是我们刚才讲的中断服务程序入口地址所保存的那个内存单元的地址,或者是那条跳转指令在内存当中保存的地址。