组成原理实验九 程序转移机制.ppt

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
组成原理实验九 程序转移机制

计算机组成原理实验课程 实验九 程序转移机制 实验目的: 1. 学习实现程序转移的硬件机制。 2. 掌握堆栈寄存器的使用。 * 教学目标 1. 深入理解PC寄存器自动加1和打入初值功能对计算机程序的深远影响。 2.掌握代码的分段连续存放技术和实现。 一.背景知识(1) 1. 程序转移:在任何一个程序段的内部,执行流程有顺序、分支、循环三种,而程序段之间又有相互调用(例如:调用子程序、中断服务、子程序返回、进程调度、任务切换……),看似很复杂,其实计算机硬件用非常简单的技术解决了这些问题。 分支和循环总是可以相互替代,所以也常说程序段内的执行流程有顺序和转移两种,而程序段之间的调用也只是把执行流程转移到了另外一个程序段上。所以,任何复杂的程序流程,在硬件实现机制上只有两种情况:顺序执行和转移。硬件实现这两种情况的技术很简单: PC寄存器的自动加1功能实现程序顺序执行。 PC寄存器的打入初值功能实现程序转移。 当转移目标为本段内未执行过的指令时就形成分支,当转移目标是本段内执行过的指令时就形成循环,当转移目标为其他段的指令时就形成段间调用。可见:转移操作决定于“给PC赋值”,而转移类型决定于“所赋的值同当前指令的关系”。 一.背景知识(2) 2. 实验箱系统的程序转移硬件机制:当LDCP有效(0)时,PC被打入新值(赋初值),实现程序的转移。这一刻DBUS上的值就是转移的目标地址(被打入PC),这个地址同转移指令所在地址的关系决定了转移类型。 若LDCP为0是附带条件的,就形成“条件转移”。实验箱依靠“PC打入电路”实现“有进位”时转移和“计算结果为零”时转移,以及无条件转移。 I0 I1 Y I2 I3 Y I4 ~ I7 A B C E Z Cy_IN Vcc JIR3 JIR2 16 ELP 151 PC打入电路 PCOE Vcc CK RST PCOE-D A0 B0 ~ ~ A7 B7 E DIR 245 DBUS0~7 PC电路 LDPC P0 Q0 ~ ~ P7 Q7 CLK PE MR CEP CET A0 B0 ~ ~ A7 B7 E DIR A0~A7 程序存储器 6116 DBUS0~7 161 245 Y C B A Cy Z 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 X X 151选择表 3. 子程序调用和保护断点:子程序的调用和返回是两次转移,特殊点在于:返回时转移的目标一定是调用时转移的出发点。为实现这个特点,在调用转移时必须把出发地址(断点)保存起来。这个“保存”还必须有两个要求:1.不被一般用户所知或改变。2.返回转移时能方便地找到它。第一个要求决定了它不能被保存在数据存储区或程序存储区,第二个要求决定了返回指令的目标地址获得方法与其它转移指令完全不同,返回指令的目标地址一定从这个特殊的“保存区”得到,指令本身不需要再带目标地址,而其他转移指令必须自带目标地址。再考虑到子程序调用的“可嵌套性”,这个“保护区”里的数据应该有“先入后出”特点,这与“货栈”中堆放的货物相似,故称其为“堆栈”。堆栈的容量决定了子程序的嵌套深度。(高级语言程序也建立“堆栈”,但是用变量或数组变量在数据存储区开辟的一个堆栈功能子区,与这里的堆栈不同。) 各系统实现堆栈的技术各不相同。实验箱系统用一个锁存器(574)构成堆栈寄存器(ST)由于574只能存一个字节,所以本系统的子程序调用深度只有1级,不能形成子程序嵌套。 一.背景知识(3) 一.背景知识(4) 4. ST寄存器结构和子程序调用与返回控制信号:实验箱子程序调用和返回的结构由PC电路和ST电路组成。调用转移时,PC的当前值(断点)经下面的245送上DBUS,进入ST保存;然后给PC打入子程序入口地址(调用指令携带的目标地址)完成转子程序。返回转移时,返回指令开启ST的输出,并给出PC打入信号(无条件转移),于是ST保存的断点经由DBUS打入PC,实现子程序返回。请同学独立分析下图各信号的时序。 PCOE CK RST Vcc PC电路 P0 Q0 ~ ~ P7 Q7 CLK PE MR CEP CET A0 B0 ~ ~ A7 B7 E DIR A0~A7 程序存储器 6116 161 245 A0 B0 ~ ~ A7

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档