PL/M-86 COMPILER    BRACKET EXPRESSION                                           10/5/81    PAGE   1


ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE BREXPR
OBJECT MODULE PLACED IN BREXPR.OBJ
COMPILER INVOKED BY:  :F0: BREXPR.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF



              $title ('BRACKET EXPRESSION')
   1          brexpr:

              /*

                modified  4/13/81  R. Silberstein

              */

              do;
              $include (:f1:macro.lit)
          =   $nolist
              $include (:f1:brexpr.x86)
          =   $nolist
              $include (:f1:ermod.ext)
          =   $nolist
              $include (:f1:exglob.ext)
          =   $nolist
PL/M-86 COMPILER    BRACKET EXPRESSION                                           10/5/81    PAGE   2


              $eject

              /* compute index expression within brackets */

  17   1      bracketexpr: proc(pt) byte public;
  18   2        dcl pt address,oper based pt operandstruc,
                   (firsttype,firstreg,lasttype,lastreg) byte,
                   baseregi lit '0',indexregi lit'1';

  19   2        regtyp: proc(pt1,pt2) byte;
  20   3          dcl (pt1,pt2) address,(typ based pt1,regi based pt2) byte;
  21   3          if (token.type=reg) and (token.descr=wrd) then$do
  23   4            typ=baseregi;
  24   4            regi=token.value;
  25   4            if (regi=rbp) or (regi=rbx) then return true;
  27   4            typ=indexregi;
  28   4            if (regi=rsi) or (regi=rdi) then return true;
                  end$if;
  31   3          return false;
  32   3        end regtyp;

  33   2        setoperflags: proc (pt1,pt2);
  34   3          dcl (pt1,pt2) address,(typ based pt1,regi based pt2) byte;
  35   3          if typ=indexregi then$do
  37   4            oper.sflag=oper.sflag or iregbit;
  38   4            IF REGI = RDI THEN OPER.BASEINDEX = OPER.BASEINDEX OR INDEXREGBIT;
                  else$do
  42   4            oper.sflag=oper.sflag or bregbit;
  43   4            IF REGI = RBP THEN OPER.BASEINDEX = OPER.BASEINDEX OR BASEREGBIT;
                  end$if;
  46   3        end setoperflags;

  47   2        if not regtyp(.firsttype,.firstreg) then return false;
  49   2        call setoperflags(.firsttype,.firstreg);
  50   2        call scan;
  51   2        if specialtoken('+') then$do
  53   3          call scan;
  54   3          if not regtyp(.lasttype,.lastreg) then return false;
  56   3          if firsttype=lasttype then return false;
  58   3          call setoperflags(.lasttype,.lastreg);
  59   3          call scan;
  60   3        end$if;
  61   2        if not specialtoken(rightbracket) then return false;
  63   2        call scan;
  64   2        if (oper.sflag and segmbit) = 0 then$do
  66   3          if oper.stype=number then$do
  68   4            oper.baseindex=oper.baseindex or nooverridebit;
  69   4          end$if;
                end$if;
  71   2        oper.stype=variable;
  72   2        return true;
  73   2      end bracketexpr;

  74   1      end$module brexpr;
PL/M-86 COMPILER    BRACKET EXPRESSION                                           10/5/81    PAGE   3


