mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 18:04:07 +00:00
264 lines
13 KiB
Plaintext
264 lines
13 KiB
Plaintext
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
|