计算机组成原理编程实验

上传人:xzh****18 文档编号:45261108 上传时间:2018-06-15 格式:PDF 页数:4 大小:109.61KB
返回 下载 相关 举报
计算机组成原理编程实验_第1页
第1页 / 共4页
计算机组成原理编程实验_第2页
第2页 / 共4页
计算机组成原理编程实验_第3页
第3页 / 共4页
计算机组成原理编程实验_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《计算机组成原理编程实验》由会员分享,可在线阅读,更多相关《计算机组成原理编程实验(4页珍藏版)》请在金锄头文库上搜索。

1、计算机组成与系统结构编程实验 计算机组成与系统结构编程实验 为了更好地从程序员角度理解计算机组成和系统结构的内容,我们设计了一组编程实 验,这些实验与本课程所学内容密切相关。 希望各位同学认真完成, 可以相互讨论, 但不能抄袭。 如果抽查发现哪位同学抄袭的话, 取消平时成绩。 实验要求用标准 C (ANSI C)语言实现,实验报告以电子文档的形式提交到系 FTP 服务器中。 实验一 hello.c 可执行程序的生成(第 1 章) 实验目的:实验目的: 通过了解高级语言源程序和目标机器代码的不同表示及其相互转换, 深刻理解高 级语言和机器语言之间的关系,以及机器语言和不同体系结构之间的关系。 实

2、验要求:实验要求: 对教材 1.3.5 节给出的 hello.c 源程序进行编译、 链接, 最终生成可执行目标代码。 实验报告:实验报告: 1. 说明你做实验的过程(重要步骤用屏幕截图表示) 。 2. 给出源程序(文本文件)的内容(用十六进制形式表示) 。 3. 给出可执行目标文件(二进制文件)的内容(用十六进制形式表示) 。 4. 分析或回答下列问题。 (1)分析同一个源程序在不同机器上生成的可执行目标代码是否相同。 提示:从多个方面(如提示:从多个方面(如ISA、OS和编译器)来分析。和编译器)来分析。 (2) 你能在可执行目标文件中找出函数 printf ()对应的机器代码段吗?能的话,

3、 请标示出来。 (3)为什么源程序文件的内容和可执行目标文件的内容完全不同? 报告提交截止日期:报告提交截止日期:4 月 10 日 实验二 无符号数和带符号整数的表示(第 2 章) 实验目的:实验目的:通过无符号数和带符号整数之间的相互转换来理解无符号数和补码整数的表示。 实验要求:实验要求:验证教材表 2.2 中的关系表达式的结果,并编程得出第二章习题 8 的表中结果。 实验报告:实验报告: 1. 给出源程序(文本文件)和执行结果。 2. 根据实验结果,回答下列问题。 (1)你的机器字长多少位?int 类型的位数、最小值和最大值各是多少? (2)在你的机器上,-1 用 int 类型和 uns

4、iged int 类型表示的结果分别是多少? 报告提交截止日期:报告提交截止日期:4 月 25 日 实验三 浮点数的表示(第 2 章) 实验目的:实验目的:了解 IEEE 754 浮点数在机器中的应用,特别是一些特殊值的处理。 实验要求:实验要求:通过编程得出 float 和 double 类型的精度(即十进制有效位的位数) ; 编程检查“-8.0/0” 、 “sqrt(-4.0) ”的运算结果。 实验报告:实验报告: 1. 给出源程序(文本文件)和执行结果。 2. 根据实验结果,回答下列问题。 (1)float 类型和 double 类型的精度各是多少? (2)在你的机器上, “除数为 0”

5、和“负数开方”分别是如何处理的? 报告提交截止日期:报告提交截止日期:4 月 25 日 实验四 数据的存放顺序和对齐方式(第 2 章) 实验目的:实验目的:了解数据在机器中的存放方式。 实验要求:实验要求:设计一个程序以检查你的机器是大端方式还是小端方式。 设计一个程序以检查内存变量(如结构或数组)是否按边界对齐。 实验报告:实验报告: 1. 给出源程序(文本文件)和执行结果。 2. 回答下列问题。 (1) 你的机器是大端方式还是小端方式? (2) 内存变量是否按边界对齐? 报告提交截止日期:报告提交截止日期:4 月 25 日 实验五 类型转换和移位操作运算(第 3 章) 实验目的:实验目的:

