TRAP程序和子程序

LC-3系统中,TRAP指令用于调用操作系统服务,解决了用户程序直接处理底层I/O操作的复杂性和权限问题。TRAP机制包括服务程序集合、起始地址表和TRAP指令,通过改变PC值并保存返回链接来执行服务程序。子程序则允许代码复用,JSR指令实现调用/返回机制,通过保存和加载PC到R7实现流程控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LC-3 TRAP程序

由于像硬件I/O操作过于底层,如果直接让用户程序员去自己处理,有两个问题,1门槛过高,如程序要从键盘读取输入,则需要了解详细的硬件底层I/O操作。2如果赋予用户程序员硬件寄存器的读写权限,会造成很多复杂问题,硬件的设备寄存器通常由很多程序共享,如果出现误操作,则会影响其他用户程序的正常执行。所以设备寄存器是有权限的,只能被具有合适权限的程序访问。

为了解决这个问题,我们可以借助于TRAP程序和操作系统(即拥有特权的程序)。

对于特定应用,我们可以通过TRAP指令调用操作系统来帮助完成,通过这种方式,用户程序员不需了解底层细节,也不会出现误处理影响其他用户程序。

 

TRAP机制:

服务程序集合:由操作系统提供,以用户身份执行(即提供的服务集合)

起始地址表(陷入矢量表):服务程序的起始地址。

TRAP指令:用户程序希望操作系统执行特定服务程序,执行完毕后将控制权返回,则可以使用TRAP指令。

链接:通过链接回到用户程序。

 

TRAP指令:

执行服务程序前,需要完成两件事情,

根据陷入矢量表项的内容,将PC值修改为对应的服务程序起始地址。同时提供一种机制,能在服务程序结束后回到用户程序(即保存用户程序调用服务程序后的下一条指令PC值)。

TRAP执行的的4个步骤:

将8bit陷入矢量扩展为16bit,装入MAR。

陷入矢量表对应的内容被读入MDR。

将当期PC值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值