]> matita.cs.unibo.it Git - pkg-cerco/acc.git/blob - src/ASM/BitVectors.mli
Imported Upstream version 0.2
[pkg-cerco/acc.git] / src / ASM / BitVectors.mli
1 type bit = bool
2
3 type 'a vect
4
5 type nibble = [`Four] vect
6 type byte7 = [`Seven] vect
7 type byte = [`Eight] vect
8 type word = [`Sixteen] vect
9 type word11 = [`Eleven] vect
10
11 type sizes = [ `Four | `Seven | `Eight | `Eleven | `Sixteen ]
12
13 val mk_nibble: bit -> bit -> bit -> bit -> nibble
14 val from_nibble: nibble -> bit * bit * bit * bit
15 val mk_byte7: bit -> bit -> bit -> nibble -> byte7
16 val from_byte7: byte7 -> bit * bit * bit * nibble
17 val mk_byte: nibble -> nibble -> byte
18 val mk_byte_from_bits: ((bit * bit * bit * bit) * (bit * bit * bit * bit)) -> byte
19 val from_byte: byte -> nibble * nibble
20 val bits_of_byte: byte -> ((bit * bit * bit * bit) * (bit * bit * bit * bit))
21 val mk_word: byte -> byte -> word
22 val from_word: word -> byte * byte
23 val mk_word11: bit -> bit -> bit -> byte -> word11
24 val from_word11: word11 -> bit * bit * bit * byte
25
26 val get_bit: 'a vect -> int -> bit
27 val set_bit: 'a vect -> int -> bit -> 'a vect
28
29 val int_of_vect: 'a vect -> int
30 val vect_of_int: int -> ([< sizes] as 'a) -> 'a vect
31 val string_of_bit: bit -> string
32 val string_of_vect: 'a vect -> string
33 val hex_string_of_vect: 'a vect -> string
34
35 val (-&-): 'a vect -> 'a vect -> 'a vect
36 val (-|-): 'a vect -> 'a vect -> 'a vect
37 val (-^-): 'a vect -> 'a vect -> 'a vect
38 val complement: 'a vect -> 'a vect
39
40 val iter_bits: (bit -> string) -> 'a vect -> string
41 val map_bits: (bit -> bit) -> 'a vect -> 'a vect
42 val map2_bits: (bit -> bit -> bit) -> 'a vect -> 'a vect -> 'a vect
43
44 val string_of_vect: 'a vect -> string
45
46 val zero: [< `Four | `Seven | `Eight | `Eleven | `Sixteen ] -> [< `Four | `Seven | `Eight | `Eleven | `Sixteen ] vect
47
48 val half_add: 'a vect -> 'a vect -> bit * 'a vect
49 val full_add: 'a vect -> 'a vect -> bit -> bit * 'a vect
50 val sign_extension: byte -> word
51
52 val rotate_left : 'a vect -> 'a vect
53 val rotate_right : 'a vect -> 'a vect
54 val shift_right : 'a vect -> 'a vect
55 val shift_left : 'a vect -> 'a vect
56
57 module WordMap: Map.S with type key = word