Google
 

Trailing-Edge - PDP-10 Archives - BB-J939D-BM - documents/bliss.doc
There are 15 other files named bliss.doc in the archive. Click here to see a list.


            BLISS-36 Release 4 For TOPS-20: Release Notes
                             10-Sep-1983
BLISS-36 Release 4 For TOPS-20: Release Notes                   Page 2


                                   CONTENTS

        1       INTRODUCTION . . . . . . . . . . . . . . . . . . . . 3
        2       NEW FEATURES . . . . . . . . . . . . . . . . . . . . 3
        3       COMMON CHANGES . . . . . . . . . . . . . . . . . . . 3
        3.1       New /CROSS-REFERENCE Qualifier . . . . . . . . . . 3
        3.2       New /CHECK Qualifier . . . . . . . . . . . . . . . 3
        3.3       INITIAL Or PRESET On Local Storage . . . . . . . . 3
        3.4       New Lexical Function %QUOTENAME  . . . . . . . . . 4
        3.5       NULLPARAMETER Change . . . . . . . . . . . . . . . 4
        3.6       BIND To CTCE Permitted In LIBRARY Precompilation . 4
        3.7       FIELD Names Permitted In Field-component . . . . . 4
        3.8       Changes To Listing Format  . . . . . . . . . . . . 4
        4       BLISS-36 SPECIFIC CHANGES  . . . . . . . . . . . . . 5
        4.1       Extended Addressing Capability . . . . . . . . . . 5
        4.2       Linkage-Type Expansion . . . . . . . . . . . . . . 5
        5       CHANGES TO UNSUPPORTED TOOLS . . . . . . . . . . . . 5
        5.1       MONINT . . . . . . . . . . . . . . . . . . . . . . 6
        5.2       BLSCRF - BLISS Cross Referencer  . . . . . . . . . 6
        5.3       PRETTY - BLISS Source Formatter  . . . . . . . . . 6
        6       CHANGES TO UNSUPPORTED SOFTWARE  . . . . . . . . . . 6
        6.1       XPORT - Transportable BLISS Programming Tools  . . 6
        6.2       SIX12 - BLISS Symbolic Debugger  . . . . . . . . . 6
        6.3       TENDEF.R36 System Interface File . . . . . . . . . 7
        7       RESTRICTIONS . . . . . . . . . . . . . . . . . . . . 7
        8       KNOWN BUGS . . . . . . . . . . . . . . . . . . . . . 9
        9       FOR FURTHER HELP . . . . . . . . . . . . . . . . . . 9
        10      COMPONENTS . . . . . . . . . . . . . . . . . . . .  10
BLISS-36 Release 4 For TOPS-20: Release Notes                   Page 3


1  INTRODUCTION

This document provides information pertaining to BLISS-36 Version 4.



2  NEW FEATURES

Version 4 of the BLISS language is upward compatible with version 3.




3  COMMON CHANGES

This section discusses new language and compiler  features  which  are
common to BLISS-32, BLISS-36 and BLISS-16.



3.1  New /CROSS-REFERENCE Qualifier

A new command qualifier, /CROSS-REFERENCE, may be specified to  obtain
a complete symbol cross-reference in the listing file.



3.2  New /CHECK Qualifier

BLISS will now optionally detect certain language usage that, although
technically  permitted,  is likely to be a user error.  The conditions
detected are:

      o  CHECK(INITIAL) -  Use of an uninitialized LOCAL,  STACKLOCAL,
         and REGISTER data segment.

      o  CHECK(REDECLAR) -  Redeclaration of a name in a nested scope.

      o  CHECK(OPTIMIZE) -   Code  and  boolean  tests  that  can   be
         eliminated as an optimization because the code is unreachable
         or the test can be determined at compile-time.

      o  CHECK(FIELD) -  Use of a field name in a structure access  to
         a data segment that has no field-attribute.




3.3  INITIAL Or PRESET On Local Storage

