class RISC extends Machine
Abstract state machine simulation of a simple RISC architecture. Run the given code, reading input from console and emitting output using emitter.
- Source
- RISC.scala
- Alphabetic
- By Inheritance
- RISC
- Machine
- PrettyPrinter
- PrettyPrinterBase
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
class
Doc extends ((output.PrettyPrinter.Indent, output.PrettyPrinter.Width)) ⇒ ((Int, Queue[(Int, (Boolean) ⇒ ((Int) ⇒ Trampoline[Seq[String]]) ⇒ Trampoline[(Int) ⇒ Trampoline[Seq[String]]])]) ⇒ Trampoline[(Int) ⇒ Trampoline[Seq[String]]]) ⇒ Trampoline[(Int, Queue[(Int, (Boolean) ⇒ ((Int) ⇒ Trampoline[Seq[String]]) ⇒ Trampoline[(Int) ⇒ Trampoline[Seq[String]]])]) ⇒ Trampoline[(Int) ⇒ Trampoline[Seq[String]]]] with output.PrettyPrinter.DocOps
- Definition Classes
- PrettyPrinter
-
trait
DocOps extends AnyRef
- Definition Classes
- PrettyPrinterBase
-
type
Indent = Int
- Definition Classes
- PrettyPrinterBase
-
type
Layout = String
- Definition Classes
- PrettyPrinterBase
-
class
ParamState[T, U] extends State[Map[T, U]]
- Definition Classes
- Machine
-
class
ParamUpdate[T, U] extends Update
- Definition Classes
- Machine
-
class
ParamUpdater[T, U] extends AnyRef
- Definition Classes
- Machine
-
trait
PrettyPrintable extends AnyRef
- Definition Classes
- PrettyPrinterBase
-
class
ScalarUpdate[T] extends Update
- Definition Classes
- Machine
-
class
State[T] extends AnyRef
- Definition Classes
- Machine
-
abstract
class
Update extends AnyRef
- Definition Classes
- Machine
-
type
Width = Int
- Definition Classes
- PrettyPrinterBase
-
type
Word = Int
Words are 32-bits long.
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val FP: ParamUpdater[RegNo, Int]
- val LNK: ParamUpdater[RegNo, Int]
-
val
Mem: ParamState[Int, Int]
Byte addressed store of words.
-
val
N: State[Boolean]
Condition code: less than.
-
val
PC: ParamUpdater[RegNo, Int]
Names for special registers.
-
val
R: ParamState[RegNo, Int]
Integer register file addressed by 0-31.
- val SP: ParamUpdater[RegNo, Int]
-
val
Z: State[Boolean]
Condition code: zero.
-
def
align(d: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
ampersand: Doc
- Definition Classes
- PrettyPrinterBase
-
def
angles(d: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
any(a: Any): Doc
- Definition Classes
- PrettyPrinterBase
-
implicit
def
anyToPrettyPrintable(a: Any): PrettyPrintable
- Definition Classes
- PrettyPrinterBase
-
def
arithmetic(instr: Instr): Unit
Execute arithmetic instructions.
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
asterisk: Doc
- Definition Classes
- PrettyPrinterBase
-
def
atsign: Doc
- Definition Classes
- PrettyPrinterBase
-
def
backquote: Doc
- Definition Classes
- PrettyPrinterBase
-
def
backslash: Doc
- Definition Classes
- PrettyPrinterBase
-
def
braces(d: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
brackets(d: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
caret: Doc
- Definition Classes
- PrettyPrinterBase
-
def
cat(ds: Seq[Doc]): Doc
- Definition Classes
- PrettyPrinterBase
-
implicit
def
char(c: Char): Doc
- Definition Classes
- PrettyPrinterBase
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
colon: Doc
- Definition Classes
- PrettyPrinterBase
-
def
column(f: (Int) ⇒ Doc): Doc
- Definition Classes
- PrettyPrinter → PrettyPrinterBase
-
def
comma: Doc
- Definition Classes
- PrettyPrinterBase
-
def
control(instr: Instr): Unit
Execute control instructions, including default control step.
-
def
debug: Boolean
Debug flag.
Debug flag. Set this to true in sub-classes or objects to obtain tracing information during execution of the machine.
- Definition Classes
- RISC → Machine
-
val
defaultIndent: Int
- Definition Classes
- PrettyPrinterBase
-
val
defaultWidth: Int
- Definition Classes
- PrettyPrinterBase
-
def
dollar: Doc
- Definition Classes
- PrettyPrinterBase
-
def
dot: Doc
- Definition Classes
- PrettyPrinterBase
-
def
dquote: Doc
- Definition Classes
- PrettyPrinterBase
-
def
dquotes(d: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
empty: Doc
- Definition Classes
- PrettyPrinter → PrettyPrinterBase
-
def
enclose(l: Doc, d: Doc, r: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equal: Doc
- Definition Classes
- PrettyPrinterBase
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
exclamation: Doc
- Definition Classes
- PrettyPrinterBase
-
def
execute(instr: Instr): Unit
Execute a single instruction.
-
def
fillcat(ds: Seq[Doc]): Doc
- Definition Classes
- PrettyPrinterBase
-
def
fillsep(ds: Seq[Doc], sep: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
fillsep(ds: Seq[Doc]): Doc
- Definition Classes
- PrettyPrinterBase
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
finit(): Unit
- Definition Classes
- Machine
-
def
folddoc(ds: Seq[Doc], f: (Doc, Doc) ⇒ Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
forwslash: Doc
- Definition Classes
- PrettyPrinterBase
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
group(d: Doc): Doc
- Definition Classes
- PrettyPrinter → PrettyPrinterBase
-
val
halt: State[Boolean]
Halt flag.
Halt flag. True if the machine should stop executing, false otherwise.
-
def
hang(d: Doc, i: Indent): Doc
- Definition Classes
- PrettyPrinterBase
-
def
hash: Doc
- Definition Classes
- PrettyPrinterBase
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
def
hcat(ds: Seq[Doc]): Doc
- Definition Classes
- PrettyPrinterBase
-
def
hsep(ds: Seq[Doc], sep: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
hsep(ds: Seq[Doc]): Doc
- Definition Classes
- PrettyPrinterBase
-
def
indent(d: Doc, i: Indent): Doc
- Definition Classes
- PrettyPrinterBase
-
def
init(): Unit
Initialise the machine.
Initialise the machine.
- Definition Classes
- RISC → Machine
-
def
inputoutput(instr: Instr): Unit
Execute input/output instructions.
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
langle: Doc
- Definition Classes
- PrettyPrinterBase
-
def
lbrace: Doc
- Definition Classes
- PrettyPrinterBase
-
def
lbracket: Doc
- Definition Classes
- PrettyPrinterBase
-
def
line: Doc
- Definition Classes
- PrettyPrinter → PrettyPrinterBase
-
def
line(repl: Layout): Doc
- Definition Classes
- PrettyPrinter → PrettyPrinterBase
-
def
linebreak: Doc
- Definition Classes
- PrettyPrinter → PrettyPrinterBase
-
def
list[T](l: Seq[T], prefix: String, elemToDoc: (T) ⇒ Doc, sep: Doc, sepfn: (Seq[Doc], Doc) ⇒ Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
lparen: Doc
- Definition Classes
- PrettyPrinterBase
-
def
lsep(ds: Seq[Doc], sep: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
lsep2(ds: Seq[Doc], sep: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
lterm(ds: Seq[Doc], term: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
main(): Unit
The main rule of this machine.
The main rule of this machine.
- Definition Classes
- RISC → Machine
-
def
memory(instr: Instr): Unit
Execute memory instructions.
-
def
minus: Doc
- Definition Classes
- PrettyPrinterBase
-
val
name: String
- Definition Classes
- Machine
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
nest(d: Doc, j: Indent): Doc
- Definition Classes
- PrettyPrinter → PrettyPrinterBase
-
def
nesting(f: (Int) ⇒ Doc): Doc
- Definition Classes
- PrettyPrinter → PrettyPrinterBase
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
def
padto(p: Int, d: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
padtobreak(p: Int, d: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
implicit
def
paramUpdaterToU[T, U, V >: U](up: ParamUpdater[T, U]): V
- Definition Classes
- Machine
-
def
parens(d: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
percent: Doc
- Definition Classes
- PrettyPrinterBase
-
def
performUpdates(): Boolean
- Definition Classes
- Machine
-
def
plist(l: List[PrettyPrintable], prefix: String, elemToDoc: (PrettyPrintable) ⇒ Doc, sep: Doc, sepfn: (Seq[Doc], Doc) ⇒ Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
plus: Doc
- Definition Classes
- PrettyPrinterBase
-
def
pretty(d: Doc, w: Width): Layout
- Definition Classes
- PrettyPrinter → PrettyPrinterBase
-
def
pretty(p: PrettyPrintable): Layout
- Definition Classes
- PrettyPrinterBase
-
def
pretty_any(a: Any): Layout
- Definition Classes
- PrettyPrinterBase
-
def
pseq(l: Seq[PrettyPrintable], prefix: String, elemToDoc: (PrettyPrintable) ⇒ Doc, sep: Doc, sepfn: (Seq[Doc], Doc) ⇒ Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
question: Doc
- Definition Classes
- PrettyPrinterBase
-
def
rangle: Doc
- Definition Classes
- PrettyPrinterBase
-
def
rbrace: Doc
- Definition Classes
- PrettyPrinterBase
-
def
rbracket: Doc
- Definition Classes
- PrettyPrinterBase
-
def
reset(): Unit
- Definition Classes
- Machine
-
def
rparen: Doc
- Definition Classes
- PrettyPrinterBase
-
def
run(): Unit
- Definition Classes
- Machine
-
def
semi: Doc
- Definition Classes
- PrettyPrinterBase
-
def
sep(ds: Seq[Doc]): Doc
- Definition Classes
- PrettyPrinterBase
-
def
seq[T](l: Seq[T], prefix: String, elemToDoc: (T) ⇒ Doc, sep: Doc, sepfn: (Seq[Doc], Doc) ⇒ Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
softbreak: Doc
- Definition Classes
- PrettyPrinterBase
-
def
softline: Doc
- Definition Classes
- PrettyPrinterBase
-
def
space: Doc
- Definition Classes
- PrettyPrinterBase
-
def
spaces(n: Int): Doc
- Definition Classes
- PrettyPrinterBase
-
def
squote: Doc
- Definition Classes
- PrettyPrinterBase
-
def
squotes(d: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
ssep(ds: Seq[Doc], sep: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
implicit
def
stateTToT[T, U >: T](t: State[T]): U
- Definition Classes
- Machine
-
def
step: Boolean
- Definition Classes
- Machine
-
final
def
steps(nstep: Int): Unit
- Definition Classes
- Machine
- Annotations
- @tailrec()
-
def
sterm(ds: Seq[Doc], term: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
string(s: String): Doc
- Definition Classes
- PrettyPrinterBase
-
def
surround(d: Doc, b: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
implicit
def
text(t: String): Doc
- Definition Classes
- PrettyPrinter → PrettyPrinterBase
-
def
tilde: Doc
- Definition Classes
- PrettyPrinterBase
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
underscore: Doc
- Definition Classes
- PrettyPrinterBase
-
def
value(v: Any): Doc
- Definition Classes
- PrettyPrinterBase
-
def
vcat(ds: Seq[Doc]): Doc
- Definition Classes
- PrettyPrinterBase
-
def
verticalbar: Doc
- Definition Classes
- PrettyPrinterBase
-
def
vsep(ds: Seq[Doc], sep: Doc): Doc
- Definition Classes
- PrettyPrinterBase
-
def
vsep(ds: Seq[Doc]): Doc
- Definition Classes
- PrettyPrinterBase
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
width(d: Doc, f: (Int) ⇒ Doc): Doc
- Definition Classes
- PrettyPrinterBase