From 7935331c11d29d4532093c7032317fddbe38343d Mon Sep 17 00:00:00 2001 From: fduTristin <3572887883@qq.com> Date: Tue, 30 Sep 2025 14:47:58 +0800 Subject: [PATCH 1/2] chore: remove `README.md`, move files from `/datalab`, and add `.gitignore` --- .gitignore | 3 + datalab/Driverhdrs.pm => Driverhdrs.pm | 0 datalab/Driverlib.pm => Driverlib.pm | 0 datalab/Makefile => Makefile | 0 datalab/README => README | 0 README.md | 222 ------------------------- datalab/bits.c => bits.c | 0 datalab/bits.h => bits.h | 0 datalab/btest.c => btest.c | 0 datalab/btest.h => btest.h | 0 datalab/decl.c => decl.c | 0 datalab/dlc => dlc | Bin datalab/driver.pl => driver.pl | 0 datalab/fshow.c => fshow.c | 0 datalab/ishow.c => ishow.c | 0 datalab/tests.c => tests.c | 0 16 files changed, 3 insertions(+), 222 deletions(-) create mode 100644 .gitignore rename datalab/Driverhdrs.pm => Driverhdrs.pm (100%) rename datalab/Driverlib.pm => Driverlib.pm (100%) rename datalab/Makefile => Makefile (100%) rename datalab/README => README (100%) delete mode 100644 README.md rename datalab/bits.c => bits.c (100%) rename datalab/bits.h => bits.h (100%) rename datalab/btest.c => btest.c (100%) rename datalab/btest.h => btest.h (100%) rename datalab/decl.c => decl.c (100%) rename datalab/dlc => dlc (100%) rename datalab/driver.pl => driver.pl (100%) rename datalab/fshow.c => fshow.c (100%) rename datalab/ishow.c => ishow.c (100%) rename datalab/tests.c => tests.c (100%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..59abe2b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +btest +fshow +ishow \ No newline at end of file diff --git a/datalab/Driverhdrs.pm b/Driverhdrs.pm similarity index 100% rename from datalab/Driverhdrs.pm rename to Driverhdrs.pm diff --git a/datalab/Driverlib.pm b/Driverlib.pm similarity index 100% rename from datalab/Driverlib.pm rename to Driverlib.pm diff --git a/datalab/Makefile b/Makefile similarity index 100% rename from datalab/Makefile rename to Makefile diff --git a/datalab/README b/README similarity index 100% rename from datalab/README rename to README diff --git a/README.md b/README.md deleted file mode 100644 index 233a8bd..0000000 --- a/README.md +++ /dev/null @@ -1,222 +0,0 @@ -# Lab1 -- DataLab - -> author: 蔡亦扬、项正豪 - -## 一、实验简介 - -CSAPP 第一章配套实验。 - -本实验的目的是加深同学们对整数和浮点数二进制表示的认识。同学们需要解出若干程序谜题,编写代码并通过正确性测试,最后提交代码和报告。希望同学们多加思考,在解题过程中能学到的远不止二进制本身,还能加深对位运算的理解,以及学到一些算法知识。 - -本实验分为常规部和荣誉部分。荣誉部分的难度较高,是本课程比较有挑战性的部分。 - -荣誉部分虽然占分,但是占分并不高,大家可以自己决定要不要做荣誉部分。生活就像海洋,只有意志坚强的人才能到达彼岸! - - - -## 二、部署实验环境 - -### (1)下载 - -从 `github classroom` 拉取`ICS2025_datalab` 文件夹,其中的内容就是本次实验用到的的文件了,拉取指令如下: - -```shell -git clone xxx # 将 xxx 替换为对应链接 -cd ICS2025_datalab -``` - -### (2)准备工作 - -#### - 确保已安装了 gcc - -在终端中检查是否安装了 gcc: - -```shell -gcc -v -``` - -如果已安装,终端将会反馈版本信息,否则会反馈 `command not found` 。 - -如未安装,尝试执行以下命令进行安装: - -```shell -sudo apt-get install gcc -``` - - - -#### - 确保已安装了 make - -检查是否安装 make,在终端输入: - -```shell -make -v -``` - -同理,如未安装,尝试以此执行以下命令: - -```shell -sudo apt-get update -sudo apt-get install make -sudo apt-get install libc6 libc6-dev libc6-dev-i386 -``` - - - -#### - 确保实验文件能正常 make 并运行测试 - -在终端中进入 `datalab/` 文件夹目录。 - -键入 `ls` 查看内容,你应当看到如下文件: - -```shell -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 -``` - -在终端中依次执行如下命令,以生成可执行文件并执行: - -```shell -make clean -make all -./btest -``` - -如果过程顺利,最后会输出测试结果,最后一行为 `Total points: 0/69` 。 - -如果过程中出现如下报错: - -```shell -/usr/bin/ld: cannot found -lgcc -``` - -那么尝试执行: - -```shell -sudo apt install gcc-multilib -``` - - - -#### - 确保 dlc(data lab compiler)能正常执行 - -依然在 `datalab/` 目录下, - -执行: - -```shell -./dlc bits.c -``` - -如果遇到 `./dlc: Permission denied`,说明没有当前文件的执行权限,执行: -```shell -chmod +x dlc -``` -增加执行权限。 - -如果执行立即结束并且没有任何反馈,则没有问题。 - - - -## 三、实验提示与说明 - -### (1)如何入手 - -推荐阅读顺序:本文档 > `README` > `bits.c` 的注释部分。 - -`README` 文档中对实验文件做了较为详细的介绍。 - -`bits.c` 是同学们唯一需要编辑的文件,其中包含了谜题规则介绍, 18 个谜题以及谜题内容、难度、分数等。 - -上面的两个文件请务必仔细阅读。 - - - -注意到,每一个谜题包含了如下信息: - -* 能使用的运算符。 -* 能使用的运算符总数量。 -* 能使用的常数的值域范围。 -* 变量类型。 -* 能否使用控制语句(如 `if` )等。 - - - -### (2)测试 - -* 除了 `bits.c` ,你不应该编辑任何其余文件。 - -* 完成谜题后,需要检验自己的代码是否正确: - - * 首先,执行下述指令,检查每个函数使用的运算符类型、数目是否符合要求: - - * ```shell - ./dlc -e bits.c - ``` - - * 如没有任何报错,按顺序执行下述指令,测试每个函数的正确性: - - * ```shell - make clean - make all - ./btest - ``` - - * `btest` 执行时会给出每个谜题(函数)是否通过测试(未通过时会给出测试数据),并且会计算你的最终得分。 - -* 你可以利用上 `./ishow` 和 `./fshow` 来帮助你调试(用法见 `README`)。 - - - -## 四、提交实验 - -### (1)内容要求 - -你需要提交至少两份文件,包含你的 `bits.c` 和一份实验报告。 - -实验报告应该包含以下内容: - -* 实验标题,你的姓名,学号。 - -* 你在终端中执行 `./dlc -e bits.c` 后的截图。 -* 你在终端中执行 `./btest` 后的截图。 -* 描述你实现每个函数的思路。bits.c中不要求给自己的代码写注释(写了也无妨) -* 如果有,请务必在报告中列出引用的内容以及参考的资料。 -* 对本实验的感受(可选)。 -* 对助教们的建议(可选)。 - -### (2)格式要求 - -可提交 `.md` 文件或者 `.pdf` 文件。不要提交 `.doc` 或 `.docx` 文件。 -(如果提交 `.md` 文件,请确保助教能同时看到你报告中的截图!) - -### (3)上传 - -在终端运行以下指令: - -```shell -git add -A -# 提交当前文件夹下的所有更改到暂存区 -git commit -m "xxx(可以是你的提交注释)" -# 将暂存区的所有更改提交到本地仓库 -git push -# 将本地仓库推送到远程 -``` - -### (4)打分规则 - -* 实验报告要求简洁清晰,不必追求字数,描述清楚思路即可 -* 对每道谜题请先做思考,不要立即使用搜索引擎。 -* 不允许抄袭其它人的代码,一旦发现,零分处理。 - - - -## 五、参考资料 - -* http://csapp.cs.cmu.edu/3e/labs.html (lab 来源,本实验相较原文件有改动) -* 本文档编写时参考了 24 年的实验文档 。 -* 负责助教: - * 蔡亦扬 caiyy23@m.fudan.edu.cn - * 项正豪 zhxiang23@m.fudan.edu.cn - -**特别鸣谢**:24Fall ICS助教李增昊 diff --git a/datalab/bits.c b/bits.c similarity index 100% rename from datalab/bits.c rename to bits.c diff --git a/datalab/bits.h b/bits.h similarity index 100% rename from datalab/bits.h rename to bits.h diff --git a/datalab/btest.c b/btest.c similarity index 100% rename from datalab/btest.c rename to btest.c diff --git a/datalab/btest.h b/btest.h similarity index 100% rename from datalab/btest.h rename to btest.h diff --git a/datalab/decl.c b/decl.c similarity index 100% rename from datalab/decl.c rename to decl.c diff --git a/datalab/dlc b/dlc similarity index 100% rename from datalab/dlc rename to dlc diff --git a/datalab/driver.pl b/driver.pl similarity index 100% rename from datalab/driver.pl rename to driver.pl diff --git a/datalab/fshow.c b/fshow.c similarity index 100% rename from datalab/fshow.c rename to fshow.c diff --git a/datalab/ishow.c b/ishow.c similarity index 100% rename from datalab/ishow.c rename to ishow.c diff --git a/datalab/tests.c b/tests.c similarity index 100% rename from datalab/tests.c rename to tests.c From 59a15afd4b6da78be8a31457c91bab97f011d1b0 Mon Sep 17 00:00:00 2001 From: fduTristin <3572887883@qq.com> Date: Tue, 30 Sep 2025 14:52:40 +0800 Subject: [PATCH 2/2] fix: remove 'cd datalab' --- .github/workflows/classroom.yml | 76 ++++++++++++++++----------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/.github/workflows/classroom.yml b/.github/workflows/classroom.yml index 8c2c2b5..e30afb3 100644 --- a/.github/workflows/classroom.yml +++ b/.github/workflows/classroom.yml @@ -18,9 +18,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: Operator Check - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && chmod +x dlc && ./dlc bits.c + command: chmod +x dlc && ./dlc bits.c input: '' expected-output: '^$' comparison-method: regex @@ -31,9 +31,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: signMask - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f signMask + command: ./btest -f signMask input: '' expected-output: 'Total points: 1/1' comparison-method: contains @@ -44,9 +44,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: bitXor - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f bitXor + command: ./btest -f bitXor input: '' expected-output: 'Total points: 2/2' comparison-method: contains @@ -57,9 +57,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: clearByte - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f clearByte + command: ./btest -f clearByte input: '' expected-output: 'Total points: 2/2' comparison-method: contains @@ -70,9 +70,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: roundUp - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f roundUp + command: ./btest -f roundUp input: '' expected-output: 'Total points: 3/3' comparison-method: contains @@ -83,9 +83,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: negativePart - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f negativePart + command: ./btest -f negativePart input: '' expected-output: 'Total points: 3/3' comparison-method: contains @@ -96,9 +96,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: isLargerOrEqual - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f isLargerOrEqual + command: ./btest -f isLargerOrEqual input: '' expected-output: 'Total points: 4/4' comparison-method: contains @@ -109,9 +109,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: logicalShift - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f logicalShift + command: ./btest -f logicalShift input: '' expected-output: 'Total points: 4/4' comparison-method: contains @@ -122,9 +122,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: swapNibblePairs - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f swapNibblePairs + command: ./btest -f swapNibblePairs input: '' expected-output: 'Total points: 4/4' comparison-method: contains @@ -135,9 +135,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: secondLowestZeroBit - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f secondLowestZeroBit + command: ./btest -f secondLowestZeroBit input: '' expected-output: 'Total points: 4/4' comparison-method: contains @@ -148,9 +148,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: rotateRightBits - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f rotateRightBits + command: ./btest -f rotateRightBits input: '' expected-output: 'Total points: 5/5' comparison-method: contains @@ -161,9 +161,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: fractions - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f fractions + command: ./btest -f fractions input: '' expected-output: 'Total points: 5/5' comparison-method: contains @@ -174,9 +174,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: overflowCalc - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f overflowCalc + command: ./btest -f overflowCalc input: '' expected-output: 'Total points: 7/7' comparison-method: contains @@ -187,9 +187,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: mul5Sat - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f mul5Sat + command: ./btest -f mul5Sat input: '' expected-output: 'Total points: 7/7' comparison-method: contains @@ -200,9 +200,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: float_abs - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f float_abs + command: ./btest -f float_abs input: '' expected-output: 'Total points: 3/3' comparison-method: contains @@ -213,9 +213,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: float_half - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f float_half + command: ./btest -f float_half input: '' expected-output: 'Total points: 4/4' comparison-method: contains @@ -226,9 +226,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: float_i2f - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f float_i2f + command: ./btest -f float_i2f input: '' expected-output: 'Total points: 7/7' comparison-method: contains @@ -239,9 +239,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: oddParity - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f oddParity + command: ./btest -f oddParity input: '' expected-output: 'Total points: 2/2' comparison-method: contains @@ -252,9 +252,9 @@ jobs: uses: classroom-resources/autograding-io-grader@v1 with: test-name: bitCount - setup-command: sudo apt-get install gcc-multilib && cd datalab && make clean + setup-command: sudo apt-get install gcc-multilib && make clean && make all - command: cd datalab && ./btest -f bitCount + command: ./btest -f bitCount input: '' expected-output: 'Total points: 2/2' comparison-method: contains