\section{Labels} \newdef{Labels} are used as symbolic names for address. The structure \mlrischref{instructions/labels.sml}{Label} defines the label datatype. The following operations are defined on labels: \begin{itemize} \item \sml{newLabel : string -> label} -- Generate a new label with a given name. If the name is \sml{""}, a new name is generated. \item \sml{nameOf : label -> string} -- Returns the name of a label \item \sml{id : label -> int} -- Return the unique id of a label \item \sml{reset : unit -> unit} -- Return the label id counter to 0. \end{itemize} For machine code generation, the following two additional methods are defined. \begin{itemize} \item \sml{addrOf : label -> int} -- Return the address associated with a label \item \sml{setAddr : label * int -> unit} -- Set the address associated with a label \end{itemize} See also \href{labelexp.html}{Label Expressions}.