BLISS-32 User Manual
 *HyperReader
  Next     Previous     Contents     Examples     Figures     Tables     Index     Close     Help  
CONTENTS

  Title Page

  Copyright Page

  Preface

  Summary of Technical Changes

  1      Operating Procedures
    1.1 Compiling a BLISS Module
      1.1.1      Command-Line Syntax
      1.1.2      Command-Line Semantics
    1.2 File Specifications
    1.3 Command-Line Qualifiers
      1.3.1      /CHECK Qualifier
        1.3.1.1      Syntax
        1.3.1.2      Defaults
        1.3.1.3      Semantics
      1.3.2      /CROSS_REFERENCE Qualifier
        1.3.2.1      Syntax
        1.3.2.2      Defaults
        1.3.2.3      Semantics
      1.3.3      General Qualifiers
        1.3.3.1      Syntax
        1.3.3.2      Defaults
        1.3.3.3      Semantics
        1.3.3.4      Discussion
      1.3.4      /MACHINE_CODE_LIST Qualifier
        1.3.4.1      Syntax
        1.3.4.2      Defaults
        1.3.4.3      Semantics
      1.3.5      /OPTIMIZE Qualifier
        1.3.5.1      Syntax
        1.3.5.2      Defaults
        1.3.5.3      Semantics
      1.3.6      Output Qualifiers
        1.3.6.1      Syntax
        1.3.6.2      Defaults
        1.3.6.3      Semantics
      1.3.7      /SOURCE_LIST Qualifier
        1.3.7.1      Syntax
        1.3.7.2      Defaults
        1.3.7.3      Semantics
      1.3.8      /TERMINAL Qualifier
        1.3.8.1      Syntax
        1.3.8.2      Defaults
        1.3.8.3      Semantics
      1.3.9      Qualifier Names Versus Switch Names
      1.3.10     Qualifiers and Default Settings
      1.3.11     Positive and Negative Forms of Qualifiers
      1.3.12     Abbreviations of Qualifier and Value Names

  2      Compiler Output
    2.1 Terminal Output
    2.2 Output Listing
      2.2.1      Listing Header
      2.2.2      Source Listing
      2.2.3      Object Listing
        2.2.3.1      Default Object Listing
        2.2.3.2      Assembler Input Listing
      2.2.4      Source Part Options
        2.2.4.1      Default Source Listing
        2.2.4.2      Listing with LIBRARY and REQUIRE Information
        2.2.4.3      Listing with Macro Expansions
        2.2.4.4      Listing with Macro Tracing
    2.3 Cross-Reference Listing
      2.3.1      Cross-Reference Header
      2.3.2      Cross-Reference Entries
      2.3.3      Output Listing with Cross-Reference Listing
    2.4 Compilation Summary
    2.5 Error Messages

  3      Linking, Executing, and Debugging
    3.1 Linking
      3.1.1      LINK Command Syntax
      3.1.2      LINK Command Semantics
    3.2 Executing a Linked Program
    3.3 Debugging
      3.3.1      Initialized Modes and Types
      3.3.2      Debugger Commands and Expression Syntax
      3.3.3      Operators in Arithmetic Expressions
      3.3.4      Special Characters in Address Expressions
        3.3.4.1      Current Location Symbol ( . )
        3.3.4.2      Last Value Displayed Symbol ( \ )
        3.3.4.3      Contents Operator ( . )
        3.3.4.4      Range Operator ( : )
        3.3.4.5      Default Next Location Value
      3.3.5      Field References
      3.3.6      Structure References
      3.3.7      REF Structure References
      3.3.8      Scope of Names
      3.3.9      Source-Line Debugging
      3.3.10     Effect of Compilation and Link-Time Qualifiers
      3.3.11     Debugger Command Summary

  4      Machine-Specific Functions
    4.1 ADAWI-Add Aligned Word Interlocked
    4.2 ADDD-Add D-Floating Operands
    4.3 ADDF-Add F-Floating Operands
    4.4 ADDG-Add G-Floating Operands
    4.5 ADDH-Add H-Floating Operands
    4.6 ADDM-Add Multiword Operands
    4.7 ASHP-Arithmetic Shift and Round Packed
    4.8 ASHQ-Arithmetic Shift Quad
    4.9 BICPSW-Bit Clear PSW
    4.10 BISPSW-Bit Set PSW
    4.11 BPT-Break Point Trap
    4.12 BUGL-Bugcheck with Long Operand
    4.13 BUGW-Bugcheck with Word Operand
    4.14 CALLG-Call with General Parameter List
    4.15 CHMx-Change Mode
    4.16 CMPC3-Compare Characters 3 Operand
    4.17 CMPC5-Compare Characters 5 Operand
    4.18 CMPD-Compare D-Floating Operands
    4.19 CMPF-Compare F-Floating Operands
    4.20 CMPG-Compare G-Floating Operands
    4.21 CMPH-Compare H-Floating Operands
    4.22 CMPM-Compare Multiword Operands
    4.23 CMPP-Compare Packed
    4.24 CRC-Cyclic Redundancy Check
    4.25 CVTDF-Convert D-Floating to F-Floating
    4.26 CVTDI-Convert D-Floating to Integer
    4.27 CVTDL-Convert D-Floating to Long
    4.28 CVTFD-Convert F-Floating to D-Floating
    4.29 CVTFG-Convert F-Floating to G-Floating
    4.30 CVTFH-Convert F-Floating to H-Floating
    4.31 CVTFI-Convert F-Floating to Integer
    4.32 CVTFL-Convert F-Floating to Long
    4.33 CVTGF-Convert G-Floating to F-Floating
    4.34 CVTGH-Convert G-Floating to H-Floating
    4.35 CVTGL-Convert G-Floating to Long
    4.36 CVTHF-Convert H-Floating to F-Floating
    4.37 CVTHG-Convert H-Floating to G-Floating
    4.38 CVTHL-Convert H-Floating to Long
    4.39 CVTID-Convert Integer to D-Floating
    4.40 CVTIF-Convert Integer to F-Floating
    4.41 CVTLD-Convert Long to D-Floating
    4.42 CVTLF-Convert Long to F-Floating
    4.43 CVTLH-Convert Long to H-Floating
    4.44 CVTLP-Convert Long to Packed
    4.45 CVTPL-Convert Packed to Long
    4.46 CVTPS-Convert Packed to Leading Separate Numeric
    4.47 CVTPT-Convert Packed to Trailing Numeric
    4.48 CVTRDL-Convert Rounded D-Floating to Long
    4.49 CVTRFL-Convert Rounded F-Floating to Long
    4.50 CVTRGL-Convert Rounded G-Floating to Long
    4.51 CVTRHL-Convert Rounded H-Floating to Long
    4.52 CVTSP-Convert Leading Separate to Packed
    4.53 CVTTP-Convert Trailing Numeric to Packed
    4.54 DIVD-Divide D-Floating Operands
    4.55 DIVF-Divide F-Floating Operands
    4.56 DIVG-Divide G-Floating Operands
    4.57 DIVH-Divide H-Floating Operands
    4.58 EDITPC-Edit Packed to Character
    4.59 EDIV-Extended-Precision Divide
    4.60 EMUL-Extended-Precision Multiply
    4.61 FFC and FFS-Find and Modify Operations
    4.62 HALT-Halt Processor
    4.63 INDEX-Index Calculation
    4.64 INSQHI and INSQTI-Insert Entry in Queue, Interlocked
    4.65 INSQUE-Insert Entry in Queue
    4.66 LOCC-Locate Character
    4.67 MATCHC-Match Characters
    4.68 MFPR-Move from Processor Register
    4.69 MOVC3-Move Character 3 Operand
    4.70 MOVC5-Move Character 5 Operand
    4.71 MOVP-Move Packed
    4.72 MOVPSL-Move from PSL
    4.73 MOVTC-Move Translated Characters
    4.74 MOVTUC-Move Translated Until Character
    4.75 MTPR-Move to Processor Register
    4.76 MULD-Multiply D-Floating Operands
    4.77 MULF-Multiply F-Floating Operands
    4.78 MULG-Multiply G-Floating Operands
    4.79 MULH-Multiply H-Floating Operands
    4.80 NOP-No Operation
    4.81 PROBER-Probe Read Accessibility
    4.82 PROBEW-Probe Write Accessibility
    4.83 REMQHI and REMQTI-Remove Entry From Queue, Interlocked
    4.84 REMQUE-Remove Entry from Queue
    4.85 ROT-Rotate a Value
    4.86 SCANC-Scan Characters
    4.87 SKPC-Skip Character
    4.88 SPANC-Span Characters
    4.89 SUBD-Subtract D-Floating Operands
    4.90 SUBF-Subtract F-Floating Operands
    4.91 SUBG-Subtract G-Floating Operands
    4.92 SUBH-Subtract H-Floating Operands
    4.93 SUBM-Subtract Multiword Operands
    4.94 TESTBITx-Test and Modify Operations
    4.95 XFC-Extended Function Call

  5      Programming Considerations
    5.1 Library and Require File Differences
    5.2 Frequent BLISS Coding Errors
      5.2.1      Missing Dots
      5.2.2      Valued and Nonvalued Routines
      5.2.3      Semicolons and Values of Blocks
      5.2.4      Complex Expressions Using AND, OR, and NOT
      5.2.5      Computed Routine Calls
      5.2.6      Signed and Unsigned Fields
      5.2.7      Complex Macros
      5.2.8      Missing Code
      5.2.9      Using the Built-In PC
      5.2.10     Indexed Loop Coding Error
    5.3 Linker Error Messages
    5.4 Obscure Error Messages
    5.5 Position-Independent Code Generation
    5.6 Advanced Use of BLISS Macros
      5.6.1      Advantageous Use of Machine Dependencies
      5.6.2      Using String Instructions
      5.6.3      Dealing with Enumeration Types
        5.6.3.1      The SET Data Type
        5.6.3.2      Creating a Set
        5.6.3.3      Placing Elements in Sets
        5.6.3.4      Membership in a Set

  6      Transportability Guidelines
    6.1 Introduction
    6.2 General Strategies
      6.2.1      Isolation
      6.2.2      Simplicity
    6.3 Tools
      6.3.1      Literals
        6.3.1.1      Predeclared Literals
        6.3.1.2      User-Defined Literals
      6.3.2      Macros and Conditional Compilation
      6.3.3      Module Switches
      6.3.4      Reserved Names
      6.3.5      REQUIRE and Library Files
      6.3.6      Routines
    6.4 Techniques for Writing Transportable Programs
      6.4.1      Allocation of Data
        6.4.1.1      Problem Origin
        6.4.1.2      Transportable Declarations
      6.4.2      Data Addresses
        6.4.2.1      Addresses and Address Calculations
        6.4.2.2      Relational Operators and Control Expressions
        6.4.2.3      BLISS-10 Addresses Versus BLISS-36 Addresses
      6.4.3      Data Character Sequences
        6.4.3.1      Quoted Strings Used as Numeric Values
        6.4.3.2      Quoted Strings Used as Character Strings
      6.4.4      PLITs and Initialization
        6.4.4.1      PLITs in General
        6.4.4.2      Scalar PLIT Items
        6.4.4.3      String Literal PLIT Items
        6.4.4.4      Initialization Example
        6.4.4.5      Initializing Packed Data
      6.4.5      Structures and Field Selectors
        6.4.5.1      Structures
        6.4.5.2      FLEX_VECTOR
        6.4.5.3      Field Selectors
        6.4.5.4      GEN_VECTOR
        6.4.5.5      Summary of Structures and Field Selectors

  7      Compiler Overview and Optimization Switches
    7.1 Compiler Phases
      7.1.1      Lexical and Syntactic Analysis Phase
      7.1.2      Flow Analysis Phase
        7.1.2.1      Knowing When a Value Changes
        7.1.2.2      Accounting for Changes
      7.1.3      Heuristic Phase
      7.1.4      Temporary Name Binding Phase
      7.1.5      Code Generation Phase
      7.1.6      Code Stream Optimization Phase
      7.1.7      Output File Production Phase
    7.2 Summary of Switch Effects

  8      Tools, Libraries, and System Interfaces
    8.1 VAX Source Code Analyzer (SCA)
    8.2 Tutorial Terminal Input/Output Package (TUTIO)
    8.3 VMS System Services Interface
      8.3.1      Sample Program Using VMS System Services
      8.3.2      Common Errors in Using System Services
    8.4 Record Management Services Interface
      8.4.1      Using VAX RMS Macros
      8.4.2      Sample Routine Using VAX RMS
    8.5 Other VMS Interfaces
      8.5.1      LIB Interface
      8.5.2      TPAMAC Interface

  9      BLISS-32 Code Examples
    9.1 Example 1:  The ALPHA Program
      9.1.1      Module ALPHA
      9.1.2      Routine SORT_CHARS
      9.1.3      Routine ALPHA_SORT
      9.1.4      Cell-Handling Package
      9.1.5      Macro REL_CELL
      9.1.6      Macro INS_CELL
      9.1.7      Macro GET_CELL
      9.1.8      Macro REM_CELL
    9.2 Example 2:  The CALC Program
      9.2.1      Module CALCULATE
      9.2.2      Routine CALC_DRIVER
      9.2.3      Routine MAIN
      9.2.4      Routine READEXPRESSION
      9.2.5      Routine READTERM
      9.2.6      Routine READFACTOR
      9.2.7      Routine READNUMBER
      9.2.8      Routine READCHAR
      9.2.9      Routine CATCH_ERRORS

  A Summary of Command Syntax
    A.1 Command-Line Syntax
    A.2 File Specification Summary
    A.3 Qualifier Syntax
    A.4 Qualifier Defaults
    A.5 Abbreviations

  B Summary of Formatting Rules

  C Module Template
    C.1 Module Preface
    C.2 Declarative Part of Module
    C.3 Executable Part of Module
    C.4 Closing Format

  D Implementation Limits
    D.1 BLISS-32 Constructs
    D.2 System Interfaces

  E Error Messages
    E.1 BLISS Compiler Fatal Errors

  F Sample Output Listing

  G Optional Programming Productivity Tools
    G.1 Using LSE with BLISS-32
      G.1.1     Entering Source Code Using Tokens and Placeholders
      G.1.2     Compiling Source Code
      G.1.3     Examples
      G.1.4     Module Declaration
        G.1.4.1      Routine Declaration
        G.1.4.2      IF Statement
        G.1.4.3      Select Expression
        G.1.4.4      CH$COMPARE Function
    G.2 Using the VAX Source Code Analyzer
      G.2.1     Setting Up an SCA Environment
        G.2.1.1      Creating an SCA Library
        G.2.1.2      Generating Data Analysis Files
        G.2.1.3      Loading Data Analysis Files into a Local Library
        G.2.1.4      Selecting an SCA Library
      G.2.2     Using SCA for Cross-Referencing

  Next     Previous     Contents     Examples     Figures     Tables     Index     Close     Help     ~Off