source: Deliverables/D4.1/Nibble.ml @ 57

Last change on this file since 57 was 57, checked in by mulligan, 11 years ago

More instructions implemented. Started cleaning up code by moving
related functions acting on datatypes (bits, etc.) into dedicated
modules.

File size: 1.0 KB
Line 
1open Bit;;
2
3module type NIBBLE = functor(Bit: BIT) ->
4sig
5  type bit = Bit.bit
6  type nibble
7
8  val from_bits: bit -> bit -> nibble
9
10  val upper_bit: nibble -> bit
11  val lower_bit: nibble -> bit
12
13  val (-&-): nibble -> nibble -> nibble
14  val (-|-): nibble -> nibble -> nibble
15  val (-^-): nibble -> nibble -> nibble
16  val not: nibble -> nibble
17
18  val swap: nibble -> nibble
19
20  val mask: (bit -> bit) -> nibble -> nibble
21  val zip: (bit -> bit -> bit) -> nibble -> nibble -> nibble
22end
23
24module NibbleFunctor: NIBBLE = functor(Bit: BIT) ->
25struct
26  type bit = Bit.bit
27  type nibble = bit * bit
28
29  let from_bits l h = (l, h)
30
31  let upper_bit (l, r) = r
32  let lower_bit (l, r) = l
33
34  let (-&-) (l1,h1) (l2, h2) =
35     (Bit.(-&-) l1 l2, Bit.(-&-) h1 h2)
36  let (-|-) (l1,h1) (l2, h2) =
37     (Bit.(-|-) l1 l2, Bit.(-|-) h1 h2)
38  let (-^-) (l1,h1) (l2, h2) =
39     (Bit.(-^-) l1 l2, Bit.(-^-) h1 h2)
40
41  let not (l, h) = (Bit.not l, Bit.not h)
42
43  let swap (l, h) = (h, l)
44
45  let mask f (l, h) = (f l, f h)
46  let zip f (l1, h1) (l2, h2) = (f l1 l2, f l2 h2)
47end
Note: See TracBrowser for help on using the repository browser.