From 09bc033bb5d39ba1bb6dc9f59626740772c2c5a8 Mon Sep 17 00:00:00 2001 From: GentleCold <1952173800@qq.com> Date: Fri, 9 Sep 2022 19:08:27 +0800 Subject: [PATCH] feat: finish data_lab --- .gitignore | 3 + CMakeLists.txt | 16 + README.md | 20 + labs/attack_lab/README.txt | 28 + labs/attack_lab/cookie.txt | 1 + labs/attack_lab/ctarget | Bin 0 -> 67500 bytes labs/attack_lab/farm.c | 223 + labs/attack_lab/hex2raw | Bin 0 -> 21623 bytes labs/attack_lab/rtarget | Bin 0 -> 73161 bytes labs/cache_lab/Makefile | 33 + labs/cache_lab/README | 39 + labs/cache_lab/cachelab.c | 83 + labs/cache_lab/cachelab.h | 37 + labs/cache_lab/csim | Bin 0 -> 21808 bytes labs/cache_lab/csim-ref | Bin 0 -> 25273 bytes labs/cache_lab/csim.c | 7 + labs/cache_lab/csim.exe | Bin 0 -> 64582 bytes labs/cache_lab/driver.py | 138 + labs/cache_lab/gentle-handin.tar | Bin 0 -> 10240 bytes labs/cache_lab/test-csim | Bin 0 -> 17180 bytes labs/cache_lab/test-trans | Bin 0 -> 32168 bytes labs/cache_lab/test-trans.c | 261 + labs/cache_lab/tracegen | Bin 0 -> 26912 bytes labs/cache_lab/tracegen.c | 107 + labs/cache_lab/traces/dave.trace | 5 + labs/cache_lab/traces/long.trace | 267988 +++++++++++++++++++++++++++++++++++ labs/cache_lab/traces/trans.trace | 596 + labs/cache_lab/traces/yi.trace | 7 + labs/cache_lab/traces/yi2.trace | 16 + labs/cache_lab/trans.c | 84 + labs/cache_lab/trans.o | Bin 0 -> 4196 bytes labs/data_lab/Driverhdrs.pm | 12 + labs/data_lab/Driverlib.pm | 138 + labs/data_lab/Makefile | 26 + labs/data_lab/README | 140 + labs/data_lab/bits.c | 362 + labs/data_lab/bits.h | 31 + labs/data_lab/btest | Bin 0 -> 22404 bytes labs/data_lab/btest.c | 583 + labs/data_lab/btest.h | 32 + labs/data_lab/decl.c | 57 + labs/data_lab/dlc | Bin 0 -> 1002790 bytes labs/data_lab/driver.pl | 439 + labs/data_lab/fshow | Bin 0 -> 15956 bytes labs/data_lab/fshow.c | 151 + labs/data_lab/ishow | Bin 0 -> 15828 bytes labs/data_lab/ishow.c | 75 + labs/data_lab/tests.c | 118 + quiz/test.h | 30 + quiz/test_quiz.c | 15 + 50 files changed, 271901 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 README.md create mode 100644 labs/attack_lab/README.txt create mode 100644 labs/attack_lab/cookie.txt create mode 100644 labs/attack_lab/ctarget create mode 100644 labs/attack_lab/farm.c create mode 100644 labs/attack_lab/hex2raw create mode 100644 labs/attack_lab/rtarget create mode 100644 labs/cache_lab/Makefile create mode 100644 labs/cache_lab/README create mode 100644 labs/cache_lab/cachelab.c create mode 100644 labs/cache_lab/cachelab.h create mode 100644 labs/cache_lab/csim create mode 100644 labs/cache_lab/csim-ref create mode 100644 labs/cache_lab/csim.c create mode 100644 labs/cache_lab/csim.exe create mode 100644 labs/cache_lab/driver.py create mode 100644 labs/cache_lab/gentle-handin.tar create mode 100644 labs/cache_lab/test-csim create mode 100644 labs/cache_lab/test-trans create mode 100644 labs/cache_lab/test-trans.c create mode 100644 labs/cache_lab/tracegen create mode 100644 labs/cache_lab/tracegen.c create mode 100644 labs/cache_lab/traces/dave.trace create mode 100644 labs/cache_lab/traces/long.trace create mode 100644 labs/cache_lab/traces/trans.trace create mode 100644 labs/cache_lab/traces/yi.trace create mode 100644 labs/cache_lab/traces/yi2.trace create mode 100644 labs/cache_lab/trans.c create mode 100644 labs/cache_lab/trans.o create mode 100644 labs/data_lab/Driverhdrs.pm create mode 100644 labs/data_lab/Driverlib.pm create mode 100644 labs/data_lab/Makefile create mode 100644 labs/data_lab/README create mode 100644 labs/data_lab/bits.c create mode 100644 labs/data_lab/bits.h create mode 100644 labs/data_lab/btest create mode 100644 labs/data_lab/btest.c create mode 100644 labs/data_lab/btest.h create mode 100644 labs/data_lab/decl.c create mode 100644 labs/data_lab/dlc create mode 100644 labs/data_lab/driver.pl create mode 100644 labs/data_lab/fshow create mode 100644 labs/data_lab/fshow.c create mode 100644 labs/data_lab/ishow create mode 100644 labs/data_lab/ishow.c create mode 100644 labs/data_lab/tests.c create mode 100644 quiz/test.h create mode 100644 quiz/test_quiz.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9d07ce9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +cmake-build-debug +build +.idea \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..8ba4430 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.16) +project(CsappLearning C) + +set(CMAKE_C_STANDARD 11) + +set(BUILD_PATH ${CMAKE_SOURCE_DIR}/build) # 自定义路径变量 +set(LAB_PATH ${CMAKE_SOURCE_DIR}/labs) + +set(EXECUTABLE_OUTPUT_PATH ${BUILD_PATH}) # EXE +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${BUILD_PATH}) # LIB + +add_executable(TestQuiz quiz/test_quiz.c) + +if(CMAKE_BUILD_TYPE AND (CMAKE_BUILD_TYPE STREQUAL "Debug")) + add_definitions(-DDEBUG) +endif() \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..4a0417e --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# CsappLearning + +这是一个本人学习 csapp 的 learning 库 + +其中包括: +* labs - csapp 的各项来自官网的 lab +* quiz - csapp 的部分练习与课堂作业 +* csapp.txt - 由本人 E-note 项目生成的笔记 + +各 lab 得分 +* Datalab - 62 / 62 + * 项目目录下运行 ```./labs/data_lab/driver.pl -u GentleCold``` + +注: +* 本人运行环境: WINDOWS10 - WSL2 +* 各 lab 由其自带的 Makefile 编译 + * ~~但为了保证 linux 环境,使用 cmake 调用 make 编译~~ + * cmake 调用失败,使用 wsl shell 手动 make +* quiz 由本人编写的 CMakeLists 编译 +* 所有 lab 尽可能的不参考他人代码,参考处会有 //TODO 标记 \ No newline at end of file diff --git a/labs/attack_lab/README.txt b/labs/attack_lab/README.txt new file mode 100644 index 0000000..8a49506 --- /dev/null +++ b/labs/attack_lab/README.txt @@ -0,0 +1,28 @@ +This file contains materials for one instance of the attacklab. + +Files: + + ctarget + +Linux binary with code-injection vulnerability. To be used for phases +1-3 of the assignment. + + rtarget + +Linux binary with return-oriented programming vulnerability. To be +used for phases 4-5 of the assignment. + + cookie.txt + +Text file containing 4-byte signature required for this lab instance. + + farm.c + +Source code for gadget farm present in this instance of rtarget. You +can compile (use flag -Og) and disassemble it to look for gadgets. + + hex2raw + +Utility program to generate byte sequences. See documentation in lab +handout. + diff --git a/labs/attack_lab/cookie.txt b/labs/attack_lab/cookie.txt new file mode 100644 index 0000000..3f780a4 --- /dev/null +++ b/labs/attack_lab/cookie.txt @@ -0,0 +1 @@ +0x59b997fa diff --git a/labs/attack_lab/ctarget b/labs/attack_lab/ctarget new file mode 100644 index 0000000000000000000000000000000000000000..b5cb7285525aa929c79dc2c9db34e36536f32894 GIT binary patch literal 67500 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 JQWWahe*plvj1vF= literal 0 HcmV?d00001 diff --git a/labs/attack_lab/rtarget b/labs/attack_lab/rtarget new file mode 100644 index 0000000000000000000000000000000000000000..806500aea67371d4c19ceb45102c97d2b5d59fa4 GIT binary patch literal 73161 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 KOzAf4@Bae8I*jrF literal 0 HcmV?d00001 diff --git a/labs/cache_lab/Makefile b/labs/cache_lab/Makefile new file mode 100644 index 0000000..1712d8c --- /dev/null +++ b/labs/cache_lab/Makefile @@ -0,0 +1,33 @@ +# +# Student makefile for Cache Lab +# Note: requires a 64-bit x86-64 system +# +CC = gcc +CFLAGS = -g -Wall -Werror -std=c99 -m64 + +all: csim test-trans tracegen + # Generate a handin tar file each time you compile + -tar -cvf ${USER}-handin.tar csim.c trans.c + +csim: csim.c cachelab.c cachelab.h + $(CC) $(CFLAGS) -o csim csim.c cachelab.c -lm + +test-trans: test-trans.c trans.o cachelab.c cachelab.h + $(CC) $(CFLAGS) -o test-trans test-trans.c cachelab.c trans.o + +tracegen: tracegen.c trans.o cachelab.c + $(CC) $(CFLAGS) -O0 -o tracegen tracegen.c trans.o cachelab.c + +trans.o: trans.c + $(CC) $(CFLAGS) -O0 -c trans.c + +# +# Clean the src dirctory +# +clean: + rm -rf *.o + rm -f *.tar + rm -f csim + rm -f test-trans tracegen + rm -f trace.all trace.f* + rm -f .csim_results .marker diff --git a/labs/cache_lab/README b/labs/cache_lab/README new file mode 100644 index 0000000..5af6f01 --- /dev/null +++ b/labs/cache_lab/README @@ -0,0 +1,39 @@ +This is the handout directory for the CS:APP Cache Lab. + +************************ +Running the autograders: +************************ + +Before running the autograders, compile your code: + linux> make + +Check the correctness of your simulator: + linux> ./test-csim + +Check the correctness and performance of your transpose functions: + linux> ./test-trans -M 32 -N 32 + linux> ./test-trans -M 64 -N 64 + linux> ./test-trans -M 61 -N 67 + +Check everything at once (this is the program that your instructor runs): + linux> ./driver.py + +****** +Files: +****** + +# You will modifying and handing in these two files +csim.c Your cache simulator +trans.c Your transpose function + +# Tools for evaluating your simulator and transpose function +Makefile Builds the simulator and tools +README This file +driver.py* The driver program, runs test-csim and test-trans +cachelab.c Required helper functions +cachelab.h Required header file +csim-ref* The executable reference cache simulator +test-csim* Tests your cache simulator +test-trans.c Tests your transpose function +tracegen.c Helper program used by test-trans +traces/ Trace files used by test-csim.c diff --git a/labs/cache_lab/cachelab.c b/labs/cache_lab/cachelab.c new file mode 100644 index 0000000..85ac5e4 --- /dev/null +++ b/labs/cache_lab/cachelab.c @@ -0,0 +1,83 @@ +/* + * cachelab.c - Cache Lab helper functions + */ +#include +#include +#include +#include "cachelab.h" +#include + +trans_func_t func_list[MAX_TRANS_FUNCS]; +int func_counter = 0; + +/* + * printSummary - Summarize the cache simulation statistics. Student cache simulators + * must call this function in order to be properly autograded. + */ +void printSummary(int hits, int misses, int evictions) +{ + printf("hits:%d misses:%d evictions:%d\n", hits, misses, evictions); + FILE* output_fp = fopen(".csim_results", "w"); + assert(output_fp); + fprintf(output_fp, "%d %d %d\n", hits, misses, evictions); + fclose(output_fp); +} + +/* + * initMatrix - Initialize the given matrix + */ +void initMatrix(int M, int N, int A[N][M], int B[M][N]) +{ + int i, j; + srand(time(NULL)); + for (i = 0; i < N; i++){ + for (j = 0; j < M; j++){ + // A[i][j] = i+j; /* The matrix created this way is symmetric */ + A[i][j]=rand(); + B[j][i]=rand(); + } + } +} + +void randMatrix(int M, int N, int A[N][M]) { + int i, j; + srand(time(NULL)); + for (i = 0; i < N; i++){ + for (j = 0; j < M; j++){ + // A[i][j] = i+j; /* The matrix created this way is symmetric */ + A[i][j]=rand(); + } + } +} + +/* + * correctTrans - baseline transpose function used to evaluate correctness + */ +void correctTrans(int M, int N, int A[N][M], int B[M][N]) +{ + int i, j, tmp; + for (i = 0; i < N; i++){ + for (j = 0; j < M; j++){ + tmp = A[i][j]; + B[j][i] = tmp; + } + } +} + + + +/* + * registerTransFunction - Add the given trans function into your list + * of functions to be tested + */ +void registerTransFunction(void (*trans)(int M, int N, int[N][M], int[M][N]), + char* desc) +{ + func_list[func_counter].func_ptr = trans; + func_list[func_counter].description = desc; + func_list[func_counter].correct = 0; + func_list[func_counter].num_hits = 0; + func_list[func_counter].num_misses = 0; + func_list[func_counter].num_evictions =0; + func_counter++; +} diff --git a/labs/cache_lab/cachelab.h b/labs/cache_lab/cachelab.h new file mode 100644 index 0000000..02f7730 --- /dev/null +++ b/labs/cache_lab/cachelab.h @@ -0,0 +1,37 @@ +/* + * cachelab.h - Prototypes for Cache Lab helper functions + */ + +#ifndef CACHELAB_TOOLS_H +#define CACHELAB_TOOLS_H + +#define MAX_TRANS_FUNCS 100 + +typedef struct trans_func{ + void (*func_ptr)(int M,int N,int[N][M],int[M][N]); + char* description; + char correct; + unsigned int num_hits; + unsigned int num_misses; + unsigned int num_evictions; +} trans_func_t; + +/* + * printSummary - This function provides a standard way for your cache + * simulator * to display its final hit and miss statistics + */ +void printSummary(int hits, /* number of hits */ + int misses, /* number of misses */ + int evictions); /* number of evictions */ + +/* Fill the matrix with data */ +void initMatrix(int M, int N, int A[N][M], int B[M][N]); + +/* The baseline trans function that produces correct results. */ +void correctTrans(int M, int N, int A[N][M], int B[M][N]); + +/* Add the given function to the function list */ +void registerTransFunction( + void (*trans)(int M,int N,int[N][M],int[M][N]), char* desc); + +#endif /* CACHELAB_TOOLS_H */ diff --git a/labs/cache_lab/csim b/labs/cache_lab/csim new file mode 100644 index 0000000000000000000000000000000000000000..d2a6d59a4fc73153b5cc15246471bb099fad0110 GIT binary patch literal 21808 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 Ang9R* literal 0 HcmV?d00001 diff --git a/labs/cache_lab/csim-ref b/labs/cache_lab/csim-ref new file mode 100644 index 0000000000000000000000000000000000000000..994a78b1a21a951ea5ead0c6f2d3eb2c271cf054 GIT binary patch literal 25273 zcmeHv3wRvGwPy8Co_@&2;K9gXi1o5%Bfnr|drZqnpx9E@5S!6xG_nRHjqW`B z0O#UFm@pYcEG`glLa-s5EbIp2K$dl4V#`2~$j2pyz>SkQL`!UtVv~rs794c{Q;(jW zktUDte!Jg(`?;j)s`J-5r%s)!uIlNksoUMP>uj3FRIstD7*WTwTpSWt#tzhQQestX zGIOy@n3H7!ap2?PITVYOibtht73-4EjyMCKDw_bRY%ZQq@f-m&6)OuVrt%WOC6gj< zm@7yXGuTLhN{R=i9Vc=*jEj>e2qrmJ%1OjcA|c~JQjDNtRX?g5eHx_R z2Ac~M(JqSET7FH$#7m+6bfksSCuPM?&T$b8TEx3J#h8kf+~*<3?Uea{D^hlDkmaTG zOOdo+#j?7rtUb`Yw6d(drKCO38QoE`qiSi%(#q0suyhfxcODEN-fOOFi$ca$FsE~*y#yJyrGE4!#wM^c{cdB2Eq}4Xid8}9QKD8P-oE79`t!5fnX;C8tjU&R$qHC>}MU`cH}T1-q2PS zjhK0SS!>AeXV=u$tX|_;RJy2iiJ89AOjVNK zZ04Vxr!q`hF#{U?jam0yFbar4ejT|2$O+mxxu?R8cQo>Z@ju{a_LR6lDh8f{Pl7tUL=& z<#l;^bIdS6cpVf!HgPve?Kd(Q>*w~V1Lv-YYgw@^o>MQml)p7=?z3r zBD#yy>xrf=FxgInmVQ!!AxQBAS|dxSZ2h5KT=y?Bw)3qN!Vba+48z)95}mQr}S1-`7{t9DCDl^vubVKJpzm zV#f`wk7^>dOyyea{qD0|!$U&DFW^y&2C&EVxcjV;sz4ifftR@d@8&o9U3~O{nK%C< zLVPIccAwSajvUA>bDzzSAET8>`*Uhd{&t+}O+g-C}dy=UYu>^pN2WnLgNIb`rAho;>| z1)S(Of)dcz7JPBbbJRd+pS*teIdb8dOHj41BRk%BPPG8}56#;@bo5iQ_#7;bf@7Kc z+^$!_?ImT%eHghfDt#^^_N4)%-#v&*j`h1wl5W(USmTWYv17(B{|M2gL|+Vx+(Yr{ z@1S4B9cOT*0u>WlJmww&?<4Qhkr!+-6zI1G5UVoJxV<$?$V7F z?vdO*d;S({?$hj!zKA#O2&2gEJ}u_BnVV+diu*M8=n34*ylsZ2qRxM%*q$jiSbpMS zSl&~w8L{dAO37Gt-tbKral73o;L6VcEpwm9y?Yfr6?c3Jl9%}&5^=|CxbiZ8XO{V& zKOv9uYM=SSUn!i|IS+Ln41W%6G55*8%^Y(N3ai?LRlD}b8&9U(b;_f{O$*|VdS&u8 z+~kXKR4zMr^g7jzhRO>NH(^GbQ0-*%iNh)|tTo{B#IS z)nddm<}YAGyGJYfjQ%|g_Y!E5bKe5U_Eu~pTl+|wnqn}(fw13SaikE zYon+UL-rY-eGJV!iwch4&xQXigheMYz;YDr&4!*pYWP{Ca-ZIl4^1mKMrNyIZ6sGE z>vH#en=I+MpNukkxRpjvPafIOvlHXzD;U&|d~Eu62K2@qkIv_<(BgDSZ$!MU<7nrq2fh@7~iPN>d0N)z)?|HmYJKX*yb9Vic+&@Bej@Piz#(EQkH^Tz(hN_k~6x@ zjLS$C6=y^5ASFl4^4OQo8nNi$@MFlxJ>nkg9&&e&R^)!Q8+5D>J?&?M&@eWLuJO@@ z=o;|CLlBQSGA?qmGur_FUcz7H@Q0wzcmNMbxQoNTA=m)?Lk>G$CAzBL@ib!URA&~V zGJ~Z3Nz5L?%yp1d=!1mv-dE1ixXVPg#_n>D?fw$_%AQI-2Kk^G zcd!#xJ0cky~U9s@vb`4IPz$jGDHWctIv<5T~Iu8v+@xff_w z=S(j?$Ddg+B|6c-vFK2&@l?F-6eb?H4gGTW9MxU&QTCAoAdfzR%g`fKZwxC&_m@Ul zbk>i50q`gETzKRl@f;?eKYaiLqR=-KZ#)a{jaJ7-j{FQcuv3^ghqTa)1;h7(TihSj zjnxhG6oq@_nOO9Y5oJ!fb0P>t_-nRNom znpj`;k10#^kmsQrMf4!*cMlMLCfx6Si6?G~y9a0@h3ecNJZtn!qZt!JoBLpG&qCYK zWSAIldkrW7b9TI2D%6{3vHWNi}YSI>FrSeo2GC3imU+zS->_Kzd+>`_QgE zco;FhSiQM=i+CUrwM7G*j73kNw#VaJP9|!KM?=&!sX8CN&#Q9;5uQ1CE!_R?Q#?^l zx5q@)IbPdSY#Un6Ej-07%($=HeF{dMTH!vqYoOabi1gqJ_laFk!9XVr6y_!DLMsf! z-LMUh?terpG>(ujVy}u;h&SSaVcVgE)@{x~5+gNlY?s#ApZWDSecNjf;T@_8#(8#jI9lIvT5p%J_o5*t1 zLk7>$aYtPpOn0){p7{qT0zOn5ixiL4# M{>{Z`lCxE{m!GbV{iP=Mk#X!V_L|tQhJHJO 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 literal 0 HcmV?d00001 diff --git a/labs/cache_lab/driver.py b/labs/cache_lab/driver.py new file mode 100644 index 0000000..f39bd9f --- /dev/null +++ b/labs/cache_lab/driver.py @@ -0,0 +1,138 @@ +#!/usr//bin/python +# +# driver.py - The driver tests the correctness of the student's cache +# simulator and the correctness and performance of their transpose +# function. It uses ./test-csim to check the correctness of the +# simulator and it runs ./test-trans on three different sized +# matrices (32x32, 64x64, and 61x67) to test the correctness and +# performance of the transpose function. +# +import subprocess; +import re; +import os; +import sys; +import optparse; + +# +# computeMissScore - compute the score depending on the number of +# cache misses +# +def computeMissScore(miss, lower, upper, full_score): + if miss <= lower: + return full_score + if miss >= upper: + return 0 + + score = (miss - lower) * 1.0 + range = (upper- lower) * 1.0 + return round((1 - score / range) * full_score, 1) + +# +# main - Main function +# +def main(): + + # Configure maxscores here + maxscore= {}; + maxscore['csim'] = 27 + maxscore['transc'] = 1 + maxscore['trans32'] = 8 + maxscore['trans64'] = 8 + maxscore['trans61'] = 10 + + # Parse the command line arguments + p = optparse.OptionParser() + p.add_option("-A", action="store_true", dest="autograde", + help="emit autoresult string for Autolab"); + opts, args = p.parse_args() + autograde = opts.autograde + + # Check the correctness of the cache simulator + print "Part A: Testing cache simulator" + print "Running ./test-csim" + p = subprocess.Popen("./test-csim", + shell=True, stdout=subprocess.PIPE) + stdout_data = p.communicate()[0] + + # Emit the output from test-csim + stdout_data = re.split('\n', stdout_data) + for line in stdout_data: + if re.match("TEST_CSIM_RESULTS", line): + resultsim = re.findall(r'(\d+)', line) + else: + print "%s" % (line) + + # Check the correctness and performance of the transpose function + # 32x32 transpose + print "Part B: Testing transpose function" + print "Running ./test-trans -M 32 -N 32" + p = subprocess.Popen("./test-trans -M 32 -N 32 | grep TEST_TRANS_RESULTS", + shell=True, stdout=subprocess.PIPE) + stdout_data = p.communicate()[0] + result32 = re.findall(r'(\d+)', stdout_data) + + # 64x64 transpose + print "Running ./test-trans -M 64 -N 64" + p = subprocess.Popen("./test-trans -M 64 -N 64 | grep TEST_TRANS_RESULTS", + shell=True, stdout=subprocess.PIPE) + stdout_data = p.communicate()[0] + result64 = re.findall(r'(\d+)', stdout_data) + + # 61x67 transpose + print "Running ./test-trans -M 61 -N 67" + p = subprocess.Popen("./test-trans -M 61 -N 67 | grep TEST_TRANS_RESULTS", + shell=True, stdout=subprocess.PIPE) + stdout_data = p.communicate()[0] + result61 = re.findall(r'(\d+)', stdout_data) + + # Compute the scores for each step + csim_cscore = map(int, resultsim[0:1]) + trans_cscore = int(result32[0]) * int(result64[0]) * int(result61[0]); + miss32 = int(result32[1]) + miss64 = int(result64[1]) + miss61 = int(result61[1]) + trans32_score = computeMissScore(miss32, 300, 600, maxscore['trans32']) * int(result32[0]) + trans64_score = computeMissScore(miss64, 1300, 2000, maxscore['trans64']) * int(result64[0]) + trans61_score = computeMissScore(miss61, 2000, 3000, maxscore['trans61']) * int(result61[0]) + total_score = csim_cscore[0] + trans32_score + trans64_score + trans61_score + + # Summarize the results + print "\nCache Lab summary:" + print "%-22s%8s%10s%12s" % ("", "Points", "Max pts", "Misses") + print "%-22s%8.1f%10d" % ("Csim correctness", csim_cscore[0], + maxscore['csim']) + + misses = str(miss32) + if miss32 == 2**31-1 : + misses = "invalid" + print "%-22s%8.1f%10d%12s" % ("Trans perf 32x32", trans32_score, + maxscore['trans32'], misses) + + misses = str(miss64) + if miss64 == 2**31-1 : + misses = "invalid" + print "%-22s%8.1f%10d%12s" % ("Trans perf 64x64", trans64_score, + maxscore['trans64'], misses) + + misses = str(miss61) + if miss61 == 2**31-1 : + misses = "invalid" + print "%-22s%8.1f%10d%12s" % ("Trans perf 61x67", trans61_score, + maxscore['trans61'], misses) + + print "%22s%8.1f%10d" % ("Total points", total_score, + maxscore['csim'] + + maxscore['trans32'] + + maxscore['trans64'] + + maxscore['trans61']) + + # Emit autoresult string for Autolab if called with -A option + if autograde: + autoresult="%.1f:%d:%d:%d" % (total_score, miss32, miss64, miss61) + print "\nAUTORESULT_STRING=%s" % autoresult + + +# execute main only if called as a script +if __name__ == "__main__": + main() + diff --git a/labs/cache_lab/gentle-handin.tar b/labs/cache_lab/gentle-handin.tar new file mode 100644 index 0000000000000000000000000000000000000000..3b31a5cd5c6fc08a741ecbc82cb2cbe23235159e GIT binary patch literal 10240 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 OSaq2-{GkO;m;VoemHk)% literal 0 HcmV?d00001 diff --git a/labs/cache_lab/test-trans b/labs/cache_lab/test-trans new file mode 100644 index 0000000000000000000000000000000000000000..df8bde1f1bb381bea93be63292e7d0ce429cb020 GIT binary patch literal 32168 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 +#include +#include +#include +#include +#include +#include +#include +#include "cachelab.h" +#include // fir WEXITSTATUS +#include // for INT_MAX + +/* Maximum array dimension */ +#define MAXN 256 + +/* The description string for the transpose_submit() function that the + student submits for credit */ +#define SUBMIT_DESCRIPTION "Transpose submission" + +/* External function defined in trans.c */ +extern void registerFunctions(); + +/* External variables defined in cachelab-tools.c */ +extern trans_func_t func_list[MAX_TRANS_FUNCS]; +extern int func_counter; + +/* Globals set on the command line */ +static int M = 0; +static int N = 0; + +/* The correctness and performance for the submitted transpose function */ +struct results { + int funcid; + int correct; + int misses; +}; +static struct results results = {-1, 0, INT_MAX}; + +/* + * eval_perf - Evaluate the performance of the registered transpose functions + */ +void eval_perf(unsigned int s, unsigned int E, unsigned int b) +{ + int i,flag; + unsigned int len, hits, misses, evictions; + unsigned long long int marker_start, marker_end, addr; + char buf[1000], cmd[255]; + char filename[128]; + + registerFunctions(); + + /* Open the complete trace file */ + FILE* full_trace_fp; + FILE* part_trace_fp; + + /* Evaluate the performance of each registered transpose function */ + + for (i=0; i trace.tmp", M, N,i); + flag=WEXITSTATUS(system(cmd)); + if (0!=flag) { + printf("Validation error at function %d! Run ./tracegen -M %d -N %d -F %d for details.\nSkipping performance evaluation for this function.\n",flag-1,M,N,i); + continue; + } + + /* Get the start and end marker addresses */ + FILE* marker_fp = fopen(".marker", "r"); + assert(marker_fp); + fscanf(marker_fp, "%llx %llx", &marker_start, &marker_end); + fclose(marker_fp); + + + func_list[i].correct=1; + + /* Save the correctness of the transpose submission */ + if (results.funcid == i ) { + results.correct = 1; + } + + full_trace_fp = fopen("trace.tmp", "r"); + assert(full_trace_fp); + + + /* Filtered trace for each transpose function goes in a separate file */ + sprintf(filename, "trace.f%d", i); + part_trace_fp = fopen(filename, "w"); + assert(part_trace_fp); + + /* Locate trace corresponding to the trans function */ + flag = 0; + while (fgets(buf, 1000, full_trace_fp) != NULL) { + + /* We are only interested in memory access instructions */ + if (buf[0]==' ' && buf[2]==' ' && + (buf[1]=='S' || buf[1]=='M' || buf[1]=='L' )) { + sscanf(buf+3, "%llx,%u", &addr, &len); + + /* If start marker found, set flag */ + if (addr == marker_start) + flag = 1; + + /* Valgrind creates many spurious accesses to the + stack that have nothing to do with the students + code. At the moment, we are ignoring all stack + accesses by using the simple filter of recording + accesses to only the low 32-bit portion of the + address space. At some point it would be nice to + try to do more informed filtering so that would + eliminate the valgrind stack references while + include the student stack references. */ + if (flag && addr < 0xffffffff) { + fputs(buf, part_trace_fp); + } + + /* if end marker found, close trace file */ + if (addr == marker_end) { + flag = 0; + fclose(part_trace_fp); + break; + } + } + } + fclose(full_trace_fp); + + /* Run the reference simulator */ + printf("Step 2: Evaluating performance (s=%d, E=%d, b=%d)\n", s, E, b); + char cmd[255]; + sprintf(cmd, "./csim-ref -s %u -E %u -b %u -t trace.f%d > /dev/null", + s, E, b, i); + system(cmd); + + /* Collect results from the reference simulator */ + FILE* in_fp = fopen(".csim_results","r"); + assert(in_fp); + fscanf(in_fp, "%u %u %u", &hits, &misses, &evictions); + fclose(in_fp); + func_list[i].num_hits = hits; + func_list[i].num_misses = misses; + func_list[i].num_evictions = evictions; + printf("func %u (%s): hits:%u, misses:%u, evictions:%u\n", + i, func_list[i].description, hits, misses, evictions); + + /* If it is transpose_submit(), record number of misses */ + if (results.funcid == i) { + results.misses = misses; + } + } + +} + +/* + * usage - Print usage info + */ +void usage(char *argv[]){ + printf("Usage: %s [-h] -M -N \n", argv[0]); + printf("Options:\n"); + printf(" -h Print this help message.\n"); + printf(" -M Number of matrix rows (max %d)\n", MAXN); + printf(" -N Number of matrix columns (max %d)\n", MAXN); + printf("Example: %s -M 8 -N 8\n", argv[0]); +} + +/* + * sigsegv_handler - SIGSEGV handler + */ +void sigsegv_handler(int signum){ + printf("Error: Segmentation Fault.\n"); + printf("TEST_TRANS_RESULTS=0:0\n"); + fflush(stdout); + exit(1); +} + +/* + * sigalrm_handler - SIGALRM handler + */ +void sigalrm_handler(int signum){ + printf("Error: Program timed out.\n"); + printf("TEST_TRANS_RESULTS=0:0\n"); + fflush(stdout); + exit(1); +} + +/* + * main - Main routine + */ +int main(int argc, char* argv[]) +{ + char c; + + while ((c = getopt(argc,argv,"M:N:h")) != -1) { + switch(c) { + case 'M': + M = atoi(optarg); + break; + case 'N': + N = atoi(optarg); + break; + case 'h': + usage(argv); + exit(0); + default: + usage(argv); + exit(1); + } + } + + if (M == 0 || N == 0) { + printf("Error: Missing required argument\n"); + usage(argv); + exit(1); + } + + if (M > MAXN || N > MAXN) { + printf("Error: M or N exceeds %d\n", MAXN); + usage(argv); + exit(1); + } + + /* Install SIGSEGV and SIGALRM handlers */ + if (signal(SIGSEGV, sigsegv_handler) == SIG_ERR) { + fprintf(stderr, "Unable to install SIGALRM handler\n"); + exit(1); + } + + if (signal(SIGALRM, sigalrm_handler) == SIG_ERR) { + fprintf(stderr, "Unable to install SIGALRM handler\n"); + exit(1); + } + + /* Time out and give up after a while */ + alarm(120); + + /* Check the performance of the student's transpose function */ + eval_perf(5, 1, 5); + + /* Emit the results for this particular test */ + if (results.funcid == -1) { + printf("\nError: We could not find your transpose_submit() function\n"); + printf("Error: Please ensure that description field is exactly \"%s\"\n", + SUBMIT_DESCRIPTION); + printf("\nTEST_TRANS_RESULTS=0:0\n"); + } + else { + printf("\nSummary for official submission (func %d): correctness=%d misses=%d\n", + results.funcid, results.correct, results.misses); + printf("\nTEST_TRANS_RESULTS=%d:%d\n", results.correct, results.misses); + } + return 0; +} diff --git a/labs/cache_lab/tracegen b/labs/cache_lab/tracegen new file mode 100644 index 0000000000000000000000000000000000000000..33650f60a7d3376f1697a57537d7d803f5dc8c80 GIT binary patch literal 26912 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 GDEmL_H=aoV literal 0 HcmV?d00001 diff --git a/labs/cache_lab/tracegen.c b/labs/cache_lab/tracegen.c new file mode 100644 index 0000000..33d3d21 --- /dev/null +++ b/labs/cache_lab/tracegen.c @@ -0,0 +1,107 @@ +/* + * tracegen.c - Running the binary tracegen with valgrind produces + * a memory trace of all of the registered transpose functions. + * + * The beginning and end of each registered transpose function's trace + * is indicated by reading from "marker" addresses. These two marker + * addresses are recorded in file for later use. + */ + +#include +#include +#include +#include +#include +#include "cachelab.h" +#include + +/* External variables declared in cachelab.c */ +extern trans_func_t func_list[MAX_TRANS_FUNCS]; +extern int func_counter; + +/* External function from trans.c */ +extern void registerFunctions(); + +/* Markers used to bound trace regions of interest */ +volatile char MARKER_START, MARKER_END; + +static int A[256][256]; +static int B[256][256]; +static int M; +static int N; + + +int validate(int fn,int M, int N, int A[N][M], int B[M][N]) { + int C[M][N]; + memset(C,0,sizeof(C)); + correctTrans(M,N,A,C); + for(int i=0;i +#include "cachelab.h" + +int is_transpose(int M, int N, int A[N][M], int B[M][N]); + +/* + * transpose_submit - This is the solution transpose function that you + * will be graded on for Part B of the assignment. Do not change + * the description string "Transpose submission", as the driver + * searches for that string to identify the transpose function to + * be graded. + */ +char transpose_submit_desc[] = "Transpose submission"; +void transpose_submit(int M, int N, int A[N][M], int B[M][N]) +{ +} + +/* + * You can define additional transpose functions below. We've defined + * a simple one below to help you get started. + */ + +/* + * trans - A simple baseline transpose function, not optimized for the cache. + */ +char trans_desc[] = "Simple row-wise scan transpose"; +void trans(int M, int N, int A[N][M], int B[M][N]) +{ + int i, j, tmp; + + for (i = 0; i < N; i++) { + for (j = 0; j < M; j++) { + tmp = A[i][j]; + B[j][i] = tmp; + } + } + +} + +/* + * registerFunctions - This function registers your transpose + * functions with the driver. At runtime, the driver will + * evaluate each of the registered functions and summarize their + * performance. This is a handy way to experiment with different + * transpose strategies. + */ +void registerFunctions() +{ + /* Register your solution function */ + registerTransFunction(transpose_submit, transpose_submit_desc); + + /* Register any additional transpose functions */ + registerTransFunction(trans, trans_desc); + +} + +/* + * is_transpose - This helper function checks if B is the transpose of + * A. You can check the correctness of your transpose by calling + * it before returning from the transpose function. + */ +int is_transpose(int M, int N, int A[N][M], int B[M][N]) +{ + int i, j; + + for (i = 0; i < N; i++) { + for (j = 0; j < M; ++j) { + if (A[i][j] != B[j][i]) { + return 0; + } + } + } + return 1; +} + diff --git a/labs/cache_lab/trans.o b/labs/cache_lab/trans.o new file mode 100644 index 0000000000000000000000000000000000000000..cd3674cc8b6ae47b9a337853452720ec2789a0eb GIT binary patch literal 4196 zcmbVPUu+!38K2p`xm)|r&LvK;t&p&kD>wq5&&C)#A>_`^HFwAdRK=wQ7ctV6E%O-2T)O^_Q?-vm6l4iRI75^DCYZS zcK3E2D~kA}oB96y=KHsEv$NBuV+3hu6Co<+LL_PHCv47(AuSQIMhW>MD&!DMDj9h( zIbF1iejM<(8{H4;#g&-~kxSs>=8z(=kC{0r7 zuHIm%&tyVY05>d3CJh`HAMEPx3jnW!^tKXEfj_`Kj*;qw(sSVCbH^XFN#J^)sDpr$ zpm(nW?pF>DM1gza$pCIEfyeFZ517&*z1bL0fxnS-*OLPQRmjpqLb<$h08H;c|BM8JA^9S1U6s2E_`0euA}R3=dNUL zapq{Pus*C^%xPEi+rGRyd?s`T)wxem!v3D!kTNKa-3hJp(D%o}5*AEmrPQ8Z(sk|W3AT@Vp7ms$P>B{Ym4Qwa@mCC24 z@P?z}%kHrYkj6cAVHIP2`|_3S8fPYIh1I)sVGWAQLKkXC4b^rR5keaoYupi*<&^Xy9dYCypRCAC=?TeO*)YbBoj^E01Zl>dc^r5Z zc$|AALLLMD6Zp@IBSfJ`o*h$%1_sprWOp*9cFyOCM7O>Op|QP#>v zQSF>jJD&rXWltZ}1_nrsSCG`m;r$cY>5^SGN5@AeG^@C*>Y2DHYy)V2EKn>7VL44iI z?z+9sItTnvxX8h(0}hw0NzX5#N7xD&@NpsiMNEXASD;go0@&|c0iAS~M4kmhn+$u6nlOF#BIXGVUa$%aMB;a^f4^23*Gta z`Y#wnzWDcb9xS1)VaSe?TLL|A!ct7Vb@vKboYY%?AOxOz>%O;nw)`2i_AQIlMPRh} zJB{9WMu_sKS_7HT?evFAOH@{NE8FRgNW2vSCP*~;G^k)5rTG@x0z30Tl5gpPmptnw zva&yVAUY7uw;XDh+6W0J>7jO4`AB=d1s$c^J{)Yvl@aD!fN;g{0Tm70H!zLcAaEYm zM3bcMQF!}cupRmrj1-8&j~wVR5WZ~d6uk4XyDdt_*6zuIx4zi+ay7hV^}<2{|0KHF*PucRJR2Nz3o zwmS8iS|}Muj&>e}6MMldzocvSK5>fUNks^}hc_spC)8L(`Plh`Zo2z@+P*YgSU&>t0{5}?erwMc&iA#&I3@)n?xG-JcaiW}$rQh} zaIXgGoFn3MlPP{@-ASK2D%`O$#aLKjkbdci7(u4^eRXGX7aa_K6mHcYH2=ZDU^Ozm z2_r@g(w`j>vk;m53pmx0gyw%B34)zK;*d;oTAx~+nJgK{%PwD>nu1f!li)r)qg$>x zS2A>$w``LnP5j19oIH8b)gCvC^SXE`_+Q?4-cka0tnZh{Jq8!IJig5Z>n1abmwor% GM7{%|``6n5 literal 0 HcmV?d00001 diff --git a/labs/data_lab/Driverhdrs.pm b/labs/data_lab/Driverhdrs.pm new file mode 100644 index 0000000..ecf5e2a --- /dev/null +++ b/labs/data_lab/Driverhdrs.pm @@ -0,0 +1,12 @@ +# +# This file contains configuration variables for drivers. +# It was generated by genhdrs.pl. Do not modify it. +# +package Driverhdrs; + +$LAB = "datalab"; +$SERVER_NAME = "changeme.ics.cs.cmu.edu"; +$SERVER_PORT = 8081; +$COURSE_NAME = "csapp"; +$AUTOGRADE_TIMEOUT = 0; +1; diff --git a/labs/data_lab/Driverlib.pm b/labs/data_lab/Driverlib.pm new file mode 100644 index 0000000..d7f7da1 --- /dev/null +++ b/labs/data_lab/Driverlib.pm @@ -0,0 +1,138 @@ +############################################################### +# Driverlib.pm - A package of helper functions for Perl drivers +# +# Copyright (c) 2005 David R. O'Hallaron, All rights reserved. +############################################################### + +package Driverlib; + +use Socket; + +# Autogenerated header file with lab-specific constants +use lib "."; +use Driverhdrs; + +require Exporter; +@ISA = qw(Exporter); +@EXPORT = qw( + driver_post + ); + +use strict; + +##### +# Public functions +# + +# +# driver_post - This is the routine that a driver calls when +# it needs to transmit an autoresult string to the result server. +# +sub driver_post ($$) { + my $userid = shift; # User id for this submission + my $result = shift; # Autoresult string + my $autograded = shift; # Set if called by an autograder + + # Echo the autoresult string to stdout if the driver was called + # by an autograder + if ($autograded) { + print "\n"; + print "AUTORESULT_STRING=$result\n"; + return; + } + + # If the driver was called with a specific userid, then submit + # the autoresult string to the result server over the Internet. + if ($userid) { + my $status = submitr($Driverhdrs::SERVER_NAME, + $Driverhdrs::SERVER_PORT, + $Driverhdrs::COURSE_NAME, + $userid, + $Driverhdrs::LAB, + $result); + + # Print the status of the transfer + if (!($status =~ /OK/)) { + print "$status\n"; + print "Did not send autoresult string to the result server.\n"; + exit(1); + } + print "Success: Sent autoresult string for $userid to the result server.\n"; + } +} + + +##### +# Private functions +# + +# +# submitr - Sends an autoresult string to the result server +# +sub submitr ($$$$$$) { + my $hostname = shift; + my $port = shift; + my $course = shift; + my $userid = shift; + my $lab = shift; + my $result = shift; + + my $internet_addr; + my $enc_result; + my $paddr; + my $line; + my $http_version; + my $errcode; + my $errmsg; + + # Establish the connection to the server + socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp')); + $internet_addr = inet_aton($hostname) + or die "Could not convert $hostname to an internet address: $!\n"; + $paddr = sockaddr_in($port, $internet_addr); + connect(SERVER, $paddr) + or die "Could not connect to $hostname:$port:$!\n"; + + select((select(SERVER), $| = 1)[0]); # enable command buffering + + # Send HTTP request to server + $enc_result = url_encode($result); + print SERVER "GET /$course/submitr.pl/?userid=$userid&lab=$lab&result=$enc_result&submit=submit HTTP/1.0\r\n\r\n"; + + # Get first HTTP response line + $line = ; + chomp($line); + ($http_version, $errcode, $errmsg) = split(/\s+/, $line); + if ($errcode != 200) { + return "Error: HTTP request failed with error $errcode: $errmsg"; + } + + # Read the remaining HTTP response header lines + while ($line = ) { + if ($line =~ /^\r\n/) { + last; + } + } + + # Read and return the response from the result server + $line = ; + chomp($line); + + close SERVER; + return $line; + +} + +# +# url_encode - Encode text string so it can be included in URI of GET request +# +sub url_encode ($) { + my $value = shift; + + $value =~s/([^a-zA-Z0-9_\-.])/uc sprintf("%%%02x",ord($1))/eg; + return $value; +} + +# Always end a module with a 1 so that it returns TRUE +1; + diff --git a/labs/data_lab/Makefile b/labs/data_lab/Makefile new file mode 100644 index 0000000..1ef6fcf --- /dev/null +++ b/labs/data_lab/Makefile @@ -0,0 +1,26 @@ +# +# Makefile that builds btest and other helper programs for the CS:APP data lab +# +CC = gcc +CFLAGS = -O -Wall -m32 +LIBS = -lm + +all: btest fshow ishow + +btest: btest.c bits.c decl.c tests.c btest.h bits.h + $(CC) $(CFLAGS) $(LIBS) -o btest bits.c btest.c decl.c tests.c + +fshow: fshow.c + $(CC) $(CFLAGS) -o fshow fshow.c + +ishow: ishow.c + $(CC) $(CFLAGS) -o ishow ishow.c + +# Forces a recompile. Used by the driver program. +btestexplicit: + $(CC) $(CFLAGS) $(LIBS) -o btest bits.c btest.c decl.c tests.c + +clean: + rm -f *.o btest fshow ishow *~ + + diff --git a/labs/data_lab/README b/labs/data_lab/README new file mode 100644 index 0000000..e73d37f --- /dev/null +++ b/labs/data_lab/README @@ -0,0 +1,140 @@ +*********************** +The CS:APP Data Lab +Directions to Students +*********************** + +Your goal is to modify your copy of bits.c so that it passes all the +tests in btest without violating any of the coding guidelines. + + +********* +0. Files: +********* + +Makefile - Makes btest, fshow, and ishow +README - This file +bits.c - The file you will be modifying and handing in +bits.h - Header file +btest.c - The main btest program + btest.h - Used to build btest + decl.c - Used to build btest + tests.c - Used to build btest + tests-header.c- Used to build btest +dlc* - Rule checking compiler binary (data lab compiler) +driver.pl* - Driver program that uses btest and dlc to autograde bits.c +Driverhdrs.pm - Header file for optional "Beat the Prof" contest +fshow.c - Utility for examining floating-point representations +ishow.c - Utility for examining integer representations + +*********************************************************** +1. Modifying bits.c and checking it for compliance with dlc +*********************************************************** + +IMPORTANT: Carefully read the instructions in the bits.c file before +you start. These give the coding rules that you will need to follow if +you want full credit. + +Use the dlc compiler (./dlc) to automatically check your version of +bits.c for compliance with the coding guidelines: + + unix> ./dlc bits.c + +dlc returns silently if there are no problems with your code. +Otherwise it prints messages that flag any problems. Running dlc with +the -e switch: + + unix> ./dlc -e bits.c + +causes dlc to print counts of the number of operators used by each function. + +Once you have a legal solution, you can test it for correctness using +the ./btest program. + +********************* +2. Testing with btest +********************* + +The Makefile in this directory compiles your version of bits.c with +additional code to create a program (or test harness) named btest. + +To compile and run the btest program, type: + + unix> make btest + unix> ./btest [optional cmd line args] + +You will need to recompile btest each time you change your bits.c +program. When moving from one platform to another, you will want to +get rid of the old version of btest and generate a new one. Use the +commands: + + unix> make clean + unix> make btest + +Btest tests your code for correctness by running millions of test +cases on each function. It tests wide swaths around well known corner +cases such as Tmin and zero for integer puzzles, and zero, inf, and +the boundary between denormalized and normalized numbers for floating +point puzzles. When btest detects an error in one of your functions, +it prints out the test that failed, the incorrect result, and the +expected result, and then terminates the testing for that function. + +Here are the command line options for btest: + + unix> ./btest -h + Usage: ./btest [-hg] [-r ] [-f [-1|-2|-3 ]*] [-T mFxZqz=O} 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%0AJ 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η5 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 QVQ8GB922GRP+ouh2f}tzBme*a literal 0 HcmV?d00001 diff --git a/labs/data_lab/driver.pl b/labs/data_lab/driver.pl new file mode 100644 index 0000000..143c440 --- /dev/null +++ b/labs/data_lab/driver.pl @@ -0,0 +1,439 @@ +#!/usr/bin/perl +####################################################################### +# driver.pl - CS:APP Data Lab driver +# +# Copyright (c) 2004-2011, R. Bryant and D. O'Hallaron, All rights +# reserved. May not be used, modified, or copied without permission. +# +# Note: The driver can use either btest or the BDD checker to check +# puzzles for correctness. This version of the lab uses btest, which +# has been extended to do better testing of both integer and +# floating-point puzzles. +# +####################################################################### + +use strict 'vars'; +use Getopt::Std; + +use lib "."; +use Driverlib; + +# Set to 1 to use btest, 0 to use the BDD checker. +my $USE_BTEST = 1; + +# Generic settings +$| = 1; # Flush stdout each time +umask(0077); # Files created by the user in tmp readable only by that user +$ENV{PATH} = "/usr/local/bin:/usr/bin:/bin"; + +# +# usage - print help message and terminate +# +sub usage { + printf STDERR "$_[0]\n"; + printf STDERR "Usage: $0 [-h] [-u \"nickname\"]\n"; + printf STDERR "Options:\n"; + printf STDERR " -h Print this message.\n"; + printf STDERR " -u \"nickname\" Send autoresult to server, using nickname on scoreboard)\n"; + die "\n"; +} + +############## +# Main routine +############## +my $login = getlogin() || (getpwuid($<))[0] || "unknown"; +my $tmpdir = "/var/tmp/datalab.$login.$$"; +my $diemsg = "The files are in $tmpdir."; + +my $driverfiles; +my $infile; +my $autograded; + +my $status; +my $inpuzzles; +my $puzzlecnt; +my $line; +my $blank; +my $name; +my $c_points; +my $c_rating; +my $c_errors; +my $p_points; +my $p_rating; +my $p_errors; +my $total_c_points; +my $total_c_rating; +my $total_p_points; +my $total_p_rating; +my $tops; +my $tpoints; +my $trating; +my $foo; +my $name; +my $msg; +my $nickname; +my $autoresult; + +my %puzzle_c_points; +my %puzzle_c_rating; +my %puzzle_c_errors; +my %puzzle_p_points; +my %puzzle_p_ops; +my %puzzle_p_maxops; +my %puzzle_number; + + +# Parse the command line arguments +no strict; +getopts('hu:f:A'); +if ($opt_h) { + usage(); +} + +# The default input file is bits.c (change with -f) +$infile = "bits.c"; +$nickname = ""; + +##### +# These are command line args that every driver must support +# + +# Causes the driver to send an autoresult to the server on behalf of user +if ($opt_u) { + $nickname = $opt_u; + check_nickname($nickname); +} + +# Hidden flag that indicates that the driver was invoked by an autograder +if ($opt_A) { + $autograded = $opt_A; +} + +##### +# Drivers can also define an arbitary number of other command line args +# +# Optional hidden flag used by the autograder +if ($opt_f) { + $infile = $opt_f; +} + +use strict 'vars'; + +################################################ +# Compute the correctness and performance scores +################################################ + +# Make sure that an executable dlc (data lab compiler) exists +(-e "./dlc" and -x "./dlc") + or die "$0: ERROR: No executable dlc binary.\n"; + + +# If using the bdd checker, then make sure it exists +if (!$USE_BTEST) { + (-e "./bddcheck/cbit/cbit" and -x "./bddcheck/cbit/cbit") + or die "$0: ERROR: No executable cbit binary.\n"; +} + +# +# Set up the contents of the scratch directory +# +system("mkdir $tmpdir") == 0 + or die "$0: Could not make scratch directory $tmpdir.\n"; + +# Copy the student's work to the scratch directory +unless (system("cp $infile $tmpdir/bits.c") == 0) { + clean($tmpdir); + die "$0: Could not copy file $infile to scratch directory $tmpdir.\n"; +} + +# Copy the various autograding files to the scratch directory +if ($USE_BTEST) { + $driverfiles = "Makefile dlc btest.c decl.c tests.c btest.h bits.h"; + unless (system("cp -r $driverfiles $tmpdir") == 0) { + clean($tmpdir); + die "$0: Could not copy autogradingfiles to $tmpdir.\n"; + } +} +else { + $driverfiles = "dlc tests.c bddcheck"; + unless (system("cp -r $driverfiles $tmpdir") == 0) { + clean($tmpdir); + die "$0: Could not copy support files to $tmpdir.\n"; + } +} + +# Change the current working directory to the scratch directory +unless (chdir($tmpdir)) { + clean($tmpdir); + die "$0: Could not change directory to $tmpdir.\n"; +} + +# +# Generate a zapped (for coding rules) version of bits.c. In this +# zapped version of bits.c, any functions with illegal operators are +# transformed to have empty function bodies. +# +print "1. Running './dlc -z' to identify coding rules violations.\n"; +system("cp bits.c save-bits.c") == 0 + or die "$0: ERROR: Could not create backup copy of bits.c. $diemsg\n"; +system("./dlc -z -o zap-bits.c bits.c") == 0 + or die "$0: ERROR: zapped bits.c did not compile. $diemsg\n"; + +# +# Run btest or BDD checker to determine correctness score +# +if ($USE_BTEST) { + print "\n2. Compiling and running './btest -g' to determine correctness score.\n"; + system("cp zap-bits.c bits.c"); + + # Compile btest + system("make btestexplicit") == 0 + or die "$0: Could not make btest in $tmpdir. $diemsg\n"; + + # Run btest + $status = system("./btest -g > btest-zapped.out 2>&1"); + if ($status != 0) { + die "$0: ERROR: btest check failed. $diemsg\n"; + } +} +else { + print "\n2. Running './bddcheck/check.pl -g' to determine correctness score.\n"; + system("cp zap-bits.c bits.c"); + $status = system("./bddcheck/check.pl -g > btest-zapped.out 2>&1"); + if ($status != 0) { + die "$0: ERROR: BDD check failed. $diemsg\n"; + } +} + +# +# Run dlc to identify operator count violations. +# +print "\n3. Running './dlc -Z' to identify operator count violations.\n"; +system("./dlc -Z -o Zap-bits.c save-bits.c") == 0 + or die "$0: ERROR: dlc unable to generated Zapped bits.c file.\n"; + +# +# Run btest or the bdd checker to compute performance score +# +if ($USE_BTEST) { + print "\n4. Compiling and running './btest -g -r 2' to determine performance score.\n"; + system("cp Zap-bits.c bits.c"); + + # Compile btest + system("make btestexplicit") == 0 + or die "$0: Could not make btest in $tmpdir. $diemsg\n"; + print "\n"; + + # Run btest + $status = system("./btest -g -r 2 > btest-Zapped.out 2>&1"); + if ($status != 0) { + die "$0: ERROR: Zapped btest failed. $diemsg\n"; + } +} +else { + print "\n4. Running './bddcheck/check.pl -g -r 2' to determine performance score.\n"; + system("cp Zap-bits.c bits.c"); + $status = system("./bddcheck/check.pl -g -r 2 > btest-Zapped.out 2>&1"); + if ($status != 0) { + die "$0: ERROR: Zapped bdd checker failed. $diemsg\n"; + } +} + +# +# Run dlc to get the operator counts on the zapped input file +# +print "\n5. Running './dlc -e' to get operator count of each function.\n"; +$status = system("./dlc -W1 -e zap-bits.c > dlc-opcount.out 2>&1"); +if ($status != 0) { + die "$0: ERROR: bits.c did not compile. $diemsg\n"; +} + +################################################################# +# Collect the correctness and performance results for each puzzle +################################################################# + +# +# Collect the correctness results +# +%puzzle_c_points = (); # Correctness score computed by btest +%puzzle_c_errors = (); # Correctness error discovered by btest +%puzzle_c_rating = (); # Correctness puzzle rating (max points) + +$inpuzzles = 0; # Becomes true when we start reading puzzle results +$puzzlecnt = 0; # Each puzzle gets a unique number +$total_c_points = 0; +$total_c_rating = 0; + +open(INFILE, "$tmpdir/btest-zapped.out") + or die "$0: ERROR: could not open input file $tmpdir/btest-zapped.out\n"; + +while ($line = ) { + chomp($line); + + # Notice that we're ready to read the puzzle scores + if ($line =~ /^Score/) { + $inpuzzles = 1; + next; + } + + # Notice that we're through reading the puzzle scores + if ($line =~ /^Total/) { + $inpuzzles = 0; + next; + } + + # Read and record a puzzle's name and score + if ($inpuzzles) { + ($blank, $c_points, $c_rating, $c_errors, $name) = split(/\s+/, $line); + $puzzle_c_points{$name} = $c_points; + $puzzle_c_errors{$name} = $c_errors; + $puzzle_c_rating{$name} = $c_rating; + $puzzle_number{$name} = $puzzlecnt++; + $total_c_points += $c_points; + $total_c_rating += $c_rating; + } + +} +close(INFILE); + +# +# Collect the performance results +# +%puzzle_p_points = (); # Performance points + +$inpuzzles = 0; # Becomes true when we start reading puzzle results +$total_p_points = 0; +$total_p_rating = 0; + +open(INFILE, "$tmpdir/btest-Zapped.out") + or die "$0: ERROR: could not open input file $tmpdir/btest-Zapped.out\n"; + +while ($line = ) { + chomp($line); + + # Notice that we're ready to read the puzzle scores + if ($line =~ /^Score/) { + $inpuzzles = 1; + next; + } + + # Notice that we're through reading the puzzle scores + if ($line =~ /^Total/) { + $inpuzzles = 0; + next; + } + + # Read and record a puzzle's name and score + if ($inpuzzles) { + ($blank, $p_points, $p_rating, $p_errors, $name) = split(/\s+/, $line); + $puzzle_p_points{$name} = $p_points; + $total_p_points += $p_points; + $total_p_rating += $p_rating; + } +} +close(INFILE); + +# +# Collect the operator counts generated by dlc +# +open(INFILE, "$tmpdir/dlc-opcount.out") + or die "$0: ERROR: could not open input file $tmpdir/dlc-opcount.out\n"; + +$tops = 0; +while ($line = ) { + chomp($line); + + if ($line =~ /(\d+) operators/) { + ($foo, $foo, $foo, $name, $msg) = split(/:/, $line); + $puzzle_p_ops{$name} = $1; + $tops += $1; + } +} +close(INFILE); + +# +# Print a table of results sorted by puzzle number +# +print "\n"; +printf("%s\t%s\n", "Correctness Results", "Perf Results"); +printf("%s\t%s\t%s\t%s\t%s\t%s\n", "Points", "Rating", "Errors", + "Points", "Ops", "Puzzle"); +foreach $name (sort {$puzzle_number{$a} <=> $puzzle_number{$b}} + keys %puzzle_number) { + printf("%d\t%d\t%d\t%d\t%d\t\%s\n", + $puzzle_c_points{$name}, + $puzzle_c_rating{$name}, + $puzzle_c_errors{$name}, + $puzzle_p_points{$name}, + $puzzle_p_ops{$name}, + $name); +} + +$tpoints = $total_c_points + $total_p_points; +$trating = $total_c_rating + $total_p_rating; + +print "\nScore = $tpoints/$trating [$total_c_points/$total_c_rating Corr + $total_p_points/$total_p_rating Perf] ($tops total operators)\n"; + +# +# Optionally send the autoresult to the contest server if the driver +# was called with the -u command line flag. +# +if ($nickname) { + # Generate the autoresult + $autoresult = "$tpoints|$total_c_points|$total_p_points|$tops"; + foreach $name (sort {$puzzle_number{$a} <=> $puzzle_number{$b}} + keys %puzzle_number) { + $autoresult .= " |$name:$puzzle_c_points{$name}:$puzzle_c_rating{$name}:$puzzle_p_points{$name}:$puzzle_p_ops{$name}"; + } + + # Post the autoresult to the server. The Linux login id is + # concatenated with the user-supplied nickname for some (very) loose + # authentication of submissions. + &Driverlib::driver_post("$login:$nickname", $autoresult, $autograded); +} + +# Clean up and exit +clean ($tmpdir); +exit; + +################## +# Helper functions +# + +# +# check_nickname - Check a nickname for legality +# +sub check_nickname { + my $nickname = shift; + + # Nicknames can't be empty + if (length($nickname) < 1) { + die "$0: Error: Empty nickname.\n"; + } + + # Nicknames can't be too long + if (length($nickname) > 35) { + die "$0: Error: Nickname exceeds 35 characters.\n"; + } + + # Nicknames can have restricted set of metacharacters (e.g., no # + # HTML tags) + if (!($nickname =~ /^[_-\w.,'@ ]+$/)) { + die "$0: Error: Illegal character in nickname. Only alphanumerics, apostrophes, commas, periods, dashes, underscores, and ampersands are allowed.\n"; + } + + # Nicknames can't be all whitespace + if ($nickname =~ /^\s*$/) { + die "$0: Error: Nickname is all whitespace.\n"; + } + +} + +# +# clean - remove the scratch directory +# +sub clean { + my $tmpdir = shift; + system("rm -rf $tmpdir"); +} + diff --git a/labs/data_lab/fshow b/labs/data_lab/fshow new file mode 100644 index 0000000000000000000000000000000000000000..120f0f14139353f543fd51fe64f66907f0e5a223 GIT binary patch literal 15956 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 literal 0 HcmV?d00001 diff --git a/labs/data_lab/fshow.c b/labs/data_lab/fshow.c new file mode 100644 index 0000000..fc918f6 --- /dev/null +++ b/labs/data_lab/fshow.c @@ -0,0 +1,151 @@ +/* Display structure of floating-point numbers */ + +#include +#include +float strtof(const char *nptr, char **endptr); + +#define FLOAT_SIZE 32 +#define FRAC_SIZE 23 +#define EXP_SIZE 8 +#define BIAS ((1<<(EXP_SIZE-1))-1) +#define FRAC_MASK ((1<>FRAC_SIZE) & EXP_MASK; +} + +/* Get fraction */ +unsigned get_frac(unsigned uf) +{ + return uf & FRAC_MASK; +} + +/* Get sign */ +unsigned get_sign(unsigned uf) +{ + return (uf>>(FLOAT_SIZE-1)) & 0x1; +} + +void show_float(unsigned uf) +{ + float f = u2f(uf); + unsigned exp = get_exp(uf); + unsigned frac = get_frac(uf); + unsigned sign = get_sign(uf); + + printf("\nFloating point value %.10g\n", f); + printf("Bit Representation 0x%.8x, sign = %x, exponent = 0x%.2x, fraction = 0x%.6x\n", + uf, sign, exp, frac); + if (exp == EXP_MASK) { + if (frac == 0) { + printf("%cInfinity\n", sign ? '-' : '+'); + } else + printf("Not-A-Number\n"); + } else { + int denorm = (exp == 0); + int uexp = denorm ? 1-BIAS : exp - BIAS; + int mantissa = denorm ? frac : frac + (1<> 31; + /* will give -1 for negative, 0 or 1 for positive */ + if (valp && (upperbits == 0 || upperbits == -1 || upperbits == 1)) { + *valp = (unsigned) llval; + return 1; + } + return 0; + } +} + + +void usage(char *fname) { + printf("Usage: %s val1 val2 ...\n", fname); + printf("Values may be given as hex patterns or as floating point numbers\n"); + exit(0); +} + + +int main(int argc, char *argv[]) +{ + int i; + unsigned uf; + if (argc < 2) + usage(argv[0]); + for (i = 1; i < argc; i++) { + char *sval = argv[i]; + if (get_num_val(sval, &uf)) { + show_float(uf); + } else { + printf("Invalid 32-bit number: '%s'\n", sval); + usage(argv[0]); + } + } + return 0; +} + + diff --git a/labs/data_lab/ishow b/labs/data_lab/ishow new file mode 100644 index 0000000000000000000000000000000000000000..aacb7aa3ab32e0b262641723b1246970ab4cbb11 GIT binary patch literal 15828 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˙|!@7m?$( z4~6vm6Ljgv{VI7c3v7~pZvp$k>^k>dyt^uGbfr#y7tGx={kVTS@*n&@hMjXpKkn;z zSNAM*t``zxaUJ{u%9nfD_{~9`_HW@M8=~ zj6o{5 +#include + +/* Extract hex/decimal/or float value from string */ +static int get_num_val(char *sval, unsigned *valp) { + char *endp; + /* See if it's an integer or floating point */ + int ishex = 0; + int isfloat = 0; + int i; + for (i = 0; sval[i]; i++) { + switch (sval[i]) { + case 'x': + case 'X': + ishex = 1; + break; + case 'e': + case 'E': + if (!ishex) + isfloat = 1; + break; + case '.': + isfloat = 1; + break; + default: + break; + } + } + if (isfloat) { + return 0; /* Not supposed to have a float here */ + } else { + long long int llval = strtoll(sval, &endp, 0); + long long int upperbits = llval >> 31; + /* will give -1 for negative, 0 or 1 for positive */ + if (valp && (upperbits == 0 || upperbits == -1 || upperbits == 1)) { + *valp = (unsigned) llval; + return 1; + } + return 0; + } +} + +void show_int(unsigned uf) +{ + printf("Hex = 0x%.8x,\tSigned = %d,\tUnsigned = %u\n", + uf, (int) uf, uf); +} + + +void usage(char *fname) { + printf("Usage: %s val1 val2 ...\n", fname); + printf("Values may be given in hex or decimal\n"); + exit(0); +} + +int main(int argc, char *argv[]) +{ + int i; + unsigned uf; + if (argc < 2) + usage(argv[0]); + for (i = 1; i < argc; i++) { + char *sval = argv[i]; + if (get_num_val(sval, &uf)) { + show_int(uf); + } else { + printf("Cannot convert '%s' to 32-bit number\n", sval); + } + } + return 0; +} + + + diff --git a/labs/data_lab/tests.c b/labs/data_lab/tests.c new file mode 100644 index 0000000..38eb9c6 --- /dev/null +++ b/labs/data_lab/tests.c @@ -0,0 +1,118 @@ +/* Testing Code */ + +#include +#include + +/* Routines used by floation point test code */ + +/* Convert from bit level representation to floating point number */ +float u2f(unsigned u) { + union { + unsigned u; + float f; + } a; + a.u = u; + return a.f; +} + +/* Convert from floating point number to bit-level representation */ +unsigned f2u(float f) { + union { + unsigned u; + float f; + } a; + a.f = f; + return a.u; +} + +//1 +int test_bitXor(int x, int y) +{ + return x^y; +} +int test_tmin(void) { + return 0x80000000; +} +//2 +int test_isTmax(int x) { + return x == 0x7FFFFFFF; +} +int test_allOddBits(int x) { + int i; + for (i = 1; i < 32; i+=2) + if ((x & (1<>=1, cnt++) + ; + + return (int)(cnt + 1); +} +//float +unsigned test_floatScale2(unsigned uf) { + float f = u2f(uf); + float tf = 2*f; + if (isnan(f)) + return uf; + else + return f2u(tf); +} +int test_floatFloat2Int(unsigned uf) { + float f = u2f(uf); + int x = (int) f; + return x; +} +unsigned test_floatPower2(int x) { + float result = 1.0; + float p2 = 2.0; + int recip = (x < 0); + /* treat tmin specially */ + if ((unsigned)x == 0x80000000) { + return 0; + } + if (recip) { + x = -x; + p2 = 0.5; + } + while (x > 0) { + if (x & 0x1) + result = result * p2; + p2 = p2 * p2; + x >>= 1; + } + return f2u(result); +} diff --git a/quiz/test.h b/quiz/test.h new file mode 100644 index 0000000..d8891cd --- /dev/null +++ b/quiz/test.h @@ -0,0 +1,30 @@ +// +// Created by GentleCold on 2022/8/17. +// + +#ifndef CSAPPLEARNING_TEST_H +#define CSAPPLEARNING_TEST_H + +#include +#include + +int main_ret = 0; +int test_count = 0; +int test_pass = 0; + +#define EXPECT_EQ_BASE(equality, expect, actual, format)\ + do {\ + test_count++;\ + if (equality) {\ + test_pass++;\ + } else {\ + fprintf(stderr, "%s:%d: expect: " format " actual: " format "\n", __FILE__, __LINE__, expect, actual);\ + main_ret = 1;\ + }\ + } while(0) + +#define EXPECT_EQ_INT(expect, actual) EXPECT_EQ_BASE((expect) == (actual), expect, actual, "%d") +#define EXPECT_EQ_DOUBLE(expect, actual) EXPECT_EQ_BASE((expect) == (actual), expect, actual, "%lf") +#define EXPECT_EQ_TRUE(actual) EXPECT_EQ_BASE(actual, "true", "false", "%s") + +#endif //CSAPPLEARNING_TEST_H diff --git a/quiz/test_quiz.c b/quiz/test_quiz.c new file mode 100644 index 0000000..35b58b2 --- /dev/null +++ b/quiz/test_quiz.c @@ -0,0 +1,15 @@ +// +// Created by GentleCold on 2022/9/7. +// + +#include "test.h" + + +void test_all() { +} + +int main() { + test_all(); + printf("%d/%d (%3.2f%%) passed\n", test_pass, test_count, test_pass * 100.0 / test_count); + return main_ret; +} \ No newline at end of file