                                           H                     ____________________________________________________C                     MACRO-64 Assembler for OpenVMS AXP (TM) Systems !                     Release Notes     !                     November 1993   G                     This document provides information about the latest A                     release of the MACRO-64 Assembler for OpenVMS E                     AXP Systems. It includes information on features, 3                     changes, and resolved problems.                 C                     Version V1.1                  Build Number: 079   /                     DIGITAL-INTERNAL FIELD TEST   0                     Revision/Update Information:  H                     Software Version:             MACRO-64 Assembler forE                                                   OpenVMS AXP Systems =                                                   Version 1.1   B                     Date:                         October 22, 1993  1                     Digital Equipment Corporation *                     Maynard, Massachusetts                 N               ________________________________________________________________               1993  I                Digital Equipment Corporation 1993.  All rights reserved.   ?               The following are trademarks of Digital Equipment                Corporation:  H               Alpha AXP       AXP             DEC                OpenVMS>               VAX DOCUMENT    The AXP logo    The DIGITAL logo    :                              Digital Equipment Corporation7                                 Proprietary Information   G               This information is proprietary to Digital and is subject @               to the terms and conditions of your non-disclosure               agreement.  I               This document was prepared using VAX DOCUMENT, Version 2.1.                                  F      _________________________________________________________________  F                                                               Contents      F      Preface...................................................      v  !      1  New and Modified Features   F            1.1   $CALL Improvement with 0/A Stack Argument.....    1-1        2  Resolved Problems   F            2.1   DEBUG Scrolling of Repeat Blocks..............    2-1F            2.2   DEBUG Information for Local Data Labels.......    2-1F            2.3   More Information Needed when Out of Memory....    2-1F            2.4   HELP MACRO/ALPHA_AXP Doesn't Work.............    2-27            2.5   HELP MACRO/ALPHA Broken on OpenVMS AXP F                  V1.5-FT3 and V1.5-FT4.........................    2-2F            2.6   MACZERO Diagnostic Anomalies..................    2-3:            2.7   Superfluous Argument vs. Scratch RegisterF                  Conflict......................................    2-3F            2.8   No Diagnostics in /PREPROCESS_ONLY Mode.......    2-3F            2.9   Recursive Lexical String Symbol Causes Hang...    2-4F            2.10  No ADDTRUNC Diagnostic with .SIGNED_xxxx......    2-4F            2.11  CALL/LDQ_A/LDQ_NOP............................    2-49            2.12  DEBUG Cannot Examine Registers Outside a F                  Routine.......................................    2-5F            2.13  $ABS$ Psect Starts at Offset 4................    2-5F            2.14  Two Diagnostics for Missing Closing Quote.....    2-57            2.15  Machine Code Display of Floating Types F                  Regression....................................    2-5F            2.16  $RETURN Needs .BEGIN_EXACT/.END_EXACT.........    2-5F            2.17  .SHOW BINARY Is Too Strong....................    2-6F            2.18  /ALIGN=CODE Doesn't Align Entry Points........    2-6F            2.19  Entry in Exact Range Crashes MACRO-64.........    2-6F            2.20  .BEGIN_EXACT and Automatic Alignment..........    2-6    F                                                                    iii                   8               2.21  .INSTRUCTION, MIX Psects and ForwardI                     References....................................    2-6 ;               2.22  .DEFINE_xREG Directive Sometimes Causes I                     Assembler Hang................................    2-7 I               2.23  $CALL Passes Relocatable 0 as Absolute 0......    2-7 ?               2.24  Multiple Assembly Units on a Single Command I                     Line..........................................    2-7 I               2.25  /DEBUG=TRACEBACK Default......................    2-7 ?               2.26  $OPDEF Instructions Use Excessive Memory at I                     Assembly Time.................................    2-7 I               2.27  Difference between VAX and AXP Hosts..........    2-8 =               2.28  External BSR Target Label in Machine-Code I                     Listing.......................................    2-8 6               2.29  Large Lexical String Symbols CauseI                     Assertion.....................................    2-8 I               2.30  Erroneous Program Causes Assembler Crash......    2-8   *         3  Known Problems and Restrictions  I               3.1   .BLKx Directives in Machine-Code Listing......    3-1 I               3.2   Instructions for MIX Psects...................    3-1                                                 
         iv                             I         _________________________________________________________________   I                                                                   Preface                Introduction  E               The MACRO-64 Assembler for OpenVMS AXP Systems provides @               a macro assembly language for the native Alpha AXP@               instruction set. MACRO-64 is available as a nativeE               assembler on the OpenVMS AXP Operating System. MACRO-64 B               is also available as a cross assembler hosted on theI               OpenVMS VAX operating system internally to Digital software H               development groups, and for a limited time to customers asH               part of an AXP cross-tool kit offered by Digital Services.           Reporting Problems  I               Please report all problems in the MACRO-64 notes conference )               11SRUS::ASM$NOTES:ASM.NOTE.            Intended Audience   ?               This document is intended for system managers and A               programmers who need to be informed about features, -               changes, and resolved problems.            Document Structure  C               This document is divided into the following chapters:   D               o  Chapter 1, New and Modified Features, describes newI                  features or implementations since MACRO-64 T1.1-048, the 4                  MACRO-64 V1.1 Field Test 1 release.  A               o  Chapter 2, Resolved Problems, describes problems )                  resolved since T1.1-048.     I                                                                         v                    F               o  Chapter 3, Known Problems and Restrictions, describesD                  problems and restrictions that the development teamF                  is aware of, but has not resolved at the time of this                  release.            Associated Documents  I               For more information on MACRO-64, see the following manuals '               in the documentation set:   E               o  MACRO-64 Assembler for OpenVMS AXP Systems Reference                   Manual   H               o  MACRO-64 Assembler for OpenVMS AXP Systems Installation                  Guide  D               For more information on programming in the OpenVMS AXPD               environment and on the Alpha AXP Architecture, see the               following:  )               1. OpenVMS Calling Standard   4               2. Alpha Architecture Reference Manual  ,               3. Alpha Architecture Handbook  .               4. Alpha System Reference Manual                                    
         vi                            Conventions   H               The following conventions are used in these release notes:  F               Ctrl/x      A sequence such as Ctrl/x indicates that youG                           must hold down the key labeled Ctrl while you H                           press another key or a pointing device button.  F               <Return>    In examples, a key name is shown enclosed inG                           a box to indicate that you press a key on the H                           keyboard. (In text, a key name is not enclosed$                           in a box.)  F                . . .      In examples, a horizontal ellipsis indicates=                           one of the following possibilities:   I                           o  Additional optional arguments in a statement /                              have been omitted.   H                           o  The preceding item or items can be repeated/                              one or more times.   D                           o  Additional parameters, values, or other8                              information can be entered.  G                           A vertical ellipsis indicates the omission of F                   .       items from a code example or command format;D                   .       the items are omitted because they are notA                   .       important to the topic being discussed.   H               []          In format descriptions, brackets indicate thatE                           whatever is enclosed within the brackets is D                           optional; you can select none, one, or allD                           of the choices. Brackets are not, however,I                           optional in the syntax of a directory name in a -                           file specification.   C               {}          In format descriptions, braces surround a E                           required choice of options; you must choose 4                           one of the options listed.  C               boldface    Boldface text represents the introduction F               text        of a new term or the name of an argument, an1                           attribute, or a reason.   G                           Boldface text is also used to show user input 9                           in online versions of the book.   I                                                                       vii                      H               UPPERCASE   Uppercase letters indicate that you must enterF               TEXT        a command (for example, enter OPEN/READ), orG                           they indicate the name of a routine, the name H                           of a file, the name of a file protection code,E                           or the abbreviation for a system privilege.   B               -           Hyphens in coding examples indicate thatA                           additional arguments to the request are <                           provided on the line that follows.  I               numbers     Unless otherwise noted, all numbers in the text I                           are assumed to be decimal. Non-decimal radices- F                           binary, octal, or hexadecimal-are explicitly$                           indicated.                                                                     viii                         I                                                                         1 I         _________________________________________________________________   I                                                 New and Modified Features     E               This chapter describes new features and feature changes G               that have been added since the MACRO-64 T1.1-048 release.       5         1.1 $CALL Improvement with 0/A Stack Argument   H               With previous versions of MACRO-64, the $CALL macro passedF               the address zero as a stack argument using the following               sequence:     2                       LDA     SCRATCH_REG, 0 (R31)1                       STQ     SCRATCH_REG, x (SP)   4               A more optimal sequence is as follows:  )                       STQ     R31, x (SP)   C               This optimization has been incorporated into MACRO-64                V1.1-079.                               I                                             New and Modified Features 1-1                          I                                                                         2 I         _________________________________________________________________   I                                                         Resolved Problems     F               This chapter lists problems corrected since the T1.1-048               release.      ,         2.1 DEBUG Scrolling of Repeat Blocks  E               The debugger does not scroll the source window within a I               repeat block definition when you are executing instructions H               in a repeat block. Instead, the debugger treats the entire1               repeat block as a single statement.   E               This problem has been corrected with MACRO-64 V1.1-079.   3         2.2 DEBUG Information for Local Data Labels   E               No local symbol debug information is generated for some C               local data labels having a runtime address bound to a E               storage location whose storage is allocated with one of #               the .BLKx directives.   E               This problem has been corrected with MACRO-64 V1.1-079.   6         2.3 More Information Needed when Out of Memory  E               If the assembler runs out of virtual memory with a very E               large assembly unit, the assembler aborts with a "%LIB- G               F-INSVIRMEM, insufficient virtual memory" diagnostic. The E               assembler should provide some indication of what it was 5               trying to do when the failure occurred.   G               This problem has been addressed with MACRO-64 V1.1-079 as                follows:      I                                                     Resolved Problems 2-1                     Resolved Problems 6         2.3 More Information Needed when Out of Memory    D               When the assembler runs out of memory, it includes theE               total number of lines assembled up to that point in the D               INSVIRMEM diagnostic message. The assembler suppressesE               generation of an object module. If you specify /LIST on E               the command line (or you default the /LIST qualifier in G               batch mode), the assembler reclaims some of its internal, F               dynamic, heap memory that is normally needed for object-H               module generation. The assembler then attempts to generateB               a listing file. If it succeeds, the last line in theH               listing file is the line the assembler was processing whenH               it ran out of virtual memory. Note that it is unlikely butE               possible that the assembler may again run out of memory I               when it attempts to produce the listing file. In that case, D               the assembler issues a LASTGASP diagnostic message and7               aborts without generating a listing file.   -         2.4 HELP MACRO/ALPHA_AXP Doesn't Work   F               HELP MACRO/ALPHA_AXP doesn't work. You must instead type               HELP MACRO/ALPHA.   E               This problem has been corrected with MACRO-64 V1.1-079.   H         2.5 HELP MACRO/ALPHA Broken on OpenVMS AXP V1.5-FT3 and V1.5-FT4  E               If you type "HELP MACRO/ALPHA" on FT3 or FT4 of OpenVMS G               AXP V1.5 after installing MACRO-64, two help sections are H               displayed for /ALPHA and help leaves you at the top of theH               help-library hierarchy. To navigate the MACRO-64 help, youF               must type "HELP MACRO/ALPHA topic", where "topic" is oneG               of the MACRO-64 topics displayed when you type HELP MACRO                /ALPHA.   C               This problem lies with MACRO-64. However, OpenVMS AXP D               V1.5-SSB has been changed such that "HELP MACRO/ALPHA"8               works correctly after installing MACRO-64.  E               This problem has been corrected with MACRO-64 V1.1-079.                        2-2 Resolved Problemst           I                                                         Resolved Problems I                                          2.6 MACZERO Diagnostic Anomalies     (         2.6 MACZERO Diagnostic Anomalies  @               When the first numeric expression to a .IF or .IIF@               directive is invalid, MACRO-64 evaluates it twice.C               The second expression, if present, is erroneously not D               evaluated. The .IF directive results in two diagnosticH               messages against the first expression, the second of whichF               is redundant. Moreover, the diagnostic point of interestD               that is cited is the token beyond the end of the firstF               expression. With .IIF EQ, .IIF LE, and .IIF GE, MACRO-64H               attempts to interpret the first expression as a statement,I               possibly resulting in additional and superfluous diagnostic                messages.   E               This problem has been corrected with MACRO-64 V1.1-079.   >         2.7 Superfluous Argument vs. Scratch Register Conflict  D               Currently, $CALL issues a diagnostic if you specify anB               argument-source or argument-target register that youA               also specify or default as a scratch register. (The D               default scratch registers are R0, R1, F0, and F1.) TheE               diagnostic is legitimate if $CALL actually needs to use F               the scratch register to load an argument from memory andI               subsequently store it on the stack. However, the diagnosticnG               is superfluous if $CALL does not need a scratch register.   E               This problem has been corrected with MACRO-64 V1.1-079.   3         2.8 No Diagnostics in /PREPROCESS_ONLY Mode_  @               In /PREPROCESS_ONLY mode, MACRO-64 performs normalF               syntactic and semantic processing of your source programF               after the preprocessing stage in order to process normalC               symbol definitions and correctly maintain the current D               location counter ("."). However, most diagnostics thatI               might be produced in these latter assembly stages would notBG               be meaningful to you in /PREPROCESS_ONLY mode. Therefore, B               when MACRO-64 operates in /PREPROCESS_ONLY mode, theD               intended behavior is that all diagnostics arising fromF               the latter assembly stages be suppressed. Unfortunately,E               preprocessing diagnostics, which would be meaningful inn9               /PREPROCESS_ONLY mode, are also suppressed.S  E               This problem has been corrected with MACRO-64 V1.1-079..  I                                                     Resolved Problems 2-3R O  S               Resolved Problems 7         2.9 Recursive Lexical String Symbol Causes Hang     7         2.9 Recursive Lexical String Symbol Causes Hangx  F               The following construct causes the assembler to loop and:               eventually abort for lack of virtual memory:  ,                   NOTHING = "%NOTHING% MORE"$                   .print "%NOTHING%"  C               In fact, this is an error in the source program. This I               construct directs the assembler to do something forever-the G               lexical string-symbol definition is infinitely recursive.g  G               This problem has been addressed with MACRO-64 V1.1-079 asNG               follows: The assembler now issues a diagnostic message ifNH               you attempt to process more than 5000 lexical operators in!               a single statement.   5         2.10 No ADDTRUNC Diagnostic with .SIGNED_xxxxR  I               The assembler does not issue an ADDTRUNC diagnostic message.H               for attempts to store a relocatable address value with theI               .SIGNED_BYTE and .SIGNED_WORD directives. It should issue aI!               warning diagnostic.   E               This problem has been corrected with MACRO-64 V1.1-079.            2.11 CALL/LDQ_A/LDQ_NOPt  H               Previous versions of MACRO-64 accept the following pseudo-               ops:                     CALL                   LDQ_Ae                   LDQ_NOP   H               These pseudo-ops do nothing useful and are likely to cause%               the assembler to crash..  H               These pseudo-ops have been removed from MACRO-64 V1.1-079.                     2-4 Resolved ProblemsI r  i      I                                                         Resolved Problems.I                     2.12 DEBUG Cannot Examine Registers Outside a RoutineH    =         2.12 DEBUG Cannot Examine Registers Outside a Routinee  F               When the symbolic debugger doesn't know what routine youH               are in, you cannot examine registers as you might normallyC               do. If you try, you receive the following diagnostic:.                     DBG> ex r0J                   %DEBUG-W-SYMNOTACT, non-static variable '.MAIN.\MAIN\R0'                   is not active   E               This problem has been corrected with MACRO-64 V1.1-079.   +         2.13 $ABS$ Psect Starts at Offset 4.  G               The $ABS$ psect erroneously starts at offset 4. It should                 start at offset 0.  E               This problem has been corrected with MACRO-64 V1.1-079._  6         2.14 Two Diagnostics for Missing Closing Quote  G               If you omit a closing quote on a string literal, MACRO-64AC               issues two diagnostic messages concerning the missinga.               quote. It should issue only one.  E               This problem has been corrected with MACRO-64 V1.1-079.   >         2.15 Machine Code Display of Floating Types Regression  H               In the machine-code section of the listing, floating-pointC               initial data values are not shown correctly. However, F               floating-point initial values are shown correctly in the?               left margin in the source section of the listing.i  E               This problem has been corrected with MACRO-64 V1.1-079.b  2         2.16 $RETURN Needs .BEGIN_EXACT/.END_EXACT  H               The $ROUTINE macro correctly generates the prologue withinG               a .BEGIN_EXACT/.END_EXACT block. This prevents disruptionmG               by the optimizer of the critical sequence of actions thatrF               must occur during prologue processing. $RETURN should doD               likewise for the epilogue, but in previous versions of$               MACRO-64, it does not.  E               This problem has been corrected with MACRO-64 V1.1-079.   I                                                     Resolved Problems 2-5                     Resolved Problemsd'         2.17 .SHOW BINARY Is Too Strongl    '         2.17 .SHOW BINARY Is Too Strong   E               .SHOW BINARY and /SHOW=BINARY cause all lines that emit D               binary to be included in the listing. They should onlyF               affect macro expansion lines, and they show not overrideH               .NLIST (listing-control counter) and .NOSHOW CONDITIONALS.  E               This problem has been corrected with MACRO-64 V1.1-079.   3         2.18 /ALIGN=CODE Doesn't Align Entry Points   I               The .ENABLE ALIGN_CODE and /ALIGN=CODE options do not align6G               procedure entry points. Code labels that are specified as H               the second argument to the .PROCEDURE_DESCRIPTOR directiveD               should be aligned to at least a quadword boundary when2               automatic code alignment is enabled.  E               This problem has been corrected with MACRO-64 V1.1-079.   2         2.19 Entry in Exact Range Crashes MACRO-64  E               Previous versions of MACRO-64 crash when the code entrycC               point to a procedure (a label specified as the second E               argument to the .PROCEDURE_DESCRIPTOR directive) occurs G               within an exact range delimited with the .BEGIN_EXACT and $               .END_EXACT directives.  E               This problem has been corrected with MACRO-64 V1.1-079.   1         2.20 .BEGIN_EXACT and Automatic Alignmento  @               In previous versions of MACRO-64, the .BEGIN_EXACTD               directive causes automatic data alignment (if enabled)I               to be suppressed in psects with the MIX attribute. However,kD               .BEGIN_EXACT does not affect automatic code alignment.  G               The .BEGIN_EXACT directive has been changed with MACRO-64.E               V1.1-079 such that it does not affect automatic data or                code alignment.i  <         2.21 .INSTRUCTION, MIX Psects and Forward References  I               The .INSTRUCTION directive sets the high 6-bits (the opcode H               field) to zero with a forward reference in psects with theF               MIX attribute. The .INSTRUCTION directive in psects withF               the NOMIX and EXE attributes and use of the .INSTRUCTIONH               directive with references to previously-defined labels and%               symbols are unaffected.            2-6 Resolved Problemsm c         I                                                         Resolved ProblemssI                      2.21 .INSTRUCTION, MIX Psects and Forward Referencesu    E               This problem has been corrected with MACRO-64 V1.1-079.t  C         2.22 .DEFINE_xREG Directive Sometimes Causes Assembler Hange  H               Under certain circumstances, previous versions of MACRO-64G               loop infinitely while assembling programs that use either I               the .DEFINE_IREG or .DEFINE_FREG directives. Eventually the <               assembler aborts with an INSVIRMEM diagnostic.  E               This problem has been corrected with MACRO-64 V1.1-079.   5         2.23 $CALL Passes Relocatable 0 as Absolute 0   >               With MACRO-64 T1.1-050, if you attempt to pass aB               relocatable address with $CALL using the /A argumentD               qualifier, and the offset portion of relocatable valueD               is zero (as in a label at the start of a psect), $CALL;               incorrectly passes the absolute address zero.   E               This problem has been corrected with MACRO-64 V1.1-079.   =         2.24 Multiple Assembly Units on a Single Command Line   G               Attempting to process multiple assembly units on a singleeH               command line causes previous versions of MACRO-64 to abort&               or behave unpredictably.  E               This problem has been corrected with MACRO-64 V1.1-079.,  %         2.25 /DEBUG=TRACEBACK Default   D               Previous versions of MACRO-64 do not provide traceback:               information in the object module by default.  I               This problem has been corrected with MACRO-64 V1.1-079. The .               default is now /DEBUG=TRACEBACK.  F         2.26 $OPDEF Instructions Use Excessive Memory at Assembly Time  H               The macro encoding of instructions defined with the $OPDEFC               macro uses an excessive amount of virtual memory with-,               previous versions of MACRO-64.  G               The amount of memory required to use instructions defined H               with the $OPDEF macros has been significantly reduced with%               with MACRO-64 V1.1-079.   I                                                     Resolved Problems 2-7                     Resolved Problems 1         2.27 Difference between VAX and AXP Hostss    1         2.27 Difference between VAX and AXP Hosts   H               On VAX hosts, assigning the current location counter (".")H               within an absolute psect to a 64-bit symbol causes the 32-I               bit value of the current location counter to zero extend inhH               the upper 32 bits. On AXP hosts, the value sign extends in                the upper 32 bits.  G               MACRO-64 V1.1-079 has been changed such that both VAX and(9               AXP hosts zero extend in the upper 32 bits.:  >         2.28 External BSR Target Label in Machine-Code Listing  H               Previous versions of MACRO-64 do not show the target labelF               for an intermodule or inter-psect BSR instruction in the2               machine-code section of the listing.  E               This problem has been corrected with MACRO-64 V1.1-079.   9         2.29 Large Lexical String Symbols Cause Assertion_  E               With previous versions of MACRO-64 on AXP hosts, if you D               attempt to define a lexical string symbol in excess ofD               1,073,741,824 bytes in length, either the GEM compilerG               backend issues an assertion diagnostic or the behavior isr               unpredictable.  E               This problem has been corrected with MACRO-64 V1.1-079.iD               Such an attempt now results in an INSVIRMEM diagnostic               message.  5         2.30 Erroneous Program Causes Assembler Crash   G               Certain error conditions within a data directive, such as I               an expression that is too complex to evaluate at link time,oH               can sometimes cause previous versions of MACRO-64 to crashI               after MACRO-64 has issued the proper diagnostic message fore-               the triggering error condition.   E               This problem has been corrected with MACRO-64 V1.1-079.                    2-8 Resolved Problemso I  r                    I                                                                         3iI         _________________________________________________________________"  I                                           Known Problems and Restrictionsh    I               This chapter describes known problems and restrictions that ;               are not resolved at the time of this release.   4         3.1 .BLKx Directives in Machine-Code Listing  D               The .BLKx directives do not appear in the machine-codeA               listing with /MACHINE_CODE. However, the storage iseF               correctly allocated and the offsets within the psect are#               correctly maintained.r  '         3.2 Instructions for MIX Psects   G               Instructions which occur in psects with the MIX attribute G               appear in the machine listing as initial value specifiers &               for the .LONG directive.                                          I                                       Known Problems and Restrictions 3-1t                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        