Line | |
---|
1 | |
---|
2 | include Arch.S |
---|
3 | |
---|
4 | type opaccs = |
---|
5 | | Mul |
---|
6 | | Divu |
---|
7 | | Modu |
---|
8 | |
---|
9 | type op1 = |
---|
10 | | Cmpl |
---|
11 | | Inc |
---|
12 | |
---|
13 | type op2 = |
---|
14 | | Add |
---|
15 | | Addc |
---|
16 | | Sub |
---|
17 | | And |
---|
18 | | Or |
---|
19 | | Xor |
---|
20 | |
---|
21 | val print_opaccs : opaccs -> string |
---|
22 | val print_op1 : op1 -> string |
---|
23 | val print_op2 : op2 -> string |
---|
24 | |
---|
25 | module Eval (Val : Value.S) : sig |
---|
26 | val opaccs : opaccs -> Val.t -> Val.t -> Val.t |
---|
27 | val op1 : op1 -> Val.t -> Val.t |
---|
28 | val op2 : Val.t (* carry *) -> op2 -> Val.t -> Val.t -> |
---|
29 | (Val.t (* returned value *) * Val.t (* new carry value *)) |
---|
30 | end |
---|
31 | |
---|
32 | (* Not supported: signed division, signed modulo, shift operations. *) |
---|
33 | |
---|
34 | type register |
---|
35 | val compare_reg : register -> register -> int |
---|
36 | val eq_reg : register -> register -> bool |
---|
37 | |
---|
38 | module RegisterSet : Set.S with type elt = register |
---|
39 | module RegisterMap : Map.S with type key = register |
---|
40 | |
---|
41 | val a : register |
---|
42 | val b : register |
---|
43 | val dpl : register |
---|
44 | val dph : register |
---|
45 | val spl : register |
---|
46 | val sph : register |
---|
47 | val st0 : register |
---|
48 | val st1 : register |
---|
49 | val sst : register |
---|
50 | val carry : register (* only used for the liveness analysis *) |
---|
51 | |
---|
52 | val registers : RegisterSet.t |
---|
53 | val parameters : register list |
---|
54 | val callee_saved : RegisterSet.t |
---|
55 | val caller_saved : RegisterSet.t |
---|
56 | val allocatable : RegisterSet.t |
---|
57 | val forbidden : RegisterSet.t |
---|
58 | |
---|
59 | val print_register : register -> string |
---|
60 | |
---|
61 | val reg_addr : register -> [> ASM.direct] |
---|
Note: See
TracBrowser
for help on using the repository browser.