Google
 

Trailing-Edge - PDP-10 Archives - BB-H138D-BM - 5-1-documentation/macro.bwr
There are 20 other files named macro.bwr in the archive. Click here to see a list.


September 1979






























COPYRIGHT (C) 1976,1979 BY
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.


THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY  BE  USED
AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE
AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.   THIS
SOFTWARE  OR ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR
OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.  NO  TITLE  TO
AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.

THE INFORMATION  IN  THIS  SOFTWARE  IS  SUBJECT  TO  CHANGE
WITHOUT  NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
BY DIGITAL EQUIPMENT CORPORATION.

DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
OF  ITS  SOFTWARE  ON  EQUIPMENT  WHICH  IS  NOT SUPPLIED BY
DIGITAL.
                                                      Page 2


     This file contains last minute information and warnings
relevant  to  MACRO  V53A release.  All bug fixes discovered
since the software and  the  DOC  file  were  submitted  for
distribution  are  listed  in  here.   This  file  serves as
additional information to MCR53A.DOC.  Users should refer to
MCR53A.DOC  (especially, the known problems and deficiencies
section) for full information.


[SYMPTOM]

     When an assignment consists  of:   exteranl  "operator"
assignment  (  for  example:   X=B  +<N=N+1>-3  ) MACRO will
generate bad code.  In the above example X will  be  defined
as absolute zero instead of being polish.

[DIAGNOSIS]

     In the ANGLB  routines  when  MACRO  decides  that  the
statement  inside  the  angle  brackets is an assignment, it
"calls" ASSIG1.  However, at this point MACRO already has an
assignment and therefore has INASGN and EXTPNT set up.  When
the "call" is made to ASSIG1 from the ANGLB routines, ASSIG1
will  write  over  the  current values in INASGN and EXTPNT.
When MACRO returns to the ANGLB routines, INASGN and  EXTPNT
will  have different values ( i.e.  the values corresponding
to the assignment inside  the  angle  brackets  )  from  the
values of the original assignment.

[CURE]

     In ANGLB, save the values of INASGN and EXTPNT  on  the
stack  around  the  "call"  to  ASSIG1 and pop off the saved
values upon returning from ASSIG1.

[FILCOM]
File 1) DSKC:MCR53A.MAC[30,5456]        created: 1555 05-Sep-1979
File 2) DSKB:MC1153.MAC[30,5456]        created: 1609 05-Sep-1979
 
1)1     TITLE MACRO %53A(1152)  19-JUL-1979
1)      SUBTTL EDIT BY MCHC/JBC/EGM
1)      ;COPYRIGHT (C) 1968, 1979 BY
****
2)1     TITLE MACRO %53B(1153)  5-SEP-1979
2)      SUBTTL EDIT BY MCHC/JBC/EGM/MFB
2)      ;COPYRIGHT (C) 1968, 1979 BY
**************
1)1             VUPDATE==1              ;DEC UPDATE LEVEL
1)              VEDIT==1152             ;EDIT NUMBER
1)              VCUSTOM==0              ;NON-DEC UPDATE LEVEL
****
2)1             VUPDATE==2              ;DEC UPDATE LEVEL
2)              VEDIT==1153             ;EDIT NUMBER
2)              VCUSTOM==0              ;NON-DEC UPDATE LEVEL
**************
                                                      Page 3


1)4     ;*****END OF REVISION HISTORY*****
****
2)2     ;START OF VERSION 53B
2)      ;1153   (Q3465) FIX ASSIGNMENT OF: EXTERNAL "OPERATOR" ASSIGNMEN
        T
2)      ;               ( X=B##+<N=N+1>-2 ) TO GENERATE CORRECT CODE.
2)      ;*****END OF REVISION HISTORY*****
**************
1)27            CALL ASSIG1
1)              MOVE AC0,V
****
2)25    ;**; [1153] INSERT @ ANGLB7 + 3L        MFB     5-SEP-79
2)              PUSH P,INASGN           ;[1153] SAVE ORIGINAL VALUES OF
        INASGN
2)              PUSH P,EXTPNT           ;[1153] AND EXTPNT AROUND CALL T
        O ASSIG1
2)              CALL ASSIG1
2)      ;**; [1153] INSERT @ ANGLB7 + 4L        MFB     5-SEP-79
2)              POP P,EXTPNT            ;[1153] RESTORE THE VALUES OF EX
        TPNT
2)              POP P,INASGN            ;[1153] AND INASGN
2)              MOVE AC0,V
**************
                                                      Page 4


[SYMPTOM]

     Phase errors occur in literals when searching universal
files that contain Polish.

[DIAGNOSIS]

     MACRO does not generate Polish on PASS1 and, therefore,
does not expect to see any Polish.  During PASS1, MACRO will
try to collapse a literal even though  it  contains  Polish.
This is because there is no check to see if MACRO got to the
Polish handling routines during PASS1.  On  PASS2,  literals
containing  Polish  are not collapsed and this difference is
collapsing will cause phase errors.

[CURE]

     Insert a check in POLPOP in order to determine if MACRO
is  in  PASS1 and inside a literal, if so, set ERRF in ER so
the literal will not be collapsed.

