子程序调用和中断的几个概念
2015-10-10 15:54
92 查看
主程序在执行过程中执行子程序,我们称之为子程序调用。
完成子程序调用/中断需要几个概念:
入口地址。程序是一组指令,第一条指令的地址称为程序的入口地址。
中断和断口地址。一个程序在执行的过程中去执行另一个程序,我们称之为中断,程序中断时的下一条指令的地址称为程序的断口地址。
保护现场和恢复现场。如果主程序中断时,有些寄存器还存放着中间结果,而子程序很有可能要占用这些寄存器,那么就要将主程序的中间结果存入其他地方(比如堆栈),把寄存器“让给”子程序,这个过程就是保护现场。待子程序/中断服务函数完毕,再将主程序的中间结果放回寄存器,这个过程就好似恢复现场。
子程序/中断调用过程。当主程序转去执行子程序/中断时,首先将断口地址压入堆栈保存,然后将子程序的入口地址送入PC。进入子程序后首先保护现场,然后执行子程序,子程序执行完毕后,恢复现场,然后将端口地址从栈顶送回PC。
我们这里的分析仅仅是一种通用的、笼统的分析,不是在具体一个CPU上的分析。在一个具体的CPU的子程序调用及中断的过程可能有些不同,但是大体流程还是相同的:现场保护->执行子程序/中断服务函数->恢复现场。
完成子程序调用/中断需要几个概念:
入口地址。程序是一组指令,第一条指令的地址称为程序的入口地址。
中断和断口地址。一个程序在执行的过程中去执行另一个程序,我们称之为中断,程序中断时的下一条指令的地址称为程序的断口地址。
保护现场和恢复现场。如果主程序中断时,有些寄存器还存放着中间结果,而子程序很有可能要占用这些寄存器,那么就要将主程序的中间结果存入其他地方(比如堆栈),把寄存器“让给”子程序,这个过程就是保护现场。待子程序/中断服务函数完毕,再将主程序的中间结果放回寄存器,这个过程就好似恢复现场。
子程序/中断调用过程。当主程序转去执行子程序/中断时,首先将断口地址压入堆栈保存,然后将子程序的入口地址送入PC。进入子程序后首先保护现场,然后执行子程序,子程序执行完毕后,恢复现场,然后将端口地址从栈顶送回PC。
我们这里的分析仅仅是一种通用的、笼统的分析,不是在具体一个CPU上的分析。在一个具体的CPU的子程序调用及中断的过程可能有些不同,但是大体流程还是相同的:现场保护->执行子程序/中断服务函数->恢复现场。
相关文章推荐
- 各种语言版本的基于HMAC-SHA256的base64加密
- SVN知识点
- Javascript detecting a mobile browser
- linux 用freetds 连接mssql 2008
- 在Application_Start中访问Context.Request报错的问题
- Path入门
- HDU 1011 Starship Troopers
- 单链表逆置
- 【codeforces】Round #316 (Div. 2)
- HTML5存储
- AllJoyn 简介
- 基于MyBatis3.0.6的基本操作介绍
- 以太网方案
- 高级搜索指令大全与使用方法
- 对二维数组某一个字段相同的数组合并起来
- vector用法1
- Binding的数据转换
- image转文件
- 第六章、电子采购
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)