HNU-计算机系统(CSAPP)实验一 原型机vspm1.0

一、题目

【实验目的】

(1)了解冯诺伊曼体系结构;

(2)理解指令集结构及其作用;

(3)理解计算机的运行过程,就是指令的执行过程,并初步掌握调试方法。

【实验准备】

(1)阅读教材,掌握冯诺伊曼体系的相关内容;

(2)学习课程《最小系统与原型机I》。

【实验步骤】

(1)进入终端,使用cd vspm1.0进入目录;

使用./vspm a-inst.txt来运行原型机1.0的模拟器,其中a-inst.txt为代码文件,

6

in R1   #输入a到R1

movi 1 #设置R0为1

add R2,R1 #R2存放累加值

sub R1,R0 #R1的值即a减去1,此时会设置G值

movd #将当前PC值保存在R3中

movi -3 #存放-3到R0中,跳转到第二行

add R3,R0 #R3减去3,注意此时不能用SUB指令,会影响G值

jg #如果R1的值还大于1,则跳到第2行去执行

out R2 #如果R1的值此时小于等于1,则准备输出

halt #停机

第一行的6,表示分配6个字节的数据段;

后面的均为原型机指令,每一行指令代表的意义及整体执行结果在《最小系统与原型机I》中已经进行了详细说明。

运行后界面如下图所示。

(2)在运行后,提示将要执行的指令地址及内容,在本例中,提示要执行位于内存00000110处的指令“in R1”,即等待输入一个整数值。此时输入si则表示执行此指令,同时也可以输入其他的指令,使用help可以查看此模拟器支持的命令:

(3)此时输入i r,可以查看各个寄存器的值,而输入x 6 0000则表示查看从0000开始的连续6个内存地址值,结果如图所示。

(4)输入si,则表示运行一条指令,例如此时运行的指令是“in R1”,表示等待输入,输入一个值5,在输入完成后将此数值存至R0寄存器,运行完成后,再运行i r指令,就可以看到输入的值5确实是已经存在R0寄存器中,每个寄存器的值都用十进制和十六进制表示,如下图所示。

后续程序的执行过程可参照视频进行操作。

(5)程序执行完毕后,可以使用q退出。

三、练习思考

1.练习内容

(1)按照上述的实验步骤,完成相关操作;

(2)在目录下还有b-inst.txt和c-inst.txt,请运行并调试,并对这些代码所做的工作进行解释;

(3)完成实验报告。

2.思考问题

(1)   如果基于这些指令实现两个整数的乘法与除法?

(2)  vspm1.0的指令集是否完备?如果是,那么如何证明(提示:搜索并阅读“可计算性理论”)?如果不是,那么要增加哪些指令?

(3)  如果一台计算机只支持加法、减法操作,那么能否计算三角函数,对数函数?(提示:搜索并阅读“泰勒级数展开”等内容)

(4)对于某个需要完成的功能,如果既可以通过硬件上增加电路来实现,也可以通过其他已有指令的组合来实现,那么如何判断哪一种比较合适?(提示:搜索并阅读RISC与CISC)。

二、实验报告 

 

 

 

三、可能问到的问题

1. a文件中movi -3是什么意思?为什么要赋值成-3,而不是其他值?

2.minicc中.q文件存的是什么?

3.c文件中乘法运算时,乘数和被乘数是否可以是负数?如果不能,是哪一个不能?

4.在这个原型机中,进行除法运算时,被除数是0时会发生什么?

5.精简指令集和复杂指令集的适用范围?

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一二爱上蜜桃猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值