[FILCOM]
File 1) DSKB:MC1153.MAC[30,5456]        created: 1459 06-Sep-1979
File 2) DSKC:MC1154.MAC[30,5456]        created: 1136 06-Sep-1979
 
1)1     TITLE MACRO %53B(1153)  5-SEP-1979
1)      SUBTTL EDIT BY MCHC/JBC/EGM/MFB
****
2)1     TITLE MACRO %53B(1154)  6-SEP-1979
2)      SUBTTL EDIT BY MCHC/JBC/EGM/MFB
**************
1)1             VEDIT==1153             ;EDIT NUMBER
1)              VCUSTOM==0              ;NON-DEC UPDATE LEVEL
****
2)1             VEDIT==1154             ;EDIT NUMBER
2)              VCUSTOM==0              ;NON-DEC UPDATE LEVEL
**************
1)4     ;*****END OF REVISION HISTORY*****
****
2)4     ;1154           FIX PHASE ERRORS IN LITERALS CAUSED BY FINDING P
        OLISH
2)      ;               IN UNIVERSAL FILES.
2)      ;*****END OF REVISION HISTORY*****
**************
1)38            JUMP2 POLPOP            ;[610] YES, OUTPUT IT IN PASS2
1)         >
****
2)38    ;**; [1154] CHANGE @ EVNUM + 14L        MFB     6-SEP-79
2)              JUMPA POLPOP            ;[1154][610] YES, OUTPUT IT IN P
        ASS2
2)         >
**************
1)44    POLPOP: CALL POLFRR             ;[636] SET UP FRR POLISH FLAGS
1)              SKIPE INBYTE            ;[1077] DOING BYTE?
****
                                                      Page 5


2)44    ;**; [1154] INSERT @ POLPOP     MFB     6-SEP-79
2)      POLPOP: JUMP1 [ SKIPE LITLVL    ;[1154] INSIDE A LITERAL?
2)                      TRO ER,ERRF     ;[1154] YES, PREVENT COLLAPSING
2)                      RET]            ;[1154]
2)              CALL POLFRR             ;[636] SET UP FRR POLISH FLAGS
2)              SKIPE INBYTE            ;[1077] DOING BYTE?
**************
                                                      Page 6


[SYMPTOM]

     MACRO gets confused when it is switching from  a  Macro
definition  to  a  relocatable  symbol definition in another
Psect.  The program will assemble  but  the  code  generated
will be wrong.

[DIAGNOSIS]

     In the expression evaluator, if  MACRO  finds  a  Macro
definition  and then successfully finds a relocatable symbol
definition  by  the  same  name  in   another   Psect,   the
inter-Psect  reference  bit  is  not  turned on in IO.  This
leads MACRO to believe that  it  found  the  symbol  in  the
current  Psect and will compute the relocatable value of the
symbol to be  relocatable  from  the  current  Psect  origin
value.  However, this is not correct.

[CURE]

     Insert a check at EVAS2 to check to see if  the  symbol
was  found  in  the  current  Psect.   If  was not, check to
relocation bits in ARG and if either are set  then  turn  on
the inter-Psect reference bit in IO ( i.e.  RSASSW ).

[FILCOM]
File 1) DSKB:MC1154.MAC[30,5456]        created: 0947 10-Sep-1979
File 2) DSKB:MCR53B.MAC[30,5456]        created: 0949 10-Sep-1979
 
1)1     TITLE MACRO %53B(1154)  6-SEP-1979
1)      SUBTTL EDIT BY MCHC/JBC/EGM/MFB
****
2)1     TITLE MACRO %53B(1155)  7-SEP-1979
2)      SUBTTL EDIT BY MCHC/JBC/EGM/MFB
**************
1)1             VEDIT==1154             ;EDIT NUMBER
1)              VCUSTOM==0              ;NON-DEC UPDATE LEVEL
****
2)1             VEDIT==1155             ;EDIT NUMBER
2)              VCUSTOM==0              ;NON-DEC UPDATE LEVEL
**************
1)4     ;*****END OF REVISION HISTORY*****
****
2)4     ;1155           SET INTER-PSECT REFERENCE BIT ON IN IO IF SWITCH
        ING FROM
2)      ;               MACRO TO SYMBOL AT EVAS3.
2)      ;*****END OF REVISION HISTORY*****
**************
1)36    EVAS2:  SKIPE .IFFLG            ;[1056] DOING .IF(N)?
****
2)36    ;**; [1155] INSERT @ EVAS3 + 6L MFB     7-SEP-79
2)              PUSH P,SX               ;[1155] SAVE SX ON STACK
2)              MOVE SX,SGNCUR          ;[1155] GET CURRENT PSECT NUMBER
2)              CAMN SX,SGWFND          ;[1155] SYMBOL FOUND IN CURRENT
        PSECT?
                                                      Page 7


2)              JRST EVAS3A             ;[1155] YES, CONTINUE
2)              TLNE ARG,LELF!RELF      ;[1155] NO, RELOCATION BITS ON?
2)              TLO IO,RSASSW           ;[1155] YES, SET INTER-PSECT REF
         BIT
2)      EVAS3A: POP P,SX                ;[1155] RESTORE SX
2)      EVAS2:  SKIPE .IFFLG            ;[1056] DOING .IF(N)?
**************