Changes between Version 4 and Version 5 of The MiniMP Intermediate Representation


Ignore:
Timestamp:
01/08/10 16:52:42 (16 years ago)
Author:
zirkel
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • The MiniMP Intermediate Representation

    v4 v5  
    77Each process contains a number of process variables, and a number of functions.  One of the functions is designated the "main" function (though that function's name does not have to be "main").  In particular, every process must contain at least one function.
    88== Variables ==
     9There are four different scopes to which a variable may belong.
     10 * !SharedVariable
     11
     12  Shared scope includes all input and output variables, and general shared variables; these are variables that can be accessed by any process.
     13 * !ProcessVariable
     14
     15  Process variables have the scope of one process; they can be accessed by any function in that process.
     16 * !LocalVariable
     17
     18  Local variables are local to a specific function in a specific process.  They can only be accessed within the function body.
     19  * !FormalVariable
     20 
     21      Formal variables are the formal parameters to a function.  They are a special type of local variable.
    922 * !BoundVariable
    10  * !FormalVariable
    11  * !LocalVariable
    12  * !ProcessVariable
    13  * !SharedVariable
     23
     24  Bound variables are specific to an expression;  these are variables from forall and exists statements.
     25
    1426== Types ==
    1527 * !ArrayType
     
    3345 * !QuantifierExpression
    3446 * !VariableExpression
     47== Locations ==
     48The locations fall into a number of categories, for the most part corresponding to the kinds of statements that can emanate from that location.  Some locations only allow one outgoing statement, while others allow several, and others none.
     49 * !AllocateLocation
     50 * !AssertionLocation
     51 * !AssignmentLocation
     52 * !AssumeLocation
     53 * !BranchLocation
     54 * !ChoiceLocation
     55 * !DeallocateLocation
     56 * !ForLoopLocation
     57 * !InvocationLocation
     58 * !ReceiveLocation
     59 * !ReturnLocation
     60 * !SendLocation
     61 * !TerminalLocation
    3562== Statements ==
     63Each statement has a single source location and a single destination location.
    3664 * !AllocateStatement
    3765 * !AssertionStatement