Skip to content

Commit

Permalink
Merge pull request #145 from cmsc430/assign6-revise
Browse files Browse the repository at this point in the history
Assign6 revise
  • Loading branch information
dvanhorn authored Jul 5, 2023
2 parents 18cbd3d + 7d90ed0 commit 419961d
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 22 deletions.
19 changes: 13 additions & 6 deletions www/assignments/6.scrbl
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,22 @@ reference interpreter, it is eliminated. Your goal is to construct
a set of test programs that eliminate the largest number of compilers.
The player that eliminates the largest number of compilers, wins.

Note that the notion of correctness we're using is the same one we've
been using all semester: if the interpreter crashes when evaluating a
program, that program has unspecified behavior and therefore the
compiler cannot be incorrect for that program. On the other hand if
the interpreter produces an answer (either a value or the error
result), then the compiler is obligated to produce the same answer.

When you submit, choose a name to display on the leaderboard. It does
not need to be your real name, but please keep it appropriate for this
setting.

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

There are 133 compilers included. Your score will be the number of
compilers you are able to eliminate, with a maximum score of 100.
There are 59 compilers included. Your score will be 15 + 2.5 times
the number of compilers you are able to eliminate, with a maximum
score of 100.

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

@itemlist[

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

@item{The interpreter now crashes when interpreting unbound variables
instead of producing @racket['err], making unbound variable behavior
unspecified.}
@item{The interpreter crashes when interpreting unbound variables,
making unbound variable behavior unspecified.}

]

Expand Down
13 changes: 8 additions & 5 deletions www/notes/a86.scrbl
Original file line number Diff line number Diff line change
Expand Up @@ -769,7 +769,7 @@ Each register plays the same role as in x86, so for example

@itemlist[

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

@ex[
(prog (Label 'foo))
(prog (list (Label 'foo)))
(prog (Global 'foo) (Label 'foo))
(eval:error (prog (Label 'foo)))
(eval:error (prog (list (Label 'foo))))
(eval:error (prog (Mov 'rax 32)))
(eval:error (prog (Label 'foo)
(Label 'foo)))
(eval:error (prog (Jmp 'foo)))
(prog (Label 'foo)
(prog (Global 'foo)
(Label 'foo)
(Jmp 'foo))
]
}
Expand All @@ -807,7 +809,8 @@ Each register plays the same role as in x86, so for example
@#reader scribble/comment-reader
(ex
(asm-display
(prog (%%% "Start of foo")
(prog (Global 'foo)
(%%% "Start of foo")
(Label 'foo)
; Racket comments won't appear
(%% "Inputs one argument in rdi")
Expand Down
24 changes: 13 additions & 11 deletions www/project.scrbl
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,12 @@ completed project.

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

There are several projects to choose from, described below.
@elem[#:style "strike"]{There are several projects to choose from,
described below.}

@emph{Summer update: Typically we allow projects to be chosen from a
number of options, but for the summer semester we will streamline
things a bit by settling on a single option.}

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

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

@table-of-contents[]

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




@;{
@section{Exceptions and exception handling}

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

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

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

@verbatim|{
info.rkt
summary.pdf
<lang>/
}|

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

@codeblock|{
#lang info
(define project '<project>)
(define project 'values)
(define language '<lang>)
}|

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

0 comments on commit 419961d

Please sign in to comment.