Last change
on this file since 236 was
198,
checked in by mulligan, 10 years ago
|
Added more info to status printout. Found weird bug in emulator: cjne
is sometimes interpreted as a jnz instruction.
|
File size:
1.3 KB
|
Line | |
---|
1 | open BitVectors;; |
---|
2 | open ASMInterpret;; |
---|
3 | open Util;; |
---|
4 | open Pretty;; |
---|
5 | |
---|
6 | let hex = IntelHex.intel_hex_of_file "Test.hex" in |
---|
7 | let mem = IntelHex.process_intel_hex hex in |
---|
8 | let status = ASMInterpret.load_mem mem ASMInterpret.initialize in |
---|
9 | let 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 | | _ -> ()*) |
---|
21 | in |
---|
22 | (* DPM: for debugging! *) |
---|
23 | let 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 "-------------------------------------" |
---|
36 | in |
---|
37 | mem_pretty_print status; |
---|
38 | ASMInterpret.execute observe status |
---|
39 | ;; |
---|
Note: See
TracBrowser
for help on using the repository browser.