实验报告“计算机结构实验一.pdf”主要探讨了计算机中数据和程序的机器级表示,以及如何通过编程理解和分析这些表示。实验围绕三个主要目标展开:
1. 理解计算机数据表示和存储的方式:计算机中数据以二进制形式存在,不同的数据类型如整数、浮点数有不同的存储格式。例如,整数可以使用补码表示,而浮点数遵循IEEE-754标准。在实验中,学生们需要编写一个函数`is_little_endian()`来判断系统是采用小端法还是大端法存储数据。
2. 通过高级语言编程了解基本程序的机器级表示:实验中使用C语言编写程序,展示不同数据类型的字节表示。例如,`show-bytes.c`程序用于显示内存中变量的字节序列,通过`show_int()`和`show_float()`函数,可以观察整数和浮点数的字节布局。
3. 掌握基本的程序编译和汇编代码分析过程:学生们被要求修改和运行示例代码,分析编译后的机器代码,理解从高级语言到机器代码的转换过程。
实验内容分为三部分:
- 第一部分,编写`is_little_endian()`函数,该函数通过比较内存中的低字节和高字节来确定系统的字节顺序。
- 第二部分,使用学生的学号创建正负整数和浮点数,然后通过`show-bytes.c`程序显示它们的字节表示,对比小端法和大端法的不同。
- 第三部分,基于IEEE-754标准,手动推导实验二中整数和浮点数的表示,验证实际机器表示与理论推导的一致性。
实验步骤包括在VC 6.0++环境中编写和编译程序,然后在大端和小端机器上执行,观察和分析结果。实验结果部分应包含实验一和实验二的具体输出,以及实验三的手动推导过程。
源代码中包含了几个关键函数,如`show_bytes()`用于显示字节序列,`show_int()`和`show_float()`分别用于显示整数和浮点数的字节表示,`simple_show()`展示了不同字节数的整数表示,`float_eg()`展示了正负浮点数的表示,而`string_eg()`则用于显示字符串的字节表示。
实验过程中,学生们能够深入理解数据在计算机内部的表示方式,以及这些表示如何影响程序的执行。此外,通过手动推导和比较,学生们还能加深对IEEE-754浮点数标准的理解。