The restriction that the initial-values  must  be  link-time  constant
expressions  has  been  removed  for  LOCAL,  STACKLOCAL, and REGISTER
declarations.
BLISS-36 Release 4 For TOPS-20: Release Notes                   Page 4


3.4  New Lexical Function %QUOTENAME

The %QUOTENAME permits one to construct the name of a  macro  as  with
%NAME,  but  the  name  is  quoted as with %QUOTE and the macro is not
expanded.  Thus one can do the following:

     MACRO %NAME( 'A_', %NUMBER(COUNT) ) = ...

     %IF %DECLARED( %QUOTENAME( 'A_', %NUMBER(COUNT) ) ) %THEN ...

Using just %NAME, there is no way to construct the macro name  without
also causing the macro to expand.



3.5  NULLPARAMETER Change

The   actual-parameter   to   be   tested   by    the    NULLPARAMETER
linkage-function  may  now be specified by supplying the corresponding
formal-parameter name as parameter to NULLPARAMETER.  It may  also  be
specified as previously by number.



3.6  BIND To CTCE Permitted In LIBRARY Precompilation

BIND  and  BIND  ROUTINE  declarations  are   permitted   in   LIBRARY
precompilation  with  the  restriction  that  the data-name-value be a
compile-time constant expression.  This feature will be most useful in
BLISS-16  and  BLISS-36,  where it can be used to include BIND ROUTINE
declarations using the EMT and JSYS linkage types in LIBRARY files.



3.7  FIELD Names Permitted In Field-component

A FIELD name may now be used as a field-component in  the  declaration
of another field-name.  The following is an example of this usage.

     FIELD A = [1, 0, %BPVAL, 0];

     FIELD B = [A];



3.8  Changes To Listing Format

Several minor changes were made to the listing format.   For  example,
the   BEGIN-END   block   nesting  depth  is  now  printed  after  the
line-number, and compilation speed in terms of both lines and  lexemes
per minute is printed at the end of the compilation.
BLISS-36 Release 4 For TOPS-20: Release Notes                   Page 5


4  BLISS-36 SPECIFIC CHANGES

4.1  Extended Addressing Capability

An extended addressing capability has  been  added  for  TOPS-20.   To
accomodate  this  feature  a  new  environment  switch,  /EXTENDED, is
specified to obtain partial support of the feature for the KL10  Model
B.      The     new     switch     also     carries     an     option,
/EXTENDED:SECTION-INDEPENDENT, which allows code to be  generated  for
any section.



4.2  Linkage-Type Expansion

Linkage types have been expanded to include PS_INTERRUPT.   A  routine
declared with PS_INTERRUPT has the general form:
     linkage INTERRUPT = ps_interrupt;

     routine PSI : INTERRUPT=
     begin
     ...
     end;

For TOPS-20 the compiled code is:

PSI: PUSH     SP, [PSI36%]  ;Fake return PC to keep
                            ;stack adjusted
     PUSH     SP, FP        ;[OPT] Setup frame
     MOVE     FP, SP        ;[OPT]
     PUSH     SP, ...       ;[OPT] Save necessary ACs
     ...
     POP      SP, ...       ;[OPT] Restore saved ACs
     POP      SP, FP        ;[OPT] Recover old FP
     ADJSP    SP, 1         ;Remove fake return PC
     DEBRK%                 ;and return to monitor

Notice that the expanded code looks  exactly  like  a  PUSHJ  routine,
except  that  the  called  routine  places  a dummy PC on the stack at
routine entry.  At routine exit, the dummy PC is removed and a  DEBRK%
JSYS  is  executed.   The  environment  is  the  same for TOPS-10, the
exception being that a DEBRK.  UUO is used to exit the routine.



5  CHANGES TO UNSUPPORTED TOOLS


                                 NOTE

        This section describes  components  of  the  BLISS  V4
        release  which  are  NOT  supported by Digital.  These
        items are provided only as a service to our users.

See the BLISS-36 User's Guide for information concerning these tools.
BLISS-36 Release 4 For TOPS-20: Release Notes                   Page 6


