Add two word values and return the sum l + r.
Memory addresses that can be stored to or loaded from.
Branch to the given label if the value of the given datum is equal to zero.
Branch to the given label if the value of the given datum is not equal to zero.
Compare two word values for equality and return 1 if they are equal and 0 if they are not.
Compare two word values and return 1 if the left operand is greater then the right operands, otherwise return 0.
Compare two word values and return 1 if the left operand is less then the right operands, otherwise return 0.
Compare two word values for inequality and return 1 if they are equal and 0 if they are not.
Evaluate cond and if the value is true (non-zero) return the value of t, else return the value of f.
Superclass of all datum constructs, ie target constructs that return a value to their enclosing construct.
Divide two word values and return the dividend from l / r.
An address that is calculated by a indexing from the local address addr.
Return the given integer value.
Superclass of all item constructs, ie.
Jump unconditionally to the given label.
Labels represent a code position.
Define the given at this point in the item sequence.
Load a value from memory address given by mem.
An address that is calculated by an known integer offset from the start of the local memory block.
Multiple two word values and return l * r.
Trait to mark those nodes which need to have a return value allocated to a register.
Negate a word value and return the negation of e.
Complement a Boolean value.
Superclass of all RISC tree nodes.
A stack program consisting of the given statements.
Read an integer value from standard input.
Divide two word values and return the remainder from l / r.
Cause the program to terminate.
A compound datum, consisting of a sequence of items to execute followed by a datum whose value is evaluated and returned.
Evaluate d and store its value in the memory location given by mem.
Subtract two word values and return the difference l - r.
Calculate and write out the value of the given datum to standard output.
Generate a unique label.
Reset the module.
Module containing structures for representing RISC machine programs. In essence this is a register-less assembly code, in which the flow of data between constructs is represented in the parent-child relationships of a tree structure.