         Edinburgh IMP77 Compiler - Version 8.4
    1 %recordformatspec STACKFM
		.Ltext0:
				.globl	ATYPE
				.bss
				.align 4
		ATYPE:
				.zero	4
				.globl	MEMBERFMTYPE
				.align 4
		MEMBERFMTYPE:
				.zero	4
				.globl	STACKFMTYPE
				.align 4
		STACKFMTYPE:
				.zero	4
				.globl	WITHFMTYPE
				.align 4
		WITHFMTYPE:
				.zero	4
		.Letext0:
    2
    3 %recordformat BOUNDFM(%c
    4   %integer LOWER,
    5   %integer UPPER,
    6   %integer MULT %C
    7 )
    8
    9 %recordformat AFM(%c
   10   %integer DIMENSION,
   11   %integer TOTALSIZE,
   12   %integer ZERODISPLACEMENT,
   13   %integer DV,
   14   %integer LOCALFRAME,
   15   %integer BASE,
   16   %record (BOUNDFM) %array BOUND (1:7) %C
   17 )
   18
   19 %constant %record (AFM) %name ATYPE == 0
   20
   21 %recordformat VARFM(%c
   22   %integer FLAGS,
   23   %byte %integer BASE,
   24   %byte %integer PRIM,
   25   %byte %integer TYPE,
   26   %byte %integer FORM,
   27   ( %c
   28     %long %real RVAR %C
   29   %or %c
   30     %integer DISP,
   31     ( %c
   32       %integer EXTRA %C
   33     %or %c
   34       %record (AFM) %name ADATA %C
   35     ) %c
   36   ),
   37   ( %c
   38     %integer FORMAT %C
   39   %or %c
   40     %integer SCALE %C
   41   ),
   42   %integer AREA %C
   43 )
   44
   45 %recordformat OLFM(%c
   46   %integer OPER,
   47   %record (STACKFM) %name LINK %C
   48 )
   49
   50 %recordformat XFM(%c
   51   %integer XSIZE,
   52   %record (STACKFM) %name INDEX %C
   53 )
   54
   55 %recordformat DATAFM(%c
   56   %record (VARFM) V,
   57   %integer VARNO,
   58   %record (VARFM) %name FV,
   59   ( %c
   60     %integer BIAS %C
   61   %or %c
   62     %byte %integer REG,
   63     %byte %integer LABEL %C
   64   ),
   65   %record (STACKFM) %name PARAMS,
   66   %record (STACKFM) %name RECORD,
   67   ( %c
   68     %integer OPER,
   69     %record (STACKFM) %name LINK %C
   70   %or %c
   71     %record (OLFM) OPLINK %C
   72   ),
   73   ( %c
   74     %integer XSIZE,
   75     %record (STACKFM) %name INDEX %C
   76   %or %c
   77     %record (XFM) X %C
   78   ) %c
   79 )
   80
   81 %recordformat MEMBERFM(%c
   82   %integer CONST,
   83   %integer ITEMS,
   84   %record (STACKFM) %name A,
   85   %record (STACKFM) %name B,
   86   %record (MEMBERFM) %name LINK %C
   87 )
   88
   89 %constant %record (MEMBERFM) %name MEMBERFMTYPE == 0
   90
   91 %recordformat STACKFM(%c
   92   %record (VARFM) V %C
   93 %or %c
   94   %record (DATAFM) DATA %C
   95 %or %c
   96   %integer FLAGS,
   97   %byte %integer BASE,
   98   %byte %integer PRIM,
   99   %byte %integer TYPE,
  100   %byte %integer FORM,
  101   ( %c
  102     %long %real RVAL %C
  103   %or %c
  104     %integer RHIGH,
  105     %integer RLOW %C
  106   %or %c
  107     ( %c
  108       %integer DISP,
  109       ( %c
  110         %integer EXTRA %C
  111       %or %c
  112         %record (AFM) %name ADATA %C
  113       ) %c
  114     ),
  115     ( %c
  116       %integer FORMAT %C
  117     %or %c
  118       %integer SCALE %C
  119     ),
  120     %integer AREA,
  121     %integer VARNO,
  122     ( %c
  123       %record (VARFM) %name FV %C
  124     %or %c
  125       %record (MEMBERFM) %name MEMBERS %C
  126     ),
  127     ( %c
  128       %integer BIAS %C
  129     %or %c
  130       %byte %integer REG,
  131       %byte %integer LABEL %C
  132     ),
  133     %record (STACKFM) %name PARAMS,
  134     %record (STACKFM) %name RECORD,
  135     ( %c
  136       %integer OPER,
  137       %record (STACKFM) %name LINK %C
  138     %or %c
  139       %record (OLFM) OPLINK %C
  140     ),
  141     ( %c
  142       %integer XSIZE,
  143       %record (STACKFM) %name INDEX %C
  144     %or %c
  145       %record (XFM) X %C
  146     ) %c
  147   ),
  148   %record (STACKFM) %name USING,
  149   %record (STACKFM) %name STACK %C
  150 )
  151
  152 %constant %record (STACKFM) %name STACKFMTYPE == 0
  153
  154 %recordformat WITHFM(%c
  155   %integer KEY,
  156   %record (DATAFM) DATA,
  157   %record (WITHFM) %name LINK %C
  158 )
  159
  160 %constant %record (WITHFM) %name WITHFMTYPE == 0
  161
  162 %recordformat WORKFM(%c
  163   %integer SIZE,
  164   %integer DISPLACEMENT,
  165   %integer VALIDITY %C
  166 )
  167
  168 %endoffile
   16 Statements compiled
