Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Revision 890
ViewVC logotype

Revision 890

Jump to revision: Previous Next
Author: george
Date: Thu Jul 19 20:38:56 2001 UTC (21 years, 2 months ago)
Log Message:
I have dramatically simplified the interface for CELLS in MLRISC.

In summary, the cells interface is broken up into three parts:

  1. CellsBasis : CELLS_BASIS

	CellsBasis is a top level structure and common for all
        architectures.  it contains the definitions of basic datatypes
        and utility  functions over these types.

  2. functor Cells() : CELLS

	Cells generates an interface for CELLS that incorporates the
	specific resources on the target architecture, such as the
	presence of special register classes, their number and size,
	and various useful substructures.


	e.g. SparcCells: SPARCCELLS

        <ARCH>CELLS usually contains additional bindings for special
	registers  on the architecture, such as:

		val r0 : cell		(* register zero *)
		val y : cell		(* Y register *)
		val psr : cell		(* processor status register *)

        The structure returned by applying the Cells functor is opened
        in this interface.

The main implication of all this is that the datatypes for cells is
split between CellsBasis and CELLS -- a fairly simple change for user

In the old scheme the CELLS interface had a definitional binding of
the form:

	signature CELLS = sig

 	   structure CellsBasis = CellsBasis



With all the sharing constraints that goes on in MLRISC, this old
design  quickly leads to errors such as:

	"structure definition spec inside of sharing ... "

and appears to require an unacceptable amount of sharing and where
constraint hackery.

I think this error message (the interaction of definitional specs and
sharing) requires more explanation on our web page.

Changed paths:

Path Details
Directorysml/trunk/HISTORY modified , text changed

ViewVC Help
Powered by ViewVC 1.0.0