Overview of the code

Code you will write or edit

asmparse.sml

You’ll supplement last week’s unparser with a real parser.

assembler.sml

You’ll put the label-elimination pass here. Added to parsing and unparsing, that’s all there is to an assembler!

Code you will continue to look at and understand

In roughly the order you’ll need:

asm.sml

The internal representation of assembly code.

producer-sig.sml

The interface to our library of parsing combinators.

error-sig.sml

The interface to our version of the error monad.

env.sml

The environment abstraction that you’ll use to store the location of every label.

object-code.sml

The internal representation of virtual object code, plus a module that unparses this representation to its on-disk form.

Other code

This week you should have little need for impossible.sml, all.cm, languages.sml, uft.sml, error-module.sml, producer-functor.sml, main.sml, main.cm, impossible.cm, ioutil.sml, or (in the SVM) svm-dis.c.