lustrec / src / machine_code_types.ml @ d4c98bae
History | View | Annotate | Download (1.64 KB)
1 | 8446bf03 | ploc | (************ Machine code types *************) |
---|---|---|---|
2 | open Lustre_types |
||
3 | |||
4 | type value_t = |
||
5 | { |
||
6 | value_desc: value_t_desc; |
||
7 | value_type: Types.type_expr; |
||
8 | value_annot: expr_annot option |
||
9 | } |
||
10 | and value_t_desc = |
||
11 | | Cst of constant |
||
12 | | LocalVar of var_decl |
||
13 | | StateVar of var_decl |
||
14 | | Fun of ident * value_t list |
||
15 | | Array of value_t list |
||
16 | | Access of value_t * value_t |
||
17 | | Power of value_t * value_t |
||
18 | |||
19 | type instr_t = |
||
20 | { |
||
21 | instr_desc: instr_t_desc; (* main data: the content *) |
||
22 | (* lustre_expr: expr option; (* possible representation as a lustre expression *) *) |
||
23 | lustre_eq: eq option; (* possible representation as a lustre flow equation *) |
||
24 | } |
||
25 | and instr_t_desc = |
||
26 | | MLocalAssign of var_decl * value_t |
||
27 | | MStateAssign of var_decl * value_t |
||
28 | | MReset of ident |
||
29 | | MNoReset of ident |
||
30 | | MStep of var_decl list * ident * value_t list |
||
31 | | MBranch of value_t * (label * instr_t list) list |
||
32 | | MComment of string |
||
33 | 089f94be | ploc | |
34 | type step_t = { |
||
35 | step_checks: (Location.t * value_t) list; |
||
36 | step_inputs: var_decl list; |
||
37 | step_outputs: var_decl list; |
||
38 | step_locals: var_decl list; |
||
39 | step_instrs: instr_t list; |
||
40 | step_asserts: value_t list; |
||
41 | } |
||
42 | |||
43 | type static_call = top_decl * (Dimension.dim_expr list) |
||
44 | |||
45 | type machine_t = { |
||
46 | mname: node_desc; |
||
47 | mmemory: var_decl list; |
||
48 | mcalls: (ident * static_call) list; (* map from stateful/stateless instance to node, no internals *) |
||
49 | minstances: (ident * static_call) list; (* sub-map of mcalls, from stateful instance to node *) |
||
50 | minit: instr_t list; |
||
51 | mstatic: var_decl list; (* static inputs only *) |
||
52 | mconst: instr_t list; (* assignments of node constant locals *) |
||
53 | mstep: step_t; |
||
54 | mspec: node_annot option; |
||
55 | mannot: expr_annot list; |
||
56 | } |