LC-3 TRAP程序
由于像硬件I/O操作过于底层,如果直接让用户程序员去自己处理,有两个问题,1门槛过高,如程序要从键盘读取输入,则需要了解详细的硬件底层I/O操作。2如果赋予用户程序员硬件寄存器的读写权限,会造成很多复杂问题,硬件的设备寄存器通常由很多程序共享,如果出现误操作,则会影响其他用户程序的正常执行。所以设备寄存器是有权限的,只能被具有合适权限的程序访问。
为了解决这个问题,我们可以借助于TRAP程序和操作系统(即拥有特权的程序)。
对于特定应用,我们可以通过TRAP指令调用操作系统来帮助完成,通过这种方式,用户程序员不需了解底层细节,也不会出现误处理影响其他用户程序。
TRAP机制:
服务程序集合:由操作系统提供,以用户身份执行(即提供的服务集合)
起始地址表(陷入矢量表):服务程序的起始地址。
TRAP指令:用户程序希望操作系统执行特定服务程序,执行完毕后将控制权返回,则可以使用TRAP指令。
链接:通过链接回到用户程序。
TRAP指令:
执行服务程序前,需要完成两件事情,
根据陷入矢量表项的内容,将PC值修改为对应的服务程序起始地址。同时提供一种机制,能在服务程序结束后回到用户程序(即保存用户程序调用服务程序后的下一条指令PC值)。
TRAP执行的的4个步骤:
将8bit陷入矢量扩展为16bit,装入MAR。
陷入矢量表对应的内容被读入MDR。
将当期PC值