6、 了解高级语言中数据类型的转换和移位操作结果, 从而能更好地理解指令系统设 计和计算机硬件设计所需满足的要求和需要考虑的问题。 实验要求:实验要求: ,编程实现以下各种操作: (1) 给定一个 short 型数据 -12345,分别转换为 int、unsigned short、unsigned int、float 类型的数据; (2) 给定一个 int 型数据 2147483647, 分别转换为 short、 unsigned short、 unsigned int、float 类型的数据; (3)给定一个 float 型数据 123456.789e5,转换成 double 型数据; (4)给

7、定一个 double 型数据 123456.789e5,转换成 float 型数据; (5) 按 short 和 unsigned short 类型分别对-12345 进行左移 2 位和右移 2 位操作。 要求分别用十进制和十六进制形式打印输出以上各种操作的结果。 实验报告:实验报告: 1. 给出源程序(文本文件)和执行结果。 2. 根据实验结果,回答下列问题。 (1) 无符号数和带符号整数的扩展操作方式是否相同?各是如何进行的? (2) 补码整数(如 int 型数)是否总能转换为等值的 float 类型数据?为什么? (3) float 型数据是否总能转换成等值的 double 型数据?为什

8、么? (4) 长数被截断成短数后可能发生什么现象?为什么? (5) C 语言中移位操作规则与操作对象的数据类型有关吗? (6) 左移 2 位和右移 2 位操作分别相当于扩大和缩小几倍? 报告提交截止日期:报告提交截止日期:5 月 10 日 实验六 整数和浮点数的算术运算(第 3 章) 实验目的:实验目的:通过检查高级语言中数据运算的不同结果,进一步理解机器代码在 CPU 中的执行过程,从而为更好地学习指令系统设计和 CPU 设计打下良好的基础。 实验要求:实验要求:编程计算下列表达式的值: (1)unsigned int 型数据: 1+4294967295=?;1-4294967295=? (

9、2)int 型数据:2147483647+1=?;-2147483648-1=? (3)float 型数据:(1.0 + 123456.789e30) + (-123456.789e30) = ?; 1.0 + (123456.789e30 + (- 123456.789e30) = ? 要求分别用十进制和十六进制形式显示各种操作的结果。 实验报告:实验报告: 1. 给出源程序(文本文件)和执行结果。 2. 分别给出每个运算结果的解释说明。 3. 以下是两个几乎一模一样的程序,但运行结果不一致,请收集课外相关资料,通过得到 的资料分析说明其原因。 (以下程序来自网站:http:/ ) 程序 1

10、: #include double f(int x) return 1.0 / x ; void main() double a , b; int i ; a = f(10) ; b = f(10) ; i = a = b ; printf( “%dn“ , i ) ; 使用 gccO2 编译程序 1 后运行,其输出结果是 0,也就是说 a 不等于 b,为什么? 程序 2: #include double f(int x) return 1.0 / x ; void main() double a , b , c; int i ; a = f(10) ; b = f(10) ; c = f(1

11、0) ; i = a = b ; printf( “%dn“ , i ) ; 同样使用 gccO2 编译程序 2,运行后输出结果却是 1,也就是说 a 等于 b,为什么? 报告提交截止日期:报告提交截止日期:5 月 10 日 实验七 cache 和程序访问的局部性(第 4 章) 实验目的:实验目的:通过实际程序的执行结果,了解程序访问的局部性对带有 cache 的计算机系统性 能的影响。 实验要求:实验要求:在以下程序中,修改或添加必要的语句(如计时函数等) ,以计算和打印主体程 序段的执行时间。分别以 M=10 000,N=10、M=1000,N=1000、M=10,N=10 000,执行程

12、 序 A 和程序 B,以比较两个程序执行时间的长短。 程序段 A assign-array-rows ( ) int i, j, aMN; for (i= 0; iM; i+) for (j= 0; jN; j+) aij=i+j; 程序段 B assign-array-cols ( ) int i, j, aMN; for (j= 0; jN; j+) for (i=0; iM; i+) aij=i+j; 实验报告:实验报告: 1. 给出源程序(文本文件)和执行结果。 2. 对实验结果进行分析,说明局部数据块大小、数组访问顺序等和执行时间之间的关系。 报告提交截止日期:报告提交截止日期:5 月 25 日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 计算机原理

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号