CROSS-REFERENCE LISTING
-----------------------


   DEFN  ADDR   SIZE  NAME, ATTRIBUTES, AND REFERENCES
  ----- ------ -----  --------------------------------


     16  0000H     1  ACCLEN . . . . . .    BYTE EXTERNAL(11)
     16  0000H    80  ACCUM. . . . . . .    BYTE ARRAY(80) EXTERNAL(12)
      2               ADDR . . . . . . .    LITERALLY        16   18 
     16  0008H     1  BASEINDEX. . . . .    BYTE MEMBER(OPERANDS)
     18  0008H     1  BASEINDEX. . . . .    BYTE MEMBER(OPER)          39   44   68 
      7               BASEREGBIT . . . .    LITERALLY        44 
      7               BASEREGCOUNT . . .    LITERALLY
     18               BASEREGI . . . . .    LITERALLY        23 
     17  0000H   148  BRACKETEXPR. . . .    PROCEDURE BYTE PUBLIC STACK=000AH
      7               BREGBIT. . . . . .    LITERALLY        42 
      7               BREGCOUNT. . . . .    LITERALLY
      1  0000H        BREXPR . . . . . .    PROCEDURE STACK=0000H
      4               BYT. . . . . . . .    LITERALLY
     16  0000H     2  CIP. . . . . . . .    WORD EXTERNAL(3)
      3               CODE . . . . . . .    LITERALLY
      2               CR . . . . . . . .    LITERALLY
     16  0000H     1  CSEGSPEC . . . . .    BYTE EXTERNAL(6)
     16  0000H     1  CSEGTYPE . . . . .    BYTE EXTERNAL(4)
     16  0000H     2  CSEGVALUE. . . . .    WORD EXTERNAL(5)
     16  0000H     2  CURDSEG. . . . . .    WORD EXTERNAL(8)
      2               DCL. . . . . . . .    LITERALLY
      3               DELETEDSYMB. . . .    LITERALLY
     16  0001H     1  DESCR. . . . . . .    BYTE MEMBER(TOKEN)         21 
      3               DOUBLEDEFINED. . .    LITERALLY
     16  0000H     1  DSPEC. . . . . . .    BYTE EXTERNAL(7)
      4               DWRD . . . . . . .    LITERALLY
      2               ELSEDO . . . . . .    LITERALLY        39 
      2               ENDCASE. . . . . .    LITERALLY
      2               ENDDO. . . . . . .    LITERALLY
      2               ENDFOREVER . . . .    LITERALLY
      2               ENDIF. . . . . . .    LITERALLY        29   44   69 
      2               ENDMODULE. . . . .    LITERALLY
      2               ENDOFFILE. . . . .    LITERALLY
      2               ENDPROC. . . . . .    LITERALLY
      2               ENDWHILE . . . . .    LITERALLY
     13  0000H        ERRMSG . . . . . .    PROCEDURE EXTERNAL(2) STACK=0000H
     13  0000H     1  ERRNO. . . . . . .    BYTE PARAMETER        14 
      2               FALSE. . . . . . .    LITERALLY        31   48   55   57   62 
     18  0003H     1  FIRSTREG . . . . .    BYTE        47   49 
     18  0002H     1  FIRSTTYPE. . . . .    BYTE        47   49   56 
      2               FOREVER. . . . . .    LITERALLY
      2               FORMFEED . . . . .    LITERALLY
      3               IDENT. . . . . . .    LITERALLY
      7               INDEXREGBIT. . . .    LITERALLY        39 
      7               INDEXREGCOUNT. . .    LITERALLY
     18               INDEXREGI. . . . .    LITERALLY        27   35 
      2               INIT . . . . . . .    LITERALLY
      7               IREGBIT. . . . . .    LITERALLY        37 
      7               IREGCOUNT. . . . .    LITERALLY
PL/M-86 COMPILER    BRACKET EXPRESSION                                           10/5/81    PAGE   4


      3               LAB. . . . . . . .    LITERALLY
     18  0005H     1  LASTREG. . . . . .    BYTE        54   58 
     18  0004H     1  LASTTYPE . . . . .    BYTE        54   56   58 
      6               LEFTBRACKET. . . .    LITERALLY
     16  0000H     2  LENGTH . . . . . .    WORD MEMBER(OPERANDS)
     18  0000H     2  LENGTH . . . . . .    WORD MEMBER(OPER)
      2               LF . . . . . . . .    LITERALLY
      2               LIT. . . . . . . .    LITERALLY         2    3    4    5    6    7   18
                                            
      3               NEGLECTED. . . . .    LITERALLY
     16  0000H     1  NEXTCH . . . . . .    BYTE EXTERNAL(10)
      4               NIL. . . . . . . .    LITERALLY
     16  0000H     1  NOOPER . . . . . .    BYTE EXTERNAL(13)
      7               NOOVERCOUNT. . . .    LITERALLY
      7               NOOVERRIDEBIT. . .    LITERALLY        68 
      3               NUMBER . . . . . .    LITERALLY        66 
      6               OAND . . . . . . .    LITERALLY
      6               OEQ. . . . . . . .    LITERALLY
     16  0006H     2  OFFSET . . . . . .    WORD MEMBER(OPERANDS)
     18  0006H     2  OFFSET . . . . . .    WORD MEMBER(OPER)
      6               OGE. . . . . . . .    LITERALLY
      6               OGT. . . . . . . .    LITERALLY
      6               OLAST. . . . . . .    LITERALLY
      6               OLE. . . . . . . .    LITERALLY
      6               OLENGTH. . . . . .    LITERALLY
      6               OLT. . . . . . . .    LITERALLY
      6               OMOD . . . . . . .    LITERALLY
      6               ONE. . . . . . . .    LITERALLY
      6               ONOT . . . . . . .    LITERALLY
      6               OOFFSET. . . . . .    LITERALLY
      6               OOR. . . . . . . .    LITERALLY
     18  0000H     9  OPER . . . . . . .    STRUCTURE BASED(PT)        37   39   42   44   64
                                              66   68   71 
     16  0000H    36  OPERANDS . . . . .    STRUCTURE ARRAY(4) EXTERNAL(14)
      7               OPERANDSTRUC . . .    LITERALLY        16   18 
      3               OPERATOR . . . . .    LITERALLY
      6               OPTR . . . . . . .    LITERALLY
      6               OSEG . . . . . . .    LITERALLY
      6               OSHL . . . . . . .    LITERALLY
      6               OSHORT . . . . . .    LITERALLY
      6               OSHR . . . . . . .    LITERALLY
      6               OTYPE. . . . . . .    LITERALLY
      6               OXOR . . . . . . .    LITERALLY
      2               PROC . . . . . . .    LITERALLY         8   10   13   17   19   33 
      3               PSEUDO . . . . . .    LITERALLY
     17  0000H     2  PT . . . . . . . .    WORD PARAMETER        18   37   39   42   44   64
                                              66   68   71 
     19  0006H     2  PT1. . . . . . . .    WORD PARAMETER AUTOMATIC        20   23   27 
     33  0006H     2  PT1. . . . . . . .    WORD PARAMETER AUTOMATIC        34   35 
     33  0004H     2  PT2. . . . . . . .    WORD PARAMETER AUTOMATIC        34   38   43 
     19  0004H     2  PT2. . . . . . . .    WORD PARAMETER AUTOMATIC        20   24   25   28
                                            
      5               RBP. . . . . . . .    LITERALLY        25   43 
      5               RBX. . . . . . . .    LITERALLY        25 
      5               RCS. . . . . . . .    LITERALLY
      5               RDI. . . . . . . .    LITERALLY        28   38 
      5               RDS. . . . . . . .    LITERALLY