5.1  MONINT

The MONINT utility has been enhanced to support EXTERNAL names.  If  a
name to be declared external contains characters that are not legal in
Bliss identifiers (i.e.  dollar sign, or period), then  a  combination
of external and macro declarations is generated.  For example:

     EXTERNAL %NAME('.JBDAT');
     MACRO $JBDAT = %NAME('.JBDAT') %;

Note that if a program already contains such macros, then these macros
must be deleted from the program before it will compile.



5.2  BLSCRF - BLISS Cross Referencer

The BLSCRF cross-reference utility is  no  longer  provided  in  BLISS
releases.   It has been superseded by the new cross-reference facility
(see /CROSS-REFERENCE above).



5.3  PRETTY - BLISS Source Formatter

PRETTY is no longer  provided  in  BLISS  releases.   It  will  become
available through DECUS.



6  CHANGES TO UNSUPPORTED SOFTWARE

As a courtesy to our users, some  unsupported  development  tools  are
shipped with the BLISS distribution.



6.1  XPORT - Transportable BLISS Programming Tools

A maintenance release of XPORT appears in the version 3 release.



6.2  SIX12 - BLISS Symbolic Debugger

SIX12 has been upgraded to include  many  new  features  developed  by
Carnegie-Mellon  University  and  has  been re-written in BLISS-36 and
extensively commented.  This should make it much easier for  users  to
tailor the debugger to their own needs.

Included in this release is  a  machine-readable  manual  -  SIX12.MEM
which serves as a reference manual for the debugger.
BLISS-36 Release 4 For TOPS-20: Release Notes                   Page 7


6.3  TENDEF.R36 System Interface File

Two   STRUCTUREs   have   been   defined   in   TENDEF   to   simplify
systems-programming  with  the  MONSYM  and  UUOSYM system interfaces.
These are MONWORD and MONBLOCK data structures.   For  information  on
how  to  use  this,  examine TENDEF.R36 or consult the BLISS-36 User's
Guide, (Tools, Libraries and System Interfaces, Chapter 9).



7  RESTRICTIONS

This section summarizes  restrictions  with  the  V4  release.   Where
possible, temporary solutions are described.




PROBLEM:  The character handling functions that are implemented  using
          the  hardware  EXTEND  instruction  may not operate properly
          when the /EXTENDED qualifier is used.  These functions are:
           -  CH$MOVE and CH$COPY
           -  CH$FILL
           -  CH$EQL, CH$NEQ, CH$LEQ, etc.
           -  CH$COMPARE
           -  CH$TRANSLATE


SOLUTION: This restriction will be removed by a future release of  the
          TOPS-20 KL microcode.




PROBLEM:  The following code fragment

                d = 0;
                .....
                WHILE .d NEQ 0 DO
                    BEGIN
                    ....
                    x = 66 / .d;        ! Assume "d" never written
                    ...
                    IF .y THEN EXITLOOP
                    END

          will cause a zero-divide exception at  execution  time  when
          compiled  using  normal optimization.  The compiler believes
          that the expression "66/.d" is loop invariant and moves  the
          computation out of the loop.
BLISS-36 Release 4 For TOPS-20: Release Notes                   Page 8


SOLUTION: This is a restriction in V4.  In this particular  case,  the
          expression could be rewritten as:

                WHILE 1 DO
                    BEGIN
                    .....
                    IF .d EQL 0 THEN EXITLOOP;
                    ....
                    x = 66 / .d;
                    .....
                    END;

          In this case, the expression cannot  be  moved  out  of  the
          loop.




PROBLEM:  Incorrect code generated for structure  definitions  of  the
          form:

                STRUCTURE BAD[I,P,S]= [%UPVAL]
                    (IF .I THEN BAD ELSE BAD + .BAD<16,16>)<P,S>;

                OWN X: BAD[];
                LOCAL T;

                T = .X[.T,0,12];

          "X" is loaded into a register in the  THEN-branch,  but  the
          ELSE-branch uses the register without loading it.

