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.精简指令集和复杂指令集的适用范围?

### HNU 2024 春季 计算机系统 实验1 引导材料与验收标准 根据已知的信息,HNU(湖南大学)在2024年春季学期的计算机系统课程中,除了第实验之外,其余实验均基于卡内基梅隆大学编写的教材《CSAPP》(深入理解计算机系统)的相关配套实验[^1]。然而,关于实验1的具体引导材料和验收标准并未直接提及。 通常情况下,高校开设此类基础课程时,首个实验往往用于帮助学生熟悉开发环境以及基本工具链的操作流程。对于HNU而言,可以推测实验1的主要目标可能包括但不限于以下几个方面: #### 1. **实验目的** - 帮助学生掌握计算机系统的底层原理。 - 学习并熟练使用GNU工具链(如GCC、GDB等)或其他指定开发工具。 - 提供初步实践机会,让学生了解如何编写简单的C程序及其对应的汇编代码转换过程。 #### 2. **引导材料** 虽然具体文档未被公开说明,但依据惯例,实验1可能会涉及以下内容: - C语言基础知识复习:变量声明、指针操作、数组处理等内容。 - GNU工具链介绍:安装配置指南、命令行参数详解。 - 示例代码分析:提供段简单代码作为案例,指导学生逐步完成调试任务。 ```c // 示例代码片段 int main() { int a = 5; int b = 10; int result = add(a, b); printf("Result: %d\n", result); return 0; } int add(int x, int y) { return x + y; } ``` #### 3. **验收标准** 验收标准通常是衡量学生是否达到预期学习成果的重要指标。以下是可能的标准项: - 正确运行给定测试用例,并提交相应结果文件。 - 编写份详细的实验报告,记录每步骤的操作细节及遇到的问题解决方法。 - 对特定函数或模块进行性能优化尝试,并对比前后差异效果。 需要注意的是,上述内容仅为合理推断,实际要求应以学校官方发布的正式通知为准。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一二爱上蜜桃猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值