source: Deliverables/D4.1/Test.ml @ 440

Last change on this file since 440 was 429, checked in by mulligan, 10 years ago

1) README upated
2) executable now reads the name of the HEX file from argv

File size: 1.3 KB
Line 
1open BitVectors;;
2open ASMInterpret;;
3open Util;;
4open Pretty;;
5
6let hex = IntelHex.intel_hex_of_file Sys.argv.(1) in
7let mem = IntelHex.process_intel_hex hex in
8let status = ASMInterpret.load_mem mem ASMInterpret.initialize in
9let observe status =
10 let pc = status.ASMInterpret.pc in
11 let instr,_,_ = ASMInterpret.fetch status.ASMInterpret.code_memory pc in
12   let _ = prerr_string (BitVectors.hex_string_of_vect pc) in
13   let _ = prerr_endline (": " ^ pp_instruction instr) in
14    (* match instr with
15       `SJMP (`REL b) ->
16          if int_of_vect b = 254 || int_of_vect b = 0 then*)
17            prerr_endline <*> string_of_status $ status
18(*          else
19            ()
20     | _ -> ()*)
21in
22(* DPM: for debugging! *)
23let mem_pretty_print status =
24  let rec aux status pc =
25    let instr, pc', cost = ASMInterpret.fetch status.ASMInterpret.code_memory pc in
26      prerr_string $ ((hex_string_of_vect pc) ^ ": ");
27      prerr_string $ (pp_instruction instr) ^ " ";
28      prerr_endline $ string_of_int cost;
29      if int_of_vect pc' > 200 then (* DPM: hardcoded on a case-by-case basis *)
30        ()
31      else
32        aux status pc'
33  in
34    aux status status.ASMInterpret.pc;
35    prerr_endline "-------------------------------------"
36in
37 mem_pretty_print status;
38 ASMInterpret.execute observe status
39;;
Note: See TracBrowser for help on using the repository browser.