SOLUTION: This is the result of a design flaw  in  the  way  structure
          references  are  expanded.  BLISS semantics guarantee that a
          structure actual-parameter is evaluated only once.  This  is
          implemented  by treating the first occurrence of a structure
          formal  as  if  it  was  a  BIND  declaration.   The   other
          occurrences  of  the structure formal are then treated as if
          they were uses of the "imaginary" bind-name.  This choice of
          implementation  fails  when  the  first  occurrence  of  the
          structure formal is in conditional flow!  The problem can be
          avoided by insuring that the first occurrence of each formal
          is outside  of  conditional  flow.   The  example  structure
          should be written as:

                STRUCTURE GOOD[I,P,S] = [%UPVAL]
                    (GOOD; IF .I THEN GOOD ELSE GOOD+.GOOD<16,16>)<P,S>;

          Note that the  "structure-name"  is  the  zero-th  structure
          formal  parameter.  The formals "I", "P" and "S" are already
          outside  of  conditional  flow,  so   they   are   processed
          correctly.   This  change  will  cause  the  compiler to use
          slightly  more  memory,  but  the  resulting  code  will  be
          correct.   There  should  be  no  reduction  in optimization
          either.
BLISS-36 Release 4 For TOPS-20: Release Notes                   Page 9


          Be aware that there is no problem when the conditional  flow
          is  constant-folded  at  compile-time,  or  when there is no
          conditional flow in the structure body.







8  KNOWN BUGS

There are no known problems with the TOPS-20 release.



9  FOR FURTHER HELP

     A number of sources of additional help are available.

      o  For information on command interface -- "HLP:BLISS.HLP"  Just
         type "HELP BLISS" to the monitor.

      o  Language information -- "BLISS  Language  Guide":   Documents
         the  BLISS  language.   The  Third  Edition,  which documents
         version  3  of  BLISS  is  available  as  SDC  order   number
         AA-H275C-TK.

      o  Compiler information -- "BLISS-36 User's  Guide":   Describes
         use  of  the  BLISS-36  compiler,  some  available tools, and
         machine  specific  features.   The   Third   Edition,   which
         documents  version  3  of  BLISS-36 is available as SDC order
         number AA-H712C-TK.

      o  Syntax summary -- "BLISS Pocket  Guide":   Available  as  SDC
         order number AV-H289C-TK.

      o  BLISS course -- A course in the BLISS programming language is
         available  from  DEC.  Your system manager may obtain further
         information by contacting DEC Educational Services.

      o  BLISS-36 debugger (SIX12):  "HLP:SIX12.HLP":  Just type "HELP
         SIX12" to the monitor.

      o  Simple  terminal  I/O:   "HLP:TUTIO.HLP":   Just  type  "HELP
         TUTIO" to the EXEC.

      o  Conversion   of   BLISS-10   programs    to    BLISS-36    --
         "HLP:CVT10.HLP":   Just  type  "HELP CVT10" to the EXEC.  For
         greater detail see the file "DOC:CVT10.DOC".

      o  Monitor interfaces -- "DOC:MONINT.DOC".
BLISS-36 Release 4 For TOPS-20: Release Notes                  Page 10


      o  Examining ".REL" files -- "HLP:DMPREL.HLP":  Just type  "HELP
         DMPREL" to the EXEC.




10  COMPONENTS

     Below is a list of the major components of the  BLISS-36  system.
Full  support  is  available  only for the BLISS compiler itself.  The
other components are unsupported but will be maintained to the  extent
our resources allow.

      o  BLISS -- The BLISS-36 compiler itself.

      o  EZIO and TUTIO -- I/O utilities for BLISS-36.

      o  Monitor Interfaces -- definitions necessary  for  interfacing
         with the TOPS-10 and TOPS-20 monitors.

      o  CVT10 -- BLISS-10 to BLISS-36 conversion program.

      o  SIX12 -- High level debugger for BLISS-36.

      o  XPORT -- Transportable BLISS programming tools