VAX BLISS-32 Implementation Language, Version 4.6		SPD 25.12.18

DESCRIPTION

BLISS-32 is a high-level, systems implementation language for VAX systems. 
BLISS-32 supports development of modular software according to structured 
programming concepts by providing an advanced set of language features. 
BLISS-32 provides access to most of the hardware features of the VAX 
systems to facilitate programming of real-time/hardware dependent 
applications. 

BLISS-32 is intended for the development of operating systems, compilers, 
run-time system components, data base file systems, communications 
software, utilities, and so forth, for use on a VAX hardware system. 

The BLISS-32 compiler runs in native mode under the VMS Operating System. 
It translates BLISS-32 source programs into relocatable object modules 
which can be linked for execution.  BLISS-32  compiled code is optimized 
for execution efficiency.

The following features of BLISS-32, sometimes described in VAX or VMS 
terminology, are machine-independent concepts.  Collectively, this set of 
common features is known as ``Common  BLISS'' and can be used in a 
transportable manner to develop programs for more than one computer 
architecture.

Common BLISS Features

oo   Modules for modularity and convenient development are separately 
    compiled.  Object modules are relocatable and can be linked with object 
    modules produced by the VAX MACRO assembler or other native mode 
    languages.

oo   BLISS-32 provides expressions for describing the actions to be 
    performed and declarations for allocating, describing and initializing 
    data, defining macros and literals, and so forth.

oo   ``Type-free'' -  All data is manipulated as longwords of 32 bits. 
    Interpretation of data is provided by language operators.

oo   Operators provide a set of operations for integer and floating point 
    arithmetic, comparison, maximization and minimization of signed 
    integer, unsigned integer and address values, and Boolean operations.

oo   Field references - Allow values to be retrieved from or assigned to any 
    contiguous field of 1 to 32 bits located anywhere in the VAX virtual 
    address space.

oo   Character sequence functions - Provide efficient run-time manipulation 
    of character data.  Operations include moving, concatenating, 
    comparing, and translating character sequences, as well as searching 
    for particular characters or substrings of characters.

oo   IF, CASE, SELECT, and SELECTONE  -  Allow the choice of an expression 
    or group of expressions to be executed based on programmed tests.

oo   DO, WHILE, and UNTIL - Allow general loops that cycle as long as a 
    programmed test is satisfied.  The test can be made either at the 
    beginning or the end of the loop.

oo   INCR and DECR - Allow counted loops that execute a computed number of 
    times under control of a loop variable.

oo   LEAVE - Allows both early termination of the processing of a named 
    block and continuation after the named block.  LEAVE can be considered  
    a restricted form of forward-only GOTO since there is no general GOTO 
    in BLISS-32.

oo   OWN  and  GLOBAL  - Provide static storage allocation; GLOBAL names are 
    made available to the Linker and resolve EXTERNAL data declarations in 
    other modules.

oo   LOCAL, STACKLOCAL, and  REGISTER  -  Allow dynamic stack-like 
    allocation using either the execution stack or the general registers.

oo   INITIAL and PRESET provide for initialization of static and dynamic 
    storage.

oo   STRUCTURE - Allows programmed definition of arbitrary data structures 
    in terms of an accessing algorithm for locating elements of a 
    structure. Built-in declarations for VECTORs, BLOCKs, BITVECTORs, and  
    BLOCKVECTORs provide for commonly-needed structures.

oo   ROUTINE - Provides subroutines or procedures in BLISS-32.   Routines 
    are recursive, re-entrant and can be linked in sharable images for use 
    by multiple processes.

oo   REQUIRE  -  Allows source text from other files to be automatically 
    included in the module being compiled.

oo   LIBRARY -  Allows special compiler-produced binary declaration files to 
    be included in the module being compiled.  The effect is substantially 
    the same as REQUIRE however, it is more efficient because a restricted 
    set of declarations can be precompiled into internal form.

oo   MACRO  and  KEYWORDMACRO  -  Allow  compile-time definition of both 
    positional and  keyword oriented macros.  Macro definition and 
    replacement are in terms of source lexical units lexemes (atoms, 
    tokens) rather than character text.  Macro calls and macro  
    declarations can be nested and recursive.

oo   %IF, %THEN, %ELSE, and %FI - Allow conditional compilation of BLISS 
    source depending on programmed, compile-time tests.  These can be used 
    to control expansion of macros or in their own right.

oo   Lexical  Functions  - Allow a variety of compile-time operations such 
    as concatenation of strings, construction of names, testing properties 
    of macro parameters, testing compiler qualifiers, generating compiler 
    diagnostic messages, and controlling macro expansion.

The following features  of BLISS-32 are specialized for use on VAX systems. 
These features provide a precise means to tailor BLISS-32 programs to the 
special capabilities of the VAX and VMS environment. 

