《计算机组成与系统结构》编程实验
为了更好地从程序员角度理解计算机组成和系统结构的内容,我们
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
了一组编程实
验,这些实验与本课程所学内容密切相关。
希望各位同学认真完成,可以相互讨论,但不能抄袭。如果抽查发现哪位同学抄袭的话,
取消平时成绩。
实验要求用
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
C (ANSI C)语言实现,
实验报告
化学实验报告单总流体力学实验报告观察种子结构实验报告观察种子结构实验报告单观察种子的结构实验报告单
以电子文档的形式提交到系 FTP
服务器中。
实验一 hello.c 可执行程序的生成(第 1 章)
实验目的:通过了解高级语言源程序和目标机器代码的不同表示及其相互转换,深刻理解高
级语言和机器语言之间的关系,以及机器语言和不同体系结构之间的关系。
实验要求:对教材 1.3.5 节给出的 hello.c 源程序进行编译、链接,最终生成可执行目标代码。
实验报告:
1. 说明你做实验的过程(重要步骤用屏幕截图表示)。
2. 给出源程序(文本文件)的内容(用十六进制形式表示)。
3. 给出可执行目标文件(二进制文件)的内容(用十六进制形式表示)。
4. 分析或回答下列问题。
(1)分析同一个源程序在不同机器上生成的可执行目标代码是否相同。
提示:从多个方面(如 ISA、OS 和编译器)来分析。
(2)你能在可执行目标文件中找出函数 printf ()对应的机器代码段吗?能的话,请标示出来。
(3)为什么源程序文件的内容和可执行目标文件的内容完全不同?
报告提交截止日期:4 月 10 日
实验二 无符号数和带符号整数的表示(第 2 章)
实验目的:通过无符号数和带符号整数之间的相互转换来理解无符号数和补码整数的表示。
实验要求:验证教材表 2.2 中的关系表达式的结果,并编程得出第二章习题 8 的表中结果。
实验报告:
1. 给出源程序(文本文件)和执行结果。
2. 根据实验结果,回答下列问题。
(1)你的机器字长多少位?int 类型的位数、最小值和最大值各是多少?
(2)在你的机器上,-1 用 int 类型和 unsiged int 类型表示的结果分别是多少?
报告提交截止日期:4 月 25 日
实验三 浮点数的表示(第 2 章)
实验目的:了解 IEEE 754 浮点数在机器中的应用,特别是一些特殊值的处理。
实验要求:通过编程得出 float 和 double 类型的精度(即十进制有效位的位数);
编程检查“-8.0/0”、“sqrt(-4.0)”的运算结果。
实验报告:
1. 给出源程序(文本文件)和执行结果。
2. 根据实验结果,回答下列问题。
(1)float 类型和 double 类型的精度各是多少?
(2)在你的机器上,“除数为 0”和“负数开方”分别是如何处理的?
报告提交截止日期:4 月 25 日
实验四 数据的存放顺序和对齐方式(第 2 章)
实验目的:了解数据在机器中的存放方式。
实验要求:设计一个程序以检查你的机器是大端方式还是小端方式。
设计一个程序以检查内存变量(如结构或数组)是否按边界对齐。
实验报告:
1. 给出源程序(文本文件)和执行结果。
2. 回答下列问题。
(1) 你的机器是大端方式还是小端方式?
(2) 内存变量是否按边界对齐?
报告提交截止日期:4 月 25 日
实验五 类型转换和移位操作运算(第 3 章)
实验目的:了解高级语言中数据类型的转换和移位操作结果,从而能更好地理解指令系统设
计和计算机硬件设计所需满足的要求和需要考虑的问题。
实验要求:,编程实现以下各种操作:
(1) 给定一个 short 型数据 -12345,分别转换为 int、unsigned short、unsigned
int、float 类型的数据;
(2) 给定一个 int 型数据 2147483647,分别转换为 short、unsigned short、unsigned
int、float 类型的数据;
(3)给定一个 float 型数据 123456.789e5,转换成 double 型数据;
(4)给定一个 double 型数据 123456.789e5,转换成 float 型数据;
(5)按 short 和 unsigned short 类型分别对-12345 进行左移 2 位和右移 2 位操作。
要求分别用十进制和十六进制形式打印输出以上各种操作的结果。
实验报告:
1. 给出源程序(文本文件)和执行结果。
2. 根据实验结果,回答下列问题。
(1) 无符号数和带符号整数的扩展操作方式是否相同?各是如何进行的?
(2) 补码整数(如 int 型数)是否总能转换为等值的 float 类型数据?为什么?
(3) float 型数据是否总能转换成等值的 double 型数据?为什么?
(4) 长数被截断成短数后可能发生什么现象?为什么?
(5) C 语言中移位操作规则与操作对象的数据类型有关吗?
(6) 左移 2 位和右移 2 位操作分别相当于扩大和缩小几倍?
报告提交截止日期:5 月 10 日
实验六 整数和浮点数的算术运算(第 3 章)
实验目的:通过检查高级语言中数据运算的不同结果,进一步理解机器代码在 CPU 中的执
行过程,从而为更好地学习指令系统设计和 CPU 设计打下良好的基础。
实验要求:编程计算下列表达式的值:
(1)unsigned int 型数据: 1+4294967295=?;1-4294967295=?
(2)int 型数据:2147483647+1=?;-2147483648-1=?
(3)float 型数据:(1.0 + 123456.789e30) + (-123456.789e30) = ?;
1.0 + (123456.789e30 + (- 123456.789e30)) = ?
要求分别用十进制和十六进制形式显示各种操作的结果。
实验报告:
1. 给出源程序(文本文件)和执行结果。
2. 分别给出每个运算结果的解释说明。
3. 以下是两个几乎一模一样的程序,但运行结果不一致,请收集课外相关资料,通过得到
的资料分析说明其原因。
(以下程序来自网站:http://blog.csdn.net/kissinger2000/archive/2004/09/24/115581.aspx )
程序 1:
#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( "%d\n" , i ) ;
}
使用 gcc–O2 编译程序 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(10) ;
i = a == b ;
printf( "%d\n" , i ) ;
}
同样使用 gcc–O2 编译程序 2,运行后输出结果却是 1,也就是说 a 等于 b,为什么?
报告提交截止日期:5 月 10 日
实验七 cache 和程序访问的局部性(第 4 章)
实验目的:通过实际程序的执行结果,了解程序访问的局部性对带有 cache 的计算机系统性
能的影响。
实验要求:在以下程序中,修改或添加必要的语句(如计时函数等),以计算和打印主体程
序段的执行时间。分别以 M=10 000,N=10、M=1000,N=1000、M=10,N=10 000,执行程
序 A 和程序 B,以比较两个程序执行时间的长短。
程序段 A
assign-array-rows ( )
{
int i, j, a[M][N];
……
for (i= 0; i
本文档为【计算机组成原理编程实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。