Deadline: 2024.10.10 8:00AM

一、实验简介

CSAPP 第一章配套实验。

本实验的目的是加深同学们对整数和浮点数二进制表示的认识。同学们需要解出若干程序谜题,编写代码并通过正确性测试,最后提交代码和报告。希望同学们多加思考,在解题过程中能学到的远不止二进制本身,还能加深对位运算的理解,以及学到一些算法知识。

本实验分为常规部和荣誉部分。荣誉部分的难度较高,是本课程比较有挑战性的部分。

荣誉部分虽然占分,但是占分并不高,大家可以自己决定要不要做荣誉部分。Use your discretion!

二、部署实验环境

(1)下载

github classroom 拉取ICS2024_datalab 文件夹,其中的内容就是本次实验用到的的文件了,拉取指令如下:

git clone xxx  # 将 xxx 替换为对应链接
cd ICS2024_datalab

(2)准备工作

- 确保已安装了 gcc

在终端中检查是否安装了 gcc:

gcc -v

如果已安装,终端将会反馈版本信息,否则会反馈 command not found

如未安装,尝试执行以下命令进行安装:

sudo apt-get install gcc

- 确保已安装了 make

检查是否安装 make,在终端输入:

make -v

同理,如未安装,尝试以此执行以下命令:

sudo apt-get update
sudo apt-get install make
sudo apt-get install libc6 libc6-dev libc6-dev-i386

- 确保实验文件能正常 make 并运行测试

在终端中进入 datalab/ 文件夹目录。

键入 ls 查看内容,你应当看到如下文件:

Driverhdrs.pm  Makefile  bits.c  btest.c  decl.c  driver.pl  ishow.c
Driverlib.pm   README    bits.h  btest.h  dlc     fshow.c    tests.c

在终端中依次执行如下命令,以生成可执行文件并执行:

make clean
make all
./btest

如果过程顺利,最后会输出测试结果,最后一行为 Total points: 0/69

如果过程中出现如下报错:

/usr/bin/ld: cannot found -lgcc

那么尝试执行:

sudo apt install gcc-multilib

- 确保 dlc(data lab compiler)能正常执行

依然在 datalab/ 目录下,

执行:

./dlc bits.c

如果遇到 ./dlc: Permission denied,说明没有当前文件的执行权限,执行:

chmod +x dlc

增加执行权限。

如果执行立即结束并且没有任何反馈,则没有问题。

三、实验提示与说明

(1)如何入手

推荐阅读顺序:本文档 > README > bits.c 的注释部分。

README 文档中对实验文件做了较为详细的介绍。

bits.c 是同学们唯一需要编辑的文件,其中包含了谜题规则介绍, 18 个谜题以及谜题内容、难度、分数等。

上面的两个文件请务必仔细阅读。

注意到,每一个谜题包含了如下信息:

(2)测试

四、提交实验

(1)内容要求

你需要提交至少两份文件,包含你的 bits.c 和一份实验报告。

实验报告应该包含以下内容:

(2)格式要求

可提交 .md 文件或者 .pdf 文件。不要提交 .doc.docx 文件。
(如果提交 .md 文件,请确保助教能同时看到你报告中的截图!)

(3)上传

在终端运行以下指令:

git add -A
# 提交当前文件夹下的所有更改到暂存区
git commit -m "xxx(可以是你的提交注释)"
# 将暂存区的所有更改提交到本地仓库
git push
# 将本地仓库推送到远程

(4)打分规则

五、参考资料