  (**************************************************************) 
  (*   This module was generated by BEG V1.84        *)
  (*        GMD Forschunsstelle an der Universitaet Karlsruhe   *)
  (*        Vincenz-Priessnitz-Str. 1 76131 Karlsruhe Germany   *)
  (**************************************************************)
 DEFINITION MODULE CgMobil;
 
 FROM SYSTEM IMPORT ADDRESS;
(*++++++ start insertion IpTypes ++++++*)

IMPORT CgBase;
FROM Strings	IMPORT	String;


(*------ end   insertion IpTypes ------*)
(******* empty insertion IpCgMobil_d *******)
 
 TYPE       
            Address  = ADDRESS;
            Data  = ADDRESS;
            FloatExp  = ADDRESS;
            Arglist  = ADDRESS;

   BegRegister = ( RegNil
      ,Regeax
      ,Regebx
      ,Regecx
      ,Regedx
      ,Regesi
      ,Regedi
      ,Regebp
      ,Regesp
      ,Regst
      ,Regst1
   );

(*++++++ start insertion IpIRCons ++++++*)
    

(***************************************************************************)
(* Attribute Types                                                         *)
(***************************************************************************)

TYPE

   Operand            = ADDRESS;
   DataOperand        = ADDRESS;
   AddressOperand     = ADDRESS;
   DataTempo          = CgBase.DataTempo;
   AddressTempo       = CgBase.AddressTempo;
   ModuleIndex        = CgBase.ModuleIndex;
   ProcIndex          = CgBase.ProcIndex;
   StringIndex        = CgBase.StringIndex;
   Label              = CgBase.Label;
   SysProc            = CgBase.SysProc;
   Mode               = CgBase.Mode;
   Relation           = CgBase.Relation;

CONST

   SysProcHALT        = CgBase.SysProcHALT;
   SysProcNewprocess  = CgBase.SysProcNewprocess;
   SysProcTransfer    = CgBase.SysProcTransfer;
   SysProcCaseError   = CgBase.SysProcCaseError;
   SysProcReturnError = CgBase.SysProcReturnError;

   UnsignedByte       = CgBase.UnsignedByte;
   UnsignedWord       = CgBase.UnsignedWord;
   UnsignedLong       = CgBase.UnsignedLong;
   SignedByte         = CgBase.SignedByte;
   SignedWord         = CgBase.SignedWord;
   SignedLong         = CgBase.SignedLong;
   FloatShort         = CgBase.FloatShort;
   FloatLong          = CgBase.FloatLong;

   RelEqual           = CgBase.RelEqual;
   RelUnequal         = CgBase.RelUnequal;
   RelLess            = CgBase.RelLess;
   RelLessOrEqual     = CgBase.RelLessOrEqual;
   RelGreater         = CgBase.RelGreater;
   RelGreaterOrEqual  = CgBase.RelGreaterOrEqual;


(***************************************************************************)
(* Values for undefined attributes  and operands                           *)
(***************************************************************************)

VAR
   UndefProcIndex   : ProcIndex;
   UndefModuleIndex : ModuleIndex;
   UndefOperand     : Operand;


(***************************************************************************)
(* Declarations                                                            *)
(***************************************************************************)

PROCEDURE DeclareModule
   (    extern       : BOOLEAN;
    VAR CompUnitName : ARRAY OF CHAR; 
    VAR ref          : ModuleIndex);

PROCEDURE DeclareProcedure
   (    extern       : BOOLEAN;
	isFunction   : BOOLEAN;
	ProcMode     : Mode;
    VAR ProcName     : ARRAY OF CHAR; 
        ProcNumber   : SHORTCARD;
        module       : ModuleIndex;
	level        : SHORTCARD;
	father       : ProcIndex;
    VAR ref          : ProcIndex);

PROCEDURE DeclareString
   (    length : SHORTCARD;
    VAR string : ARRAY OF CHAR; 
    VAR ref    : StringIndex);

PROCEDURE DeclareLabel
   (VAR lab : Label);

PROCEDURE DeclareDataTempo
   (    mode  : Mode;
    VAR tempo : CgBase.DataTempo);