oo   LINKAGE - Allows definition of specialized calling sequences for time 
    critical or unusual applications.   Options allow for: use of 
    CALLS/CALLG/RET or JSB/BSB/RSB type call and return instructions, for 
    passing parameters in VAX general registers or in parameter blocks, 
    controlling the preservation and use of registers by a routine, and the 
    sharing of registers across a set of routines as high-speed, common 
    storage.   Built-in linkage declarations for BLISS and FORTRAN fully 
    support the VAX calling sequence conventions.

oo   PSECT - Allows use of link-time program sections for efficient use of 
    the virtual address space.  By default, generated code sections are 
    position independent.

oo   BUILTIN - Allows use of VAX machine-specific functions for access to 
    VAX features not otherwise provided by the BLISS-32 language.  
    Machine-specific functions generally correspond to VAX-11 instructions 
    such as: ADAWI, BISPSW, CRC, HALT, INDEX, MTPR, PROBER, REMQUE, and so 
    forth. Over 80 such functions are provided.

oo   ENABLE, together with SIGNAL, SIGNAL_STOP, and SETUNWIND functions - 
    allow use of the VMS condition handling and error message reporting 
    mechanisms.

As a native-mode language, BLISS-32 is integrated into the VAX Common 
Language Environment.  This integration provides VAX BLISS-32 users  with:

oo   Support for VAX interlanguage calling standard

oo   Access to all VMS system services 

oo   Access to the facilities of the VAX Symbolic Debugger

oo   VAX Language-Sensitive Editor support

oo   VAX Source Code Analyzer support

oo   Callable interfaces to the VAX Common Run-time Library

oo   Callable interfaces to VAX utilities such as SORT and optional 
    products (for example, VAX DATATRIEVE)

The BLISS-32 compiler performs global and local optimization to produce 
efficient and compact generated code.  Each routine definition is treated 
as a complete unit in compiling the code for that routine.  While industry 
terminology varies, the following generally characterizes the optimizations 
employed: common subexpression elimination, removal of loop invariants, 
constant folding, block register allocation, peephole replacement, test 
instruction elimination, jump verses branch instruction resolution, branch 
chaining, and cross-jumping. 

The compiler will optionally check for certain language usage that, while 
technically correct, may be a coding error.

The BLISS-32 compiler optionally produces a  listing  file  that  shows the 
source  text  compiled and the generated code in a format that closely 
resembles a VAX MACRO assembly listing.  Multiple listing options allow 
selective  inclusion or exclusion of source generated code, use of source 
names in the listing in place of machine register names (where feasible), 
macro expansion and tracing information, and use of names from library 
files.

A detailed symbol cross-reference is optionally included in the listing.

HARDWARE REQUIREMENTS

VAX, MicroVAX or VAXstation configuration as specified in the System 
Support Addendum (SSA 25.12.18-x).

BLISS-32 compiler performance varies with the virtual memory working set 
for which it is allowed.  In typical:

oo   With  large-scale compilation of complex programs, a working set 
    allocation of over 400 pages (200K bytes) can be desirable for 
    efficient system utilization.

oo   In an environment where only a single BLISS compilation occurs at any 
    time, a system configuration of two megabytes of memory is required.

oo   In a multi-user environment, where several concurrent compilations 
    occur, a minimum of two megabytes is recommended per simultaneous 
    compilation.


SOFTWARE REQUIREMENTS*

For systems using terminals: (No DECwindows interface)

oo   VMS Operating System

For workstations running VWS:

oo   VMS Operating System

oo   VMS Workstation  Software

For workstations running DECwindows:

VMS Operating System (and necessary components of VMS DECwindows)

*   Refer to the System Support Addendum (SSA 25.12.18-x) for availability 
    and required versions of prerequisite/optional software and for 
    information regarding components of VMS DECwindows.

ORDERING INFORMATION

Software Licenses:  QL-106A*-**
Software Media: QA-106A*-**
Software Documentation: QA-106AA-GZ
Software Product Services: QT-106A*-**

*   Denotes variant fields.  For additional information on available 
    licenses, services and media, refer to the appropriate price book.

SOFTWARE LICENSING

This software is furnished under the licensing provisions of Digital 
Equipment Corporation's Standard Terms and Conditions.

For more information about Digital's licensing terms and policies, contact 
your local Digital office.

LICENSE MANAGEMENT FACILITY SUPPORT

This layered product supports the VMS License Management Facility.  License 
units for this product are allocated on a CPU-capacity basis.

For more information on the License  Management  Facility, refer to the VMS 
Operating System  Software  Product  Description (SPD 25.01.xx) or the 
License Management Facility manual of the VMS Operating System 
documentation set.

For more information about Digital's licensing terms and policies, contact 
your local Digital office.

SOFTWARE PRODUCT SERVICES

A variety of  service options are available.  For more information on these 
or other services, please contact your local Digital office.

SOFTWARE WARRANTY

Warranty for this software product is provided by Digital with the purchase 
of a license for the  product  as defined in the Software Warranty Addendum 
of this SPD.

(R)  The DIGITAL Logo is a registered trademark of Digital Equipment 
     Corporation.
(TM) DECwindows, MicroVAX, VMS, VAX, VAXstation, and VAXserver are trademarks 
     of Digital Equipment Corporation. 

