-
Notifications
You must be signed in to change notification settings - Fork 14
/
config.mli
57 lines (41 loc) · 1.76 KB
/
config.mli
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
(* Copyright (c) 2013-2015, IMDEA Software Institute. *)
(* See ./LICENSE for authorship and licensing information *)
(** Module for parsing the configuration file *)
open NumAD.DS
(** List of initial values for registers. Register * lower bound * upper bound *)
type reg_init_values = (X86Types.reg32 * int64 * int64) list
(** List of initial values for memory addresses. Adress * lower bound * upper bound *)
type mem_init_values = (int64 * int64 * int64) list
(** Parameters for the Memory Abstract Domain initialization *)
type mem_param = mem_init_values * reg_init_values
val left_pos : string -> int -> int option
val right_pos : string -> int -> int option
val trim : string -> string
val read_lines : string -> string list
type config_options =
{
start_addr: int option;
end_addr: int option;
cache_s: int option; (* in bytes *)
line_s: int option; (* same as "data block size"; in bytes *)
assoc: int option;
inst_cache_s: int option; (* in bytes *)
inst_line_s: int option; (* same as "data block size"; in bytes *)
inst_assoc: int option;
inst_base_addr: int64 option;
mem_params: mem_param;
}
(** Parse the configuration file, which contains the cache parameters and start address *)
val parse_conffile :
string -> config_options
type access_type = Instruction | Data
type stub_t = {
first_addr : int; (** first address of code to be stubbed *)
next_addr : int; (** the next address (after code being stubbed) *)
accesses : (access_type * rw_t * int64) list; (**accesses to be emulated *)
}
type stubs_t = stub_t list
val get_stub : int -> stub_t list -> stub_t option
(** Parse the stub file, which contains parameters for stubbing *)
val parse_stubfile : string -> stubs_t
val logged_addresses : int64 list ref