PROCEDURE DeclareAddressTempo
   (VAR tempo : CgBase.AddressTempo);

PROCEDURE Switch
   (mode         : Mode;
    lwb          : LONGINT;
    upb          : LONGINT;
    CaseLabels   : ARRAY OF CgBase.Label;
    DefaultLabel : CgBase.Label;
    op           : Operand);

PROCEDURE  BeginModule
   (AtModulName  :  ARRAY OF CHAR;
    AtFrameSize  :  LONGINT);


(*------ end   insertion IpIRCons ------*)
 PROCEDURE  ShortCardConstant (
                      Atc  :  SHORTCARD
                      ;  VAR result : Data);
 PROCEDURE  LongCardConstant (
                      Atc  :  LONGCARD
                      ;  VAR result : Data);
 PROCEDURE  ShortIntConstant (
                      Atc  :  SHORTINT
                      ;  VAR result : Data);
 PROCEDURE  LongIntConstant (
                      Atc  :  LONGINT
                      ;  VAR result : Data);
 PROCEDURE  RealConstant (
                      Atc  :  REAL
                      ;  VAR result : Data);
 PROCEDURE  LongRealConstant (
                      Atc  :  LONGREAL
                      ;  VAR result : Data);
 PROCEDURE  CharConstant (
                      Atc  :  CHAR
                      ;  VAR result : Data);
 PROCEDURE  BoolConstant (
                      Atval  :  BOOLEAN
                      ;  VAR result : Data);
 PROCEDURE  SetConstant (
                      Atc  :  BITSET
                      ;  VAR result : Data);
 PROCEDURE  NilConstant (
                         VAR result : Data);
 PROCEDURE  ProcedureConstant (
                      Atindex  :  CgBase.ProcIndex
                      ;  VAR result : Data);
 PROCEDURE  StringAddr (
                      Atindex  :  CgBase.StringIndex
                      ;  VAR result : Address);
 PROCEDURE  LocalVariable (
                      Atoffset  :  LONGINT
                      ;  VAR result : Address);
 PROCEDURE  GlobalVariable (
                      Atoffset  :  LONGINT
                      ;  op1  : Address
                      ;  VAR result : Address);
 PROCEDURE  StaticVariable (
                      Atmodule  :  CgBase.ModuleIndex;
                      Atoffset  :  LONGINT
                      ;  VAR result : Address);
 PROCEDURE  LocalValueParam (
                      Atoffset  :  LONGINT
                      ;  VAR result : Address);
 PROCEDURE  LocalVarParam (
                      Atoffset  :  LONGINT
                      ;  VAR result : Address);
 PROCEDURE  LocalOpenArrayValueParam (
                      Atoffset  :  LONGINT
                      ;  VAR result : Address);
 PROCEDURE  GlobalValueParam (
                      Atoffset  :  LONGINT
                      ;  op1  : Address
                      ;  VAR result : Address);
 PROCEDURE  GlobalVarParam (
                      Atoffset  :  LONGINT
                      ;  op1  : Address
                      ;  VAR result : Address);
 PROCEDURE  GlobalOpenArrayValueParam (
                      Atoffset  :  LONGINT
                      ;  op1  : Address
                      ;  VAR result : Address);
 PROCEDURE  UsePointer (
                         op1  : Data
                      ;  VAR result : Address);
 PROCEDURE  FrameBase (
                      Atproc  :  CgBase.ProcIndex;
                      Atlevel  :  SHORTCARD
                      ;  VAR result : Address);
 PROCEDURE  ParamBase (
                      Atproc  :  CgBase.ProcIndex;
                      Atlevel  :  SHORTCARD
                      ;  VAR result : Address);
 PROCEDURE  AddOffset (
                      Atoffset  :  LONGINT
                      ;  op1  : Address
                      ;  VAR result : Address);
 PROCEDURE  Subscript (
                      AtIndexMode  :  CgBase.Mode;
                      AtLwbMode  :  CgBase.Mode;
                      AtUpbMode  :  CgBase.Mode;
                      AtElemSize  :  LONGCARD
                      ;  op1  : Address
                      ;  op2  : Data
                      ;  op3  : Address
                      ;  op4  : Address
                      ;  VAR result : Address);
 PROCEDURE  AddAddr (
                         op1  : Address
                      ;  op2  : Data
                      ;  VAR result : Address);
 PROCEDURE  SelectField (
                      Atoffset  :  LONGINT
                      ;  op1  : Address
                      ;  VAR result : Address);
 PROCEDURE  AssignDataTempo (
                      Atmode  :  CgBase.Mode;
                      Attempo  :  CgBase.DataTempo
                      ;  op1  : Data
                                                         );
 PROCEDURE  AssignAddressTempo (
                      Attempo  :  CgBase.AddressTempo
                      ;  op1  : Address
                                                         );
 PROCEDURE  UseDataTempo (
                      Atmode  :  CgBase.Mode;
                      Attempo  :  CgBase.DataTempo
                      ;  VAR result : Data);
 PROCEDURE  UseAddressTempo (
                      Attempo  :  CgBase.AddressTempo
                      ;  VAR result : Address);
 PROCEDURE  Content (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Address
                      ;  VAR result : Data);
 PROCEDURE  Assign (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Address
                      ;  op2  : Data
                                                         );
 PROCEDURE  AssignLong (
                      Atsize  :  LONGINT
                      ;  op1  : Address
                      ;  op2  : Address
                                                         );
 PROCEDURE  Inc1 (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Address
                                                         );
 PROCEDURE  Inc2 (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Address
                      ;  op2  : Data
                                                         );
 PROCEDURE  Dec1 (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Address
                                                         );
 PROCEDURE  Dec2 (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Address
                      ;  op2  : Data
                                                         );
 PROCEDURE  Incl (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Address
                      ;  op2  : Data
                                                         );
 PROCEDURE  Excl (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Address
                      ;  op2  : Data
                                                         );
 PROCEDURE  InclL (
                         op1  : Address
                      ;  op2  : Data
                                                         );
 PROCEDURE  ExclL (
                         op1  : Address
                      ;  op2  : Data
                                                         );
 PROCEDURE  SkipAddress (
                         op1  : Address
                                                         );
 PROCEDURE  SkipData (
                         op1  : Data
                                                         );
 PROCEDURE  FixedNegate (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Data
                      ;  VAR result : Data);
 PROCEDURE  FixedPlus (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  FixedMinus (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  FixedMult (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  FixedDiv (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  FixedMod (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  FixedAbs (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Data
                      ;  VAR result : Data);
 PROCEDURE  FloatNegate (
                      Atmode  :  CgBase.Mode
                      ;  op1  : FloatExp
                      ;  VAR result : FloatExp);
 PROCEDURE  FloatPlus (
                      Atmode  :  CgBase.Mode
                      ;  op1  : FloatExp
                      ;  op2  : FloatExp
                      ;  VAR result : FloatExp);
 PROCEDURE  FloatMinus (
                      Atmode  :  CgBase.Mode
                      ;  op1  : FloatExp
                      ;  op2  : FloatExp
                      ;  VAR result : FloatExp);
 PROCEDURE  FloatMult (
                      Atmode  :  CgBase.Mode
                      ;  op1  : FloatExp
                      ;  op2  : FloatExp
                      ;  VAR result : FloatExp);
 PROCEDURE  FloatDiv (
                      Atmode  :  CgBase.Mode
                      ;  op1  : FloatExp
                      ;  op2  : FloatExp
                      ;  VAR result : FloatExp);
 PROCEDURE  FloatAbs (
                      Atmode  :  CgBase.Mode
                      ;  op1  : FloatExp
                      ;  VAR result : FloatExp);
 PROCEDURE  SetUnion (
                         op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  SetDifference (
                         op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  SetIntersection (
                         op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  SetSymDifference (
                         op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  SetPlusSingle (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  SetPlusSingleL (
                         op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  SetPlusRange (
                      AtLwbMode  :  CgBase.Mode;
                      AtUpbMode  :  CgBase.Mode
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  op3  : Data
                      ;  VAR result : Data);
 PROCEDURE  Cap (
                         op1  : Data
                      ;  VAR result : Data);
 PROCEDURE  Float (
                         op1  : Data
                      ;  VAR result : FloatExp);
 PROCEDURE  Trunc (
                      Atopmode  :  CgBase.Mode;
                      Atresultmode  :  CgBase.Mode
                      ;  op1  : FloatExp
                      ;  VAR result : Data);
 PROCEDURE  Adr (
                         op1  : Address
                      ;  VAR result : Data);
 PROCEDURE  Coerce (
                      Atpremode  :  CgBase.Mode;
                      Atpostmode  :  CgBase.Mode
                      ;  op1  : Data
                      ;  VAR result : Data);
 PROCEDURE  Check (
                      AtIndexMode  :  CgBase.Mode;
                      AtLwbMode  :  CgBase.Mode;
                      AtUpbMode  :  CgBase.Mode;
                      AtCheckLwb  :  BOOLEAN;
                      AtCheckUpb  :  BOOLEAN
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  op3  : Data
                      ;  VAR result : Data);
 PROCEDURE  CheckL (
                      AtIndexMode  :  CgBase.Mode;
                      AtLwbMode  :  CgBase.Mode;
                      AtUpbMode  :  CgBase.Mode;
                      AtCheckLwb  :  BOOLEAN;
                      AtCheckUpb  :  BOOLEAN
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  op3  : Data
                      ;  VAR result : Data);
 PROCEDURE  FixedCompare (
                      Atmode  :  CgBase.Mode;
                      Atrel  :  CgBase.Relation
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  FloatCompare (
                      Atmode  :  CgBase.Mode;
                      Atrel  :  CgBase.Relation
                      ;  op1  : FloatExp
                      ;  op2  : FloatExp
                      ;  VAR result : Data);
 PROCEDURE  SetCompare (
                      Atrel  :  CgBase.Relation
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  PointerCompare (
                      Atrel  :  CgBase.Relation
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  TestMembership (
                      AtElemMode  :  CgBase.Mode;
                      Atcond  :  BOOLEAN
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  TestMembershipL (
                      AtElemMode  :  CgBase.Mode;
                      Atcond  :  BOOLEAN
                      ;  op1  : Data
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  TestOdd (
                      Atmode  :  CgBase.Mode;
                      Atcond  :  BOOLEAN
                      ;  op1  : Data
                      ;  VAR result : Data);
 PROCEDURE  PlaceLabel (
                      Atlab  :  CgBase.Label
                                                         );
 PROCEDURE  Goto (
                      Attar  :  CgBase.Label
                                                         );
 PROCEDURE  SwitchL (
                      Atmode  :  CgBase.Mode;
                      Atlwb  :  LONGINT;
                      Atupb  :  LONGINT;
                      AtCaseLabels  :  CgBase.LabelList;
                      AtDefaultLabel  :  CgBase.Label
                      ;  op1  : Data
                                                         );
 PROCEDURE  TestAndBranch (
                      Atcond  :  BOOLEAN;
                      Attar  :  CgBase.Label
                      ;  op1  : Data
                                                         );
 PROCEDURE  FixedCompareAndBranch (
                      Atmode  :  CgBase.Mode;
                      Atrel  :  CgBase.Relation;
                      Attar  :  CgBase.Label
                      ;  op1  : Data
                      ;  op2  : Data
                                                         );
 PROCEDURE  FloatCompareAndBranch (
                      Atmode  :  CgBase.Mode;
                      Atrel  :  CgBase.Relation;
                      Attar  :  CgBase.Label
                      ;  op1  : Data
                      ;  op2  : Data
                                                         );
 PROCEDURE  SetCompareAndBranch (
                      Atrel  :  CgBase.Relation;
                      Attar  :  CgBase.Label
                      ;  op1  : Data
                      ;  op2  : Data
                                                         );
 PROCEDURE  PointerCompareAndBranch (
                      Atrel  :  CgBase.Relation;
                      Attar  :  CgBase.Label
                      ;  op1  : Data
                      ;  op2  : Data
                                                         );
 PROCEDURE  TestMembershipAndBranch (
                      AtElemMode  :  CgBase.Mode;
                      Atcond  :  BOOLEAN;
                      Attar  :  CgBase.Label
                      ;  op1  : Data
                      ;  op2  : Data
                                                         );
 PROCEDURE  TestMembershipAndBranchL (
                      AtElemMode  :  CgBase.Mode;
                      Atcond  :  BOOLEAN;
                      Attar  :  CgBase.Label
                      ;  op1  : Data
                      ;  op2  : Data
                                                         );
 PROCEDURE  TestOddAndBranch (
                      Atmode  :  CgBase.Mode;
                      Atcond  :  BOOLEAN;
                      Attar  :  CgBase.Label
                      ;  op1  : Data
                                                         );
 PROCEDURE  PreCall (
                      AtParamSize  :  LONGINT
                                                         );
 PROCEDURE  PassValue (
                      Atmode  :  CgBase.Mode;
                      Atoffset  :  LONGINT
                      ;  op1  : Data
                                                         );
 PROCEDURE  PassLongValue (
                      Atsize  :  LONGINT;
                      Atoffset  :  LONGINT
                      ;  op1  : Address
                                                         );
 PROCEDURE  PassOpenArrayValue (
                      Atoffset  :  LONGINT
                      ;  op1  : Address
                                                         );
 PROCEDURE  PassStringValue (
                      AtSourceLength  :  LONGINT;
                      AtTargetLength  :  LONGINT;
                      Atoffset  :  LONGINT
                      ;  op1  : Address
                                                         );
 PROCEDURE  PassAddress (
                      Atoffset  :  LONGINT
                      ;  op1  : Address
                                                         );
 PROCEDURE  Call (
                         op1  : Data
                                                         );
 PROCEDURE  SysCall (
                      Atsysproc  :  CgBase.SysProc
                                                         );
 PROCEDURE  PostCall (
                      Atparamsize  :  LONGINT
                                                         );
 PROCEDURE  FunctionResult (
                      Atmode  :  CgBase.Mode
                      ;  VAR result : Data);
 PROCEDURE  Nil (
                         VAR result : Arglist);
 PROCEDURE  SkipArglist (
                         op1  : Arglist
                                                         );
 PROCEDURE  Pass (
                      Atmode  :  CgBase.Mode;
                      Atoffset  :  LONGINT
                      ;  op1  : Arglist
                      ;  op2  : Data
                      ;  VAR result : Arglist);
 PROCEDURE  PassLong (
                      Atsize  :  LONGINT;
                      Atoffset  :  LONGINT;
                      Atspace  :  LONGINT
                      ;  op1  : Arglist
                      ;  op2  : Data
                      ;  VAR result : Arglist);
 PROCEDURE  ProcedureCall (
                      Atparamsize  :  LONGINT
                      ;  op1  : Arglist
                      ;  op2  : Data
                                                         );
 PROCEDURE  FunctionCall (
                      Atparamsize  :  LONGINT;
                      Atmode  :  CgBase.Mode
                      ;  op1  : Arglist
                      ;  op2  : Data
                      ;  VAR result : Data);
 PROCEDURE  RTSCall (
                      Atparamsize  :  LONGINT;
                      Atsysproc  :  CgBase.SysProc
                      ;  op1  : Arglist
                                                         );
 PROCEDURE  BeginProcedure (
                      Atindex  :  CgBase.ProcIndex;
                      Atlevel  :  SHORTCARD;
                      AtFrameSize  :  LONGINT;
                      AtParamSize  :  LONGINT
                                                         );
 PROCEDURE  CopyOpenArray (
                      AtDataOffset  :  LONGINT;
                      AtHighOffset  :  LONGINT;
                      Atelemsize  :  LONGINT
                                                         );
 PROCEDURE  Return (
                      AtParamSize  :  LONGINT
                                                         );
 PROCEDURE  ReturnValueL (
                      Atmode  :  CgBase.Mode
                      ;  op1  : Data
                                                         );
 PROCEDURE  ReturnValue (
                      Atmode  :  CgBase.Mode;
                      AtParamSize  :  LONGINT
                      ;  op1  : Data
                                                         );
 PROCEDURE  EndProcedure (
                                                         );
 PROCEDURE  EndModule (
                                                         );
 PROCEDURE  Mark (
                      Atline  :  SHORTCARD;
                      Atcol  :  SHORTCARD
                                                         );
 
 
 END CgMobil.