PL/M-86 COMPILER    BRACKET EXPRESSION                                           10/5/81    PAGE   5


      2               REENT. . . . . . .    LITERALLY
      3               REG. . . . . . . .    LITERALLY        21 
     20  0000H     1  REGI . . . . . . .    BYTE BASED(PT2)       24   25   28 
     34  0000H     1  REGI . . . . . . .    BYTE BASED(PT2)       38   43 
     19  0094H    73  REGTYP . . . . . .    PROCEDURE BYTE STACK=0006H           47   54 
      5               RES. . . . . . . .    LITERALLY
      6               RIGHTBRACKET . . .    LITERALLY        61 
      5               RSI. . . . . . . .    LITERALLY        28 
      5               RSS. . . . . . . .    LITERALLY
      8  0000H        SCAN . . . . . . .    PROCEDURE EXTERNAL(0) STACK=0000H         50   53
                                              59   63 
      7               SEGMBIT. . . . . .    LITERALLY        64 
      7               SEGMCOUNT. . . . .    LITERALLY
     18  0004H     2  SEGMENT. . . . . .    WORD MEMBER(OPER)
     16  0004H     2  SEGMENT. . . . . .    WORD MEMBER(OPERANDS)
      7               SEGTYPEBIT . . . .    LITERALLY
      7               SEGTYPECOUNT . . .    LITERALLY
     33  00DDH    65  SETOPERFLAGS . . .    PROCEDURE STACK=0006H           49   58 
     18  0003H     1  SFLAG. . . . . . .    BYTE MEMBER(OPER)          37   42   64 
     16  0003H     1  SFLAG. . . . . . .    BYTE MEMBER(OPERANDS)
      2               SPACE. . . . . . .    LITERALLY
      3               SPEC . . . . . . .    LITERALLY
     10  0000H        SPECIALTOKEN . . .    PROCEDURE BYTE EXTERNAL(1) STACK=0000H         51
                                              61 
      3               STRING . . . . . .    LITERALLY
      2               STRUC. . . . . . .    LITERALLY        16   18 
     18  0002H     1  STYPE. . . . . . .    BYTE MEMBER(OPER)          66   71 
     16  0002H     1  STYPE. . . . . . .    BYTE MEMBER(OPERANDS)
      3               SYMBOL . . . . . .    LITERALLY
      2               TAB. . . . . . . .    LITERALLY
      2               THENDO . . . . . .    LITERALLY        21   35   51   64   66 
     10  0000H     1  TOK. . . . . . . .    BYTE PARAMETER        11 
     16  0000H     4  TOKEN. . . . . . .    STRUCTURE EXTERNAL(9)           21   24 
      2               TRUE . . . . . . .    LITERALLY        26   29   72 
     34  0000H     1  TYP. . . . . . . .    BYTE BASED(PT1)       35 
     20  0000H     1  TYP. . . . . . . .    BYTE BASED(PT1)       23   27 
     16  0000H     1  TYPE . . . . . . .    BYTE MEMBER(TOKEN)         21 
      7               TYPEBIT. . . . . .    LITERALLY
      7               TYPECOUNT. . . . .    LITERALLY
      3               UDEFSYMB . . . . .    LITERALLY
     16  0002H     2  VALUE. . . . . . .    WORD MEMBER(TOKEN)         24 
      3               VARIABLE . . . . .    LITERALLY        71 
      4               WRD. . . . . . . .    LITERALLY        21 



MODULE INFORMATION:

     CODE AREA SIZE     = 011EH    286D
     CONSTANT AREA SIZE = 0000H      0D
     VARIABLE AREA SIZE = 0006H      6D
     MAXIMUM STACK SIZE = 000AH     10D
     254 LINES READ
     0 PROGRAM ERROR(S)

END OF PL/M-86 COMPILATION
