1signature emit_eval =
2sig
3
4  type run_trace =
5    { cycle : bool, pc : bool, ireg : bool, regs : bool, mem : bool,
6      rule : (int * char) }
7
8  type arm_mem = armML.word8 patriciaML.ptree
9
10  val traceOut : TextIO.outstream ref
11
12  val instruction_printer : (string *
13                            (armML.Encoding *
14                            (armML.word4 *
15                             armML.ARMinstruction)) -> unit) ref
16
17  val print_arm_mem      : arm_mem -> unit
18  val print_diff_arm_mem : arm_mem -> arm_mem -> unit
19
20  val arm_run : run_trace -> arm_mem -> string -> int ->
21                string * (arm_mem * armML.arm_state) option
22
23  val main    : unit -> unit
24
25  (*
26    usage:
27
28    arm_run
29      trace    (*  select updates to print                 *)
30      prog     (*  main memory ptree                       *)
31      options  (*  e.g. arch = armv4, pc = A00, cpsr = 10  *)
32      count    (*  max number of cycles, -ve for unbounded *)
33
34      ->
35
36      (message, final state)
37  *)
38
39end
40