Skip to content

Latest commit

 

History

History
49 lines (33 loc) · 1.67 KB

interrupt.md

File metadata and controls

49 lines (33 loc) · 1.67 KB

中断

中断是提供给软件开发者以处理机器异常以及接收用户输入的机制。

触发中断的条件有以下两种:

  • 机器异常
  • 外部设备通信

中断产生后,机器将ip存于ipdump寄存器,flg存于flgdump寄存器,随后机器陷入内核态并关闭中断使能标志位。

使用ir从中断返回,返回时将从ipdump和flgdump寄存器恢复ip和flg。

每个中断号代表的含义如下:

中断号|描述|imsg :-:|:- 1 |地址无效 |无效的地址(超过内存大小或所寻址的逻辑地址不在页表中) 2 |外部设备中断 |设备端口 3 |时钟 4 |无效指令 |指令的地址 5 |权限错误 |权限错误的指令地址 6 |io端口无效 |端口号 7 |页或页表不可读 | 8 |页或页表不可写 | 9~31|保留使用

中断返回

中断a返回指令ir [mod]中的mod有两种:

复位重复

  • 复位:
    由于某些无法改变的原因,系统产生中断并无法恢复正常,中断处理后CPU直接复位,从头再来。
    也可以用于重新启动
  • 重复:
    由于外部设备通信或指令执行过程产生的可恢复正常状态的中断完成后,重新执行当前这条指令。

中断向量表

中断向量表由多个地址构成,每个地址代表对应中断处理程序的地址。

共32项。

中断向量表起始地址建议为物理地址0x0。

中断向量表第一项是魔数0x0000_0000_0100_000a,不是一个有效项。(一般不检查此魔数,此魔数为指令j 0x100, 若中断向量表起始地址为0x0,此指令意为跳转到中断向量表后的第一字节开始执行。)