13 |
Description: |
Description: |
14 |
|
|
15 |
---------------------------------------------------------------------- |
---------------------------------------------------------------------- |
16 |
|
Name: Lal George |
17 |
|
Date: 2001/07/19 16:36:29 EDT 2001 |
18 |
|
Tag: george-20010719-simple-cells |
19 |
|
Description: |
20 |
|
|
21 |
|
I have dramatically simplified the interface for CELLS in MLRISC. |
22 |
|
|
23 |
|
In summary, the cells interface is broken up into three parts: |
24 |
|
|
25 |
|
1. CellsBasis : CELLS_BASIS |
26 |
|
|
27 |
|
CellsBasis is a top level structure and common for all |
28 |
|
architectures. it contains the definitions of basic datatypes |
29 |
|
and utility functions over these types. |
30 |
|
|
31 |
|
2. functor Cells() : CELLS |
32 |
|
|
33 |
|
Cells generates an interface for CELLS that incorporates the |
34 |
|
specific resources on the target architecture, such as the |
35 |
|
presence of special register classes, their number and size, |
36 |
|
and various useful substructures. |
37 |
|
|
38 |
|
3. <ARCH>CELLS |
39 |
|
|
40 |
|
e.g. SparcCells: SPARCCELLS |
41 |
|
|
42 |
|
<ARCH>CELLS usually contains additional bindings for special |
43 |
|
registers on the architecture, such as: |
44 |
|
|
45 |
|
val r0 : cell (* register zero *) |
46 |
|
val y : cell (* Y register *) |
47 |
|
val psr : cell (* processor status register *) |
48 |
|
... |
49 |
|
|
50 |
|
The structure returned by applying the Cells functor is opened |
51 |
|
in this interface. |
52 |
|
|
53 |
|
The main implication of all this is that the datatypes for cells is |
54 |
|
split between CellsBasis and CELLS -- a fairly simple change for user |
55 |
|
code. |
56 |
|
|
57 |
|
In the old scheme the CELLS interface had a definitional binding of |
58 |
|
the form: |
59 |
|
|
60 |
|
signature CELLS = sig |
61 |
|
|
62 |
|
structure CellsBasis = CellsBasis |
63 |
|
|
64 |
|
... |
65 |
|
|
66 |
|
end |
67 |
|
|
68 |
|
With all the sharing constraints that goes on in MLRISC, this old |
69 |
|
design quickly leads to errors such as: |
70 |
|
|
71 |
|
"structure definition spec inside of sharing ... " |
72 |
|
|
73 |
|
|
74 |
|
and appears to require an unacceptable amount of sharing and where |
75 |
|
constraint hackery. |
76 |
|
|
77 |
|
I think this error message (the interaction of definitional specs and |
78 |
|
sharing) requires more explanation on our web page. |
79 |
|
|
80 |
|
---------------------------------------------------------------------- |
81 |
Name: Matthias Blume |
Name: Matthias Blume |
82 |
Date: 2001/07/19 15:00:00 EDT |
Date: 2001/07/19 15:00:00 EDT |
83 |
Tag: blume-20010719-libreorg |
Tag: blume-20010719-libreorg |