Digital Research
This commit is contained in:
2020-11-06 18:50:37 +01:00
parent 621ed8ccaf
commit 31738079c4
8481 changed files with 1888323 additions and 0 deletions

View File

@@ -0,0 +1,263 @@
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