计算机系统(一)期末复(yu)习(4):子程序与调用

前言

我是懒狗

该章节复习LC-3中子程序的调用与参数保存等内容。

TRAP指令

使用TRAP 操作数指令调用子程序,可以跳转到操作数指向的地址。这个地址内的内容,是子程序的起始地址(即函数指针寻址找到子程序)
在这里插入图片描述

TRAP跳转

比如 TRAP x20 ,系统内存 0x0020 处放置的值是 0x1234,那么子程序开始的地址就在 0x1234

值得注意的是,TRAP指令的起始地址表,通常是LC-3系统自带的子程序,比如:TRAP x20 是读取一个输入的字符。此外,TRAP指令的操作数只有8bit,所以最多支持256个服务程序。

TRAP返回

TRAP指令执行前,会将PC的值存放到R7中。在子程序返回时,从R7中取出指向主程序的PC值,然后跳转到该PC值。

使用R7来保存返回地址,而不是栈帧,这意味着子程序必须保证R7的值不能被修改

RET指令

前文提到返回地址保存在R7,所以RET指令是 JMP R7 的简写。RET指令没有操作数,直接调用即可。

图解

在这里插入图片描述

J

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值