source: Deliverables/D4.1/Bit.ml @ 62

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

Many additions to Bit, Nibble and Byte API, as well as more instructions
added to ASMInterpret execute function.

File size: 1.2 KB
Line 
1(*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*)
2(* FILENAME: Bit.ml                                                          *)
3(* DESCRIPTION: An ADT implementing bits, and common operations on them.     *)
4(* CREATED: 10/09/2010, Dominic Mulligan                                     *)
5(* BUGS:                                                                     *)
6(*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*)
7
8module type BIT =
9sig
10  type bit
11
12  val from_bool: bool -> bit
13  val from_int: int -> bit
14
15  val (-&-): bit -> bit -> bit
16  val (-|-): bit -> bit -> bit
17  val (-^-): bit -> bit -> bit
18  val not: bit -> bit
19
20  val pretty: bit -> string
21end;;
22
23module Bit: BIT =
24struct
25  type bit = bool
26
27  let from_bool b = b
28  let from_int i =
29    if i > 0 then
30      true
31    else
32      false
33
34  let (-&-) l r =
35    match l with
36      true -> r
37    | false -> false
38  let (-|-) l r =
39    match l with
40      true -> true
41    | false -> r
42  let (-^-) (l: bit) r =
43    match l with
44      true -> not r
45    | false -> r
46  let not l =
47    match l with
48      true -> false
49    | false -> true
50
51  let pretty l =
52    match l with
53      true -> "1b"
54    | false -> "0b"
55end;;
Note: See TracBrowser for help on using the repository browser.