* 5.2 A Register Machine Simulator
one way to test our machine design is to carry out the state during
operations by hand. but that would be silly!! lol. it's a scheme
program with 4 interface procedures:

  - (make-machine reg-names operations controller)
  - (set-register-contents! machine-model reg-name value)
  - (get-register-contents machine-model reg-name)
  - (start machine-model)

** 5.2.1 the machine model
make-machine extends the basic machine model with a message passing
technique.

it has registers holding value as local state. we can get and set.

the stack is likewise a procedure with local state. we can push, pop,
and initialize to empty.

** 5.2.2 the assembler
the assembler transforms a series of controller expressions into a
corresponding list of machine instructions.

: (assemble controller-text machine)

** 5.2.3 generating execution procedures for instructions
this is some wild shit! true galaxy brain takes.

implementing the fundamental instructions of the machine.

assign, test, branch, goto,
  save, restore, perform,
    primitive exp

** 5.2.4 monitoring machine performance
we can verify not only correctness of a machine design, but also
measure its performance

cool souped up stack implementation
