source: src/CHANGES @ 1285

Last change on this file since 1285 was 1198, checked in by campbell, 9 years ago

Clight cast removal (NB: quite different from the prototype).

File size: 3.1 KB
2  Label moved out of labelled_instruction datatype, as the Paris compiler
3  can only produce at most one label per instruction emitted.
5  Merged the LTL and LIN datatypes.
7  Added comments to the ASM datatypes.
9  Changed identifiers from bytes to words.
11  Formalised missing file.
14  Split translate_statements into two functions.
16  Added a dependent type for the invariant that a LIN function body does not
17  start with a label, and is not empty.
20  In retrospect:
22  The Clight semantics are based on CompCert 1.6 rather than the prototype's;
23  this also affects some of the common files.
25    The identifiers are Words so that we can use BitVectorTries for maps.
26    Similarly, integers are based on BitVectors rather than Coq-style binary
27    integers + range proof.
29  8051 memory spaces are present, but are not (yet?) in the prototype.
31  Dependent types are used to fix the number of arguments for addressing modes
32  in RTLabs.
35  common/ provides identifiers similar to atomSig in the
36  prototype, except that we use the universe's name as a tag for the type of
37  identifiers to provide some extra type safety.
40  Make return register optional in RTLabs
43  Remove register from RTLabs return statements because it ends up being
44  redundant (we always use the register in the function record).
46  The constants follow CompCert's rather than the prototype's with the result
47  that they match up more closely with the addressing modes in RTLabs.
49  One of the front end operations for subtraction (subpp) appears to be missing
50  from the prototype at present.
53  Dump Param var_type from the Clight to Cminor stage - we need to treat them
54  like the other variables.
56  Generate list of pointer variables from Clight types rather than
57  recalculation.
59  Drop signatures from function call statements in Cminor and RTLabs - they
60  appear to be unused.
6213/07/2011:  [belatedly]
63  Offsets haven't been abstracted in the front end.  They might be later if it
64  turns out to be useful in the proofs.  (See the messages in the thread
65  "32 and 16 bits integers support" from the 16th June 2011.)
67  The integer cast operation in the front end doesn't take the operand size.
68  In keeping with the other operations, we deduce it from the operand.
69  The sizes of the results are always mentioned so that they can be evaluated
70  without consulting the type information (although this is a somewhat
71  arbitrary decision).
[1143]7330/08/2011:  [annotation]
74  There is a mismatch between the capability of external functions in the
75  OCaml and Matita code. In OCaml they can interact with the memory. In
76  Matita (following old? CompCert) they cannot. Hence, in the semantics
77  of intermediate languages from ERTL on, we need to recover the arguments
78  for the function not only from the registers, but also from the stack.
81  The Clight cast simplification algorithm is quite different to the prototype's:
82  it only needs to do a simple pattern match per recursion and copes with deeper
83  arithmetic expressions such as (char)((int)x + (int)y + (int)z).
Note: See TracBrowser for help on using the repository browser.