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