logo资料库

计算机组成原理 编程实验指导书.doc

第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
资料共23页,剩余部分请下载后查看
实验一数据的存放顺序和对齐方式
一、实验目的
二、实验要求
三、实验报告要求
实验二整数的表示与运算方法
一、实验目的
二、实验要求
三、实验报告要求
实验三浮点数的表示与运算方法
一、实验目的
二、实验要求
三、实验报告要求
实验四类型转换和移位操作运算
一、实验目的
二、实验要求
三、实验报告要求
实验五整数和浮点数的算术运算
一、实验目的
二、实验要求
三、实验报告
实验六Cache 和程序访问的局部性
一、实验目的
二、实验要求
三、实验报告
附录A 用Eclipse开发C程序
一、Eclipse+MinGW gcc的环境变量设置与启动
二、利用Eclipse开发C程序
实验一 数据的存放顺序和对齐方式 一、 实验目的 1. 理解各种数据类型的数据在机器中的存放方式。 2. 理解各种数据类型的数据在机器中的对齐方式。 3. 掌握数据在内存中占用空间的计算方法。 二、 实验要求 1. 大端模式是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高 地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增 加,而数据从高位往低位放。小端模式是指数据的高字节保存在内存的高地址中,而 数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地 结合起来,高地址部分权值高,低地址部分权值低。 2. 下面的程序是检查int、short数据在计算机内采用存储方式(大端或小端)。上机调 试下面的程序,并回答下列问题。 (1) 运行结果是什么?并结合教材(P73)详细分析程序执行结果的原因。若把这2 个变量的初值都分别改为-100、0,程序的运行结果又是什么?将原因记录于 实验报告之中。 (2) int、short数据在实验计算机内采用小端方式还是大端方式存储? (3) 函数show_bytes(byte_pointer start, int len)的功能是什么? (4) 修改程序上述程序,输出float、double、long以及char数组在计算机内的存 储方式。
3. 在维基百科或百度百科中搜索“字节序”,查看关于小端序、大端序的概念,并在实 验报告中写出它们的特点。 4. 按边界存储是指半字、字、双字都按它们各自地址所指定的空间进行存储,而不是随 意存放,这样可保证对一个字长数据的读/写只需要一次存储器访问即可完成,提高 了访问效率,但有时会导致存储空间的浪费,因此,这是一种以存储空间换取存储速 度的方法。若字长32位,则半字长16位,双字长64位。则按边界对齐方式的存储要求 是:  双字数据起始地址的最末三位为000(8字节的整数倍)  单字数据起始地址的最末二位为00(4字节的整数倍)  半字数据的起始地址的最末一位为0(2字节的整数倍) 5. 下面的程序是检查结构变量按边界对齐的情况。上机调试下面的程序,并回答下列问 题。 (1) 运行结果是什么?并结合教材(P305-306)图示分析程序执行结果的原因,并 将原因记录于实验报告之中。 (2) 若把结构体成员变量c的类型分别改为long、double型,并修改x.c的输出类型, 程序的运行结果又是什么?并分析原因。 (3) int、short、float、double数据按边界对齐的要求是什么?结构变量所占的 字节数等于各个成员变量的字节数之和吗?
6. 查看“字节对齐和边界对齐介绍”网页,仔细阅读有关字节对齐和边界对齐的说明 http://www.cnblogs.com/wwping/articles/2314080.html。 7. 下面的程序是测试数组元素的对齐方式,上机调试并分析程序的运行结果。修改程序, 在#include指令后加入编译预处理指令:#pragma pack (2),观察运行结果的变化, 若将#pragma pack (2)改为#pragma pack (1),程序的运行结果又如何?
8. 查看网页,#pragma pack学习: http://www.cppblog.com/range/archive/2011/07/15/151094.html 三、 实验报告要求 1. 给出源程序(文本文件)和执行结果。 2. 详细记录实验过程中出现的各种问题及其解决方法。 3. 认真总结实验的收获、体会和存在的问题。
实验二 整数的表示与运算方法 一、 实验目的 掌握整数在计算机内的表示方法,通过无符号数和带符号整数之间的比较运算,理解无 符号数和补码整数运算的特殊性。 二、 实验要求 1. 上机调试下面的C语言程序,并回答下列问题。 (1) 运行结果是什么?结合教材(P255)分析程序运行结果的原因,并记录到实验报 告中。100的十六进制值(用8位十六进制表示)是什么?与程序的输出结果是否相 同,为什么? (2) 函数show_bytes(byte_pointer start, int len)的功能是什么? (3) 修改程序,分别将100、-100作为char、short、long型时,输出分别是什么? (4) 修改程序,将-100作为unsigned char、unsigned short、unsigned long型时, 输出分别是什么?-1 用int 类型和unsiged int 类型表示的结果分别是多少? (5) int类型的位数、最小值和最大值各是多少? 2. 假定以下关系表达式在32位用补码表示的机器上执行,结果是什么? 关系表达式 运算类型 结果 原因分析
0 == 0U -1 < 0 -1 < 0U 2147483647 > -2147483647-1 2147483647U > -2147483647-1 2147483647 > (int) 2147483648U -1 > -2 (unsigned) -1 > -2 3. 实现函数void show_bits(unsigned ch),其功能是将一个字节变量ch按二进制输出, 每4位一组。如ch为十进制为65,输出结果为:0100 0001。为什么形参必须是 unsigned? 4. 在函数show_bytes(byte_pointer start, int len)中调用show_bits,将各字节按 二进制形式输出。 5. 调试下面的程序,会有什么错误,为什么? 三、 实验报告要求 1. 给出源程序(文本文件)和执行结果。 2. 记录实验过程中出现的各种问题及其解决方法。 3. 总结实验的收获、体会和存在的问题。
实验三 浮点数的表示与运算方法 一、 实验目的 1. 掌握IEEE 754 浮点数在机器中的二进制表示方法。 2. 理解IEEE 754 浮点数在机器中应用方法,特别是一些特殊值的处理。 二、 实验要求 1. 上机调试下面的程序,并回答下列问题。 (1) 运行结果是什么?按照IEEE 754 浮点数表示方法(教材 P233),说明程序运行 结果的正确性。 (2) 函数void show_bits(unsigned ch)的功能是什么? (3) 修改程序上述程序,输出+ 0.0 、 - 0.0、1.0的二进制形式,并分析原因。 2. 假定以下关系表达式在IEEE 754 浮点数表示的机器上执行,结果是什么?其中变量 x、 f、d的类型分别 为int、float、double它们的值为任意值,f和d不能为+∞、− ∞、NaN。
关系表达式 结果 原因分析 x == (int)(double) x x == (int)(float) x d == (double)(float) d f == (float)(double) f f == -(-f) 1.0/2 == 1/2.0 d*d >= 0.0 (f+d)-f == d 3. 标准头文件limits.h中包含了int、long等类型的最大值和最小值常量,如int的最大 值和最小值常量分别为:INT_MAX、INT_MIN,标准头文件float.h中包含了float、 doubke等类型的最大值和最小值常量,如float的最大值和最小值常量分别为 FLT_MAX、FLT_MIN。编写程序输出int、long、float、double等类型的最大值和最小 值(十进制形式以及二进制形式)。参考程序如下: 4. 通过编程得出float 和double 类型的精度(即十进制有效位的位数); 5. 编程检查“-8.0/0”、“sqrt(-4.0)”的运算结果。 三、 实验报告要求 1. 给出源程序(文本文件)和执行结果。 2. 记录实验过程中出现的各种问题及其解决方法。 3. 总结实验的收获、体会和存在的问题。
分享到:
收藏