Files
Digital-Research-Source-Code/CPM OPERATING SYSTEMS/CPM 86/CONCURRENT/CCPM-86 2.0 SOURCE/asm86/brexpr.lst
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

264 lines
13 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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