计算机系统实验一:环境安装

参考教材:计算机系统基础 第二版 袁春风 机械工业出版社
参考慕课:计算机系统基础(四):编程与调试实践 https://www.icourse163.org/learn/NJU-1449521162

计算机系统实验导航

实验一:环境安装 https://blog.youkuaiyun.com/weixin_46291251/article/details/122477054

实验二:数据的存储与运算 https://blog.youkuaiyun.com/weixin_46291251/article/details/122478255

实验三:程序的机器级表示 https://blog.youkuaiyun.com/weixin_46291251/article/details/122478979

实验四:二进制程序逆向工程 https://blog.youkuaiyun.com/weixin_46291251/article/details/122479554

实验五:缓冲区溢出攻击 https://blog.youkuaiyun.com/weixin_46291251/article/details/122479798

实验六:程序的链接 https://blog.youkuaiyun.com/weixin_46291251/article/details/122480049

实验源码: xxx

准备

实验内容:

1 课程实验平台环境的安装,基本实验工具的使用;
2 从高级语言的角度展示和解释位运算、浮点数运算的精度、cache对程序性能的影响。

实验目标:

1 完成课程实验平台环境的搭建与设置;掌握常用实验工具的基本使用方法;
2 掌握C语言中位操作语句的使用;了解浮点数表示精度在浮点数运算中的影响;了解cache、数据存储与访问模式对程序性能的影响,掌握编写cache友好代码的基本原则。

实验任务:

1 学习MOOC内容
https://www.icourse163.org/learn/NJU-1449521162

  • 第一周 实验与开发环境的安装和使用
    第2讲 虚拟机、Linux及其上实验环境的安装
    第3讲 基本实验工具的使用
  • 第二周 C语言编程实践
    第1讲 数据的位运算操作
    第2讲 浮点数的精度问题
    第3讲 Cache友好代码

2 在自己的电脑上安装实验环境
安装虚拟机软件:VirtualBox 6.0.8开源软件
安装Linux系统:Linux Debian 32位
熟悉软件工具:gcc,gdb,objdump

题目一:不使用中间变量,交换变量a和b的值

编写C语言程序,不使用中间变量,交换变量a和b的值,已知变量的初始值为a=2021,b=191,分析程序的反汇编代码,说明算法的基本原理。
程序代码和注释说明

1.#include <stdio.h>
2.#include <stdlib.h>
3.
4.int main()
5.{
   
6. int a=2021,b=191;
7. printf ("before swapping: a=%d, b=%d\n",a,b);
8. 
9. a = a^b;
10. b = b^a;//b=b^(a^b)=a
11. a = a^b;//a=(a^b)^a=b
12. printf("after swapping: a=%d, b=%d\n",a,b);
13.}

第一步:b=b(ab)=a
第二步:a=(ab)a=b
然后就完成了数值交换并且没有使用其他中间变量。

实验结果记录

在这里插入图片描述

可见实现了不使用中间变量,交换变量a和b的值

题目二:编写C语言程序,说明浮点数运算误差问题,并给出解决方案。

注:可以参考kahan累加算法的例子,MOOC内容(第二周 第2讲 浮点数的精度问题);也可以采用其他算例,分析运行效果,说明算法的基本原理。
程序代码和注释说明

1.#include<stdio.h>
2.void main()
3.{
   
4. float sum = 0;
5. float sum1 =0;
6. float c = 0;
7. float y, t;
8. int i;
9. for (i=0;i<4000000;i++)
10.  sum1+=0.1;
11.
12. for( i=0;i<4000000;i++)
13. {
   
14.  y=0.1-c;
15.  t=sum+y;
16.  c = (t-sum)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cheney822

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

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

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

打赏作者

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

抵扣说明:

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

余额充值