Skip to content

Commit 419961d

Browse files
authored
Merge pull request #145 from cmsc430/assign6-revise
Assign6 revise
2 parents 18cbd3d + 7d90ed0 commit 419961d

File tree

3 files changed

+34
-22
lines changed

3 files changed

+34
-22
lines changed

www/assignments/6.scrbl

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,22 @@ reference interpreter, it is eliminated. Your goal is to construct
2020
a set of test programs that eliminate the largest number of compilers.
2121
The player that eliminates the largest number of compilers, wins.
2222

23+
Note that the notion of correctness we're using is the same one we've
24+
been using all semester: if the interpreter crashes when evaluating a
25+
program, that program has unspecified behavior and therefore the
26+
compiler cannot be incorrect for that program. On the other hand if
27+
the interpreter produces an answer (either a value or the error
28+
result), then the compiler is obligated to produce the same answer.
29+
2330
When you submit, choose a name to display on the leaderboard. It does
2431
not need to be your real name, but please keep it appropriate for this
2532
setting.
2633

2734
After submitting, click "Leaderboard" to see the latest standings.
2835

29-
There are 133 compilers included. Your score will be the number of
30-
compilers you are able to eliminate, with a maximum score of 100.
36+
There are 59 compilers included. Your score will be 15 + 2.5 times
37+
the number of compilers you are able to eliminate, with a maximum
38+
score of 100.
3139

3240
We reserve the right to update the reference interpreter and will
3341
announce any changes on Discord.
@@ -36,12 +44,11 @@ The following updates have been made since the release:
3644

3745
@itemlist[
3846

39-
@item{The interpreter now checks for integer overflow and crashes when
47+
@item{The interpreter checks for integer overflow and crashes when
4048
this happens, thereby making overflow behavior unspecified for the compilers.}
4149

42-
@item{The interpreter now crashes when interpreting unbound variables
43-
instead of producing @racket['err], making unbound variable behavior
44-
unspecified.}
50+
@item{The interpreter crashes when interpreting unbound variables,
51+
making unbound variable behavior unspecified.}
4552

4653
]
4754

www/notes/a86.scrbl

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,7 @@ Each register plays the same role as in x86, so for example
769769

770770
@itemlist[
771771

772-
@item{Programs have at least one label; the first label is used as the entry point.}
772+
@item{Programs have at least one label which is declared @racket[Global]; the first label is used as the entry point.}
773773
@item{All label declarations are unique.}
774774
@item{All label targets are declared.}
775775
@item{... other properties may be added in the future.}
@@ -783,13 +783,15 @@ Each register plays the same role as in x86, so for example
783783
nested.
784784

785785
@ex[
786-
(prog (Label 'foo))
787-
(prog (list (Label 'foo)))
786+
(prog (Global 'foo) (Label 'foo))
787+
(eval:error (prog (Label 'foo)))
788+
(eval:error (prog (list (Label 'foo))))
788789
(eval:error (prog (Mov 'rax 32)))
789790
(eval:error (prog (Label 'foo)
790791
(Label 'foo)))
791792
(eval:error (prog (Jmp 'foo)))
792-
(prog (Label 'foo)
793+
(prog (Global 'foo)
794+
(Label 'foo)
793795
(Jmp 'foo))
794796
]
795797
}
@@ -807,7 +809,8 @@ Each register plays the same role as in x86, so for example
807809
@#reader scribble/comment-reader
808810
(ex
809811
(asm-display
810-
(prog (%%% "Start of foo")
812+
(prog (Global 'foo)
813+
(%%% "Start of foo")
811814
(Label 'foo)
812815
; Racket comments won't appear
813816
(%% "Inputs one argument in rdi")

www/project.scrbl

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@ completed project.
1111

1212
Final deliverables are due on the last day of class, July 7.
1313

14-
There are several projects to choose from, described below.
14+
@elem[#:style "strike"]{There are several projects to choose from,
15+
described below.}
16+
17+
@emph{Summer update: Typically we allow projects to be chosen from a
18+
number of options, but for the summer semester we will streamline
19+
things a bit by settling on a single option.}
1520

1621
Compared to assignments, the project is more open-ended. You will
1722
need to select from a project description below and then select which
@@ -24,9 +29,9 @@ implementation). No tests are provided, so we recommend you write your
2429
own and suggest focusing on tests @emph{before} trying to implement
2530
these features.
2631

27-
In addition to the source code for your project, you must write a
28-
2-page document in PDF format, which gives a summary of your work and
29-
describes how your project is implemented.
32+
@elem[#:style "strike"]{In addition to the source code for your
33+
project, you must write a 2-page document in PDF format, which gives a
34+
summary of your work and describes how your project is implemented.}
3035

3136
@table-of-contents[]
3237

@@ -399,8 +404,7 @@ at the end of @racket[entry], just before the @racket[(Ret)]:
399404
In order to return more values, you'd construct a larger vector.
400405

401406

402-
403-
407+
@;{
404408
@section{Exceptions and exception handling}
405409

406410
Exceptions and exception handling mechanisms are widely used in modern
@@ -622,6 +626,7 @@ You may also design your own project, however, you will need to submit
622626
a one-page write-up that documents what you plan to do and how you
623627
will evaluate whether it is successful. You must submit this document
624628
and have it approved by the instructor by November 22.
629+
}
625630

626631
@section[#:tag "project"]{Submitting}
627632

@@ -632,7 +637,6 @@ Your submission should be a zip file containing the following contents:
632637

633638
@verbatim|{
634639
info.rkt
635-
summary.pdf
636640
<lang>/
637641
}|
638642

@@ -643,13 +647,11 @@ The @tt{info.rkt} should contain the following information:
643647

644648
@codeblock|{
645649
#lang info
646-
(define project '<project>)
650+
(define project 'values)
647651
(define language '<lang>)
648652
}|
649653

650-
where @tt{<project>} indicates which project you are doing. It should
651-
either be @tt{values}, @tt{exceptions}, @tt{garbage-collection}, or
652-
@tt{custom}. The @tt{<lang>} should be @tt{iniquity}, @tt{loot},
654+
The @tt{<lang>} should be @tt{iniquity}, @tt{loot},
653655
etc. and should be the same as the directory that contains the
654656
implementation.
655657

0 commit comments

Comments
 (0)