diff options
| author | ov-4 <hausemasterstream@gmail.com> | 2026-01-05 11:00:14 +0000 |
|---|---|---|
| committer | ov-4 <hausemasterstream@gmail.com> | 2026-01-05 11:00:14 +0000 |
| commit | 63c370f9b8d7c58c52ecd85a68e3062b41522ff6 (patch) | |
| tree | 27f1657228f8e320b8f45610c5b68bb0592c4183 /datalab-handout/README | |
| parent | 2211b73a6c1fbdf1dd974b46f0315d79ac5cae7e (diff) | |
Data lab initialization
Diffstat (limited to 'datalab-handout/README')
| -rw-r--r-- | datalab-handout/README | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/datalab-handout/README b/datalab-handout/README new file mode 100644 index 0000000..e73d37f --- /dev/null +++ b/datalab-handout/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 <n>] [-f <name> [-1|-2|-3 <val>]*] [-T <time limit>] + -1 <val> Specify first function argument + -2 <val> Specify second function argument + -3 <val> Specify third function argument + -f <name> Test only the named function + -g Format output for autograding with no error messages + -h Print this message + -r <n> Give uniform weight of n for all problems + -T <lim> Set timeout limit to lim + +Examples: + + Test all functions for correctness and print out error messages: + unix> ./btest + + Test all functions in a compact form with no error messages: + unix> ./btest -g + + Test function foo for correctness: + unix> ./btest -f foo + + Test function foo for correctness with specific arguments: + unix> ./btest -f foo -1 27 -2 0xf + +Btest does not check your code for compliance with the coding +guidelines. Use dlc to do that. + +******************* +3. Helper Programs +******************* + +We have included the ishow and fshow programs to help you decipher +integer and floating point representations respectively. Each takes a +single decimal or hex number as an argument. To build them type: + + unix> make + +Example usages: + + unix> ./ishow 0x27 + Hex = 0x00000027, Signed = 39, Unsigned = 39 + + unix> ./ishow 27 + Hex = 0x0000001b, Signed = 27, Unsigned = 27 + + unix> ./fshow 0x15213243 + Floating point value 3.255334057e-26 + Bit Representation 0x15213243, sign = 0, exponent = 0x2a, fraction = 0x213243 + Normalized. +1.2593463659 X 2^(-85) + + linux> ./fshow 15213243 + Floating point value 2.131829405e-38 + Bit Representation 0x00e822bb, sign = 0, exponent = 0x01, fraction = 0x6822bb + Normalized. +1.8135598898 X 2^(-126) + + + |
