Project

General

Profile

Download (2.05 KB) Statistics
| Branch: | Tag: | Revision:
1
* TODO
2
** include files
3
** main function
4
*** add a clean test to forbid array arguments for main node
5
    (no available input/output methods)
6
** test suite
7
*** for complex dependency graphs (notably mem/mem cyclic dependencies)
8
*** for clocks
9
*** for arrays (non-generic nodes)
10
** compare with lus2c (verimag)
11
** extension
12
*** array access: done
13
*** add an option to dynamically check array accesses: done
14
*** power operator: done
15
*** automaton
16
*** annotations to ACSL
17
** init checking
18
*** to be done !!!
19
** normalization
20
*** sub-expression sharing seems to be not totally working: fixed
21
*** improve behavior for power and access operators:done
22
*** more type-directed normalization (notably to improve code gen for arrays): done
23
*** reuse of dead vars instead of systematically allocating new local vars
24
*** add a clean test for used but undefined nodes
25
** typing
26
*** correct typing of arith ops (real/int with subtyping ?)
27
*** display array dimensions with correct names: done
28
*** clocks must not be static inputs: done
29
** clock calculus
30
*** extension from named clocks to valued clocks ?
31
*** static inputs should be polymorphic, as global constants are: done
32

    
33
* Horn backend
34
** enum types for automaton
35
   - issues with MBranches and clocks
36
     - control-on-clock generates a "if cond then expr else nothing
37
     - it has to be expressed in a functional way to enable its expression as
38
       horn
39

    
40

    
41
-  The issue seems mainly to lie in the out = f(in) every cond
42
   this generates the follwoingg imperative statements
43
   if cond then f_reset(*mem) else {(nothing, ie. not reset)}
44
   f_step(in,*put,*mem)
45

    
46
   In the machine code, this is done by generating the sequence of 2 instructions
47
   1. if cond then MReset() else {}  (* creation of a conditional statement *)
48
   2. MStep()
49

    
50
- For Xavier: Syntactically, how could you "reset" an arrow? When we see an
51
  Expr_arrow, we introduce a MReset instance to the set of instruction on the
52
  reset function of the current node, but is there any mean to do it with
53
  "every" ?
54

    
55

    
56

    
57

    
58
x = expr when c
59

    
60
if c then
61
  x= expr
62

    
63
else {}
64

    
65
x = if c then expr else x
(10-10/12)