source: Deliverables/D2.3/8051/src/common/value.mli @ 453

Last change on this file since 453 was 453, checked in by ayache, 9 years ago

Import of the Paris's sources.

File size: 2.9 KB
Line 
1
2(** This module describes the values manipulated by high level
3    languages. *)
4
5
6module type DATA_SIZE =
7sig
8  val int_size : int
9  val ptr_size : int
10end
11
12
13module type S =
14sig
15
16  module Block  : IntValue.S
17  module Offset : IntValue.S
18  type t
19
20  val compare : t -> t -> int
21  val equal : t -> t -> bool
22  val eq : t -> t -> bool
23  val hash : t -> int
24  val to_string : t -> string
25
26  (* The functions of this module may raise a Failure exception when
27     trying to convert them to their various representation. *)
28
29  val is_int : t -> bool
30  val to_int : t -> int
31  val of_int : int -> t
32
33  val is_float : t -> bool
34  val to_float : t -> float
35  val of_float : float -> t
36
37  val to_int_repr : t -> IntValue.int_repr
38  val of_int_repr : IntValue.int_repr -> t
39
40  val is_pointer : t -> bool
41  val to_pointer : t -> Block.t * Offset.t
42  val of_pointer : Block.t * Offset.t -> t
43
44  val of_bool   : bool -> t
45  val to_bool   : t -> bool
46
47  val zero      : t
48  val val_true  : t
49  val val_false : t
50  val is_true   : t -> bool
51  val is_false  : t -> bool
52  val undef     : t
53
54  val cast8unsigned  : t -> t
55  val cast8signed    : t -> t   
56  val cast16unsigned : t -> t
57  val cast16signed   : t -> t
58  val cast32         : t -> t
59
60  val negint        : t -> t         
61  val notbool       : t -> t       
62  val notint        : t -> t         
63  val negf          : t -> t           
64  val absf          : t -> t           
65  val singleoffloat : t -> t 
66  val intoffloat    : t -> t     
67  val intuoffloat   : t -> t   
68  val floatofint    : t -> t     
69  val floatofintu   : t -> t   
70
71  val succ       : t -> t
72  val pred       : t -> t
73  val cmpl       : t -> t
74  val add_and_of : t -> t -> (t * t)
75  val add        : t -> t -> t
76  val add_of     : t -> t -> t
77  val sub_and_uf : t -> t -> (t * t)
78  val sub        : t -> t -> t
79  val sub_uf     : t -> t -> t
80  val mul        : t -> t -> t
81  val div        : t -> t -> t
82  val divu       : t -> t -> t
83  val modulo     : t -> t -> t
84  val modu       : t -> t -> t
85  val and_op     : t -> t -> t
86  val or_op      : t -> t -> t
87  val xor        : t -> t -> t
88  val shl        : t -> t -> t
89  val shr        : t -> t -> t
90  val shru       : t -> t -> t
91  val addf       : t -> t -> t
92  val subf       : t -> t -> t
93  val mulf       : t -> t -> t
94  val divf       : t -> t -> t
95
96  val cmp_eq_u : t -> t -> t 
97  val cmp_ne_u : t -> t -> t 
98  val cmp_lt_u : t -> t -> t 
99  val cmp_ge_u : t -> t -> t 
100  val cmp_le_u : t -> t -> t 
101  val cmp_gt_u : t -> t -> t 
102
103  val cmp_eq_f : t -> t -> t 
104  val cmp_ne_f : t -> t -> t 
105  val cmp_lt_f : t -> t -> t 
106  val cmp_ge_f : t -> t -> t 
107  val cmp_le_f : t -> t -> t 
108  val cmp_gt_f : t -> t -> t
109
110  val cmp_eq : t -> t -> t 
111  val cmp_ne : t -> t -> t 
112  val cmp_lt : t -> t -> t 
113  val cmp_ge : t -> t -> t 
114  val cmp_le : t -> t -> t 
115  val cmp_gt : t -> t -> t
116
117  val break : t -> int -> t list
118  val merge : t list -> t
119
120end
121
122
123module Make (D : DATA_SIZE) : S
Note: See TracBrowser for help on using the repository browser.