Skip to content
This repository was archived by the owner on Apr 7, 2026. It is now read-only.

Commit c6974f2

Browse files
committed
add lab1
1 parent 3c57b32 commit c6974f2

2 files changed

Lines changed: 223 additions & 0 deletions

File tree

docs/.vitepress/config/zh.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ function sidebarGuide(): DefaultTheme.Sidebar {
5858
items: [
5959
{ text: 'ICS 实验入门手册', link: '/lab/manual' },
6060
{ text: 'Lab0', link: '/lab/lab0' },
61+
{ text: 'Lab1', link: '/lab/lab1' }
6162
]
6263
},
6364
{

docs/lab/lab1.md

Lines changed: 222 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,222 @@
1+
# Lab1 -- DataLab
2+
3+
> author: 蔡亦扬、项正豪
4+
5+
## 一、实验简介
6+
7+
CSAPP 第一章配套实验。
8+
9+
本实验的目的是加深同学们对整数和浮点数二进制表示的认识。同学们需要解出若干程序谜题,编写代码并通过正确性测试,最后提交代码和报告。希望同学们多加思考,在解题过程中能学到的远不止二进制本身,还能加深对位运算的理解,以及学到一些算法知识。
10+
11+
本实验分为常规部和荣誉部分。荣誉部分的难度较高,是本课程比较有挑战性的部分。
12+
13+
荣誉部分虽然占分,但是占分并不高,大家可以自己决定要不要做荣誉部分。生活就像海洋,只有意志坚强的人才能到达彼岸!
14+
15+
16+
17+
## 二、部署实验环境
18+
19+
### (1)下载
20+
21+
`github classroom` 拉取`ICS2025_datalab` 文件夹,其中的内容就是本次实验用到的的文件了,拉取指令如下:
22+
23+
```shell
24+
git clone xxx # 将 xxx 替换为对应链接
25+
cd ICS2025_datalab
26+
```
27+
28+
### (2)准备工作
29+
30+
#### 确保已安装了 gcc
31+
32+
在终端中检查是否安装了 gcc:
33+
34+
```shell
35+
gcc -v
36+
```
37+
38+
如果已安装,终端将会反馈版本信息,否则会反馈 `command not found`
39+
40+
如未安装,尝试执行以下命令进行安装:
41+
42+
```shell
43+
sudo apt-get install gcc
44+
```
45+
46+
47+
48+
#### 确保已安装了 make
49+
50+
检查是否安装 make,在终端输入:
51+
52+
```shell
53+
make -v
54+
```
55+
56+
同理,如未安装,尝试以此执行以下命令:
57+
58+
```shell
59+
sudo apt-get update
60+
sudo apt-get install make
61+
sudo apt-get install libc6 libc6-dev libc6-dev-i386
62+
```
63+
64+
65+
66+
#### 确保实验文件能正常 make 并运行测试
67+
68+
在终端中进入 `datalab/` 文件夹目录。
69+
70+
键入 `ls` 查看内容,你应当看到如下文件:
71+
72+
```shell
73+
Driverhdrs.pm Makefile bits.c btest.c decl.c driver.pl ishow.c
74+
Driverlib.pm README bits.h btest.h dlc fshow.c tests.c
75+
```
76+
77+
在终端中依次执行如下命令,以生成可执行文件并执行:
78+
79+
```shell
80+
make clean
81+
make all
82+
./btest
83+
```
84+
85+
如果过程顺利,最后会输出测试结果,最后一行为 `Total points: 0/69`
86+
87+
如果过程中出现如下报错:
88+
89+
```shell
90+
/usr/bin/ld: cannot found -lgcc
91+
```
92+
93+
那么尝试执行:
94+
95+
```shell
96+
sudo apt install gcc-multilib
97+
```
98+
99+
100+
101+
#### 确保 dlc(data lab compiler)能正常执行
102+
103+
依然在 `datalab/` 目录下,
104+
105+
执行:
106+
107+
```shell
108+
./dlc bits.c
109+
```
110+
111+
如果遇到 `./dlc: Permission denied`,说明没有当前文件的执行权限,执行:
112+
```shell
113+
chmod +x dlc
114+
```
115+
增加执行权限。
116+
117+
如果执行立即结束并且没有任何反馈,则没有问题。
118+
119+
120+
121+
## 三、实验提示与说明
122+
123+
### (1)如何入手
124+
125+
推荐阅读顺序:本文档 > `README` > `bits.c` 的注释部分。
126+
127+
`README` 文档中对实验文件做了较为详细的介绍。
128+
129+
`bits.c` 是同学们唯一需要编辑的文件,其中包含了谜题规则介绍, 18 个谜题以及谜题内容、难度、分数等。
130+
131+
上面的两个文件请务必仔细阅读。
132+
133+
134+
135+
注意到,每一个谜题包含了如下信息:
136+
137+
* 能使用的运算符。
138+
* 能使用的运算符总数量。
139+
* 能使用的常数的值域范围。
140+
* 变量类型。
141+
* 能否使用控制语句(如 `if` )等。
142+
143+
144+
145+
### (2)测试
146+
147+
* 除了 `bits.c` ,你不应该编辑任何其余文件。
148+
149+
* 完成谜题后,需要检验自己的代码是否正确:
150+
151+
* 首先,执行下述指令,检查每个函数使用的运算符类型、数目是否符合要求:
152+
153+
* ```shell
154+
./dlc -e bits.c
155+
```
156+
157+
* 如没有任何报错,按顺序执行下述指令,测试每个函数的正确性:
158+
159+
* ```shell
160+
make clean
161+
make all
162+
./btest
163+
```
164+
165+
* `btest` 执行时会给出每个谜题(函数)是否通过测试(未通过时会给出测试数据),并且会计算你的最终得分。
166+
167+
* 你可以利用上 `./ishow``./fshow` 来帮助你调试(用法见 `README`)。
168+
169+
170+
171+
## 四、提交实验
172+
173+
### (1)内容要求
174+
175+
你需要提交至少两份文件,包含你的 `bits.c` 和一份实验报告。
176+
177+
实验报告应该包含以下内容:
178+
179+
* 实验标题,你的姓名,学号。
180+
181+
* 你在终端中执行 `./dlc -e bits.c` 后的截图。
182+
* 你在终端中执行 `./btest` 后的截图。
183+
* 描述你实现每个函数的思路。bits.c中不要求给自己的代码写注释(写了也无妨)
184+
* 如果有,请务必在报告中列出引用的内容以及参考的资料。
185+
* 对本实验的感受(可选)。
186+
* 对助教们的建议(可选)。
187+
188+
### (2)格式要求
189+
190+
可提交 `.md` 文件或者 `.pdf` 文件。不要提交 `.doc``.docx` 文件。
191+
(如果提交 `.md` 文件,请确保助教能同时看到你报告中的截图!)
192+
193+
### (3)上传
194+
195+
在终端运行以下指令:
196+
197+
```shell
198+
git add -A
199+
# 提交当前文件夹下的所有更改到暂存区
200+
git commit -m "xxx(可以是你的提交注释)"
201+
# 将暂存区的所有更改提交到本地仓库
202+
git push
203+
# 将本地仓库推送到远程
204+
```
205+
206+
### (4)打分规则
207+
208+
* 实验报告要求简洁清晰,不必追求字数,描述清楚思路即可
209+
* 对每道谜题请先做思考,不要立即使用搜索引擎。
210+
* 不允许抄袭其它人的代码,一旦发现,零分处理。
211+
212+
213+
214+
## 五、参考资料
215+
216+
* http://csapp.cs.cmu.edu/3e/labs.html (lab 来源,本实验相较原文件有改动)
217+
* 本文档编写时参考了 24 年的实验文档 。
218+
* 负责助教:
219+
* 蔡亦扬 caiyy23@m.fudan.edu.cn
220+
* 项正豪 zhxiang23@m.fudan.edu.cn
221+
222+
**特别鸣谢**:24 Fall ICS助教李增昊

0 commit comments

Comments
 (0)