H ____________________________________________________C MACRO-64 Assembler for OpenVMS AXP (TM) Systems! Release Notes! November 1993G This document provides information about the latestA release of the MACRO-64 Assembler for OpenVMSE AXP Systems. It includes information on features,3 changes, and resolved problems.C Version V1.1 Build Number: 079/ DIGITAL-INTERNAL FIELD TEST0 Revision/Update Information:H Software Version: MACRO-64 Assembler forE OpenVMS AXP Systems= Version 1.1B Date: October 22, 19931 Digital Equipment Corporation* Maynard, Massachusetts  N ________________________________________________________________ 1993I © 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 InformationG 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 ContentsF Preface................................................... v! 1 New and Modified FeaturesF 1.1 $CALL Improvement with 0/A Stack Argument..... 1-1 2 Resolved ProblemsF 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 AXPF 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 aF 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 TypesF 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-6F iii  8 2.21 .INSTRUCTION, MIX Psects and ForwardI References.................................... 2-6; 2.22 .DEFINE_xREG Directive Sometimes CausesI Assembler Hang................................ 2-7I 2.23 $CALL Passes Relocatable 0 as Absolute 0...... 2-7? 2.24 Multiple Assembly Units on a Single CommandI Line.......................................... 2-7I 2.25 /DEBUG=TRACEBACK Default...................... 2-7? 2.26 $OPDEF Instructions Use Excessive Memory atI Assembly Time................................. 2-7I 2.27 Difference between VAX and AXP Hosts.......... 2-8= 2.28 External BSR Target Label in Machine-CodeI Listing....................................... 2-86 2.29 Large Lexical String Symbols CauseI Assertion..................................... 2-8I 2.30 Erroneous Program Causes Assembler Crash...... 2-8* 3 Known Problems and RestrictionsI 3.1 .BLKx Directives in Machine-Code Listing...... 3-1I 3.2 Instructions for MIX Psects................... 3-1 iv  I _________________________________________________________________I Preface IntroductionE 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-64B is also available as a cross assembler hosted on theI OpenVMS VAX operating system internally to Digital softwareH development groups, and for a limited time to customers asH part of an AXP cross-tool kit offered by Digital Services. Reporting ProblemsI Please report all problems in the MACRO-64 notes conference) 11SRUS::ASM$NOTES:ASM.NOTE. Intended Audience? This document is intended for system managers andA programmers who need to be informed about features,- changes, and resolved problems. Document StructureC 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, the4 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 DocumentsI For more information on MACRO-64, see the following manuals' in the documentation set:E o MACRO-64 Assembler for OpenVMS AXP Systems Reference ManualH o MACRO-64 Assembler for OpenVMS AXP Systems Installation GuideD For more information on programming in the OpenVMS AXPD environment and on the Alpha AXP Architecture, see the following:) 1. OpenVMS Calling Standard4 2. Alpha Architecture Reference Manual, 3. Alpha Architecture Handbook. 4. Alpha System Reference Manual vi   ConventionsH 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 youH press another key or a pointing device button.F In examples, a key name is shown enclosed inG a box to indicate that you press a key on theH 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 ofF . 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 isD 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 aE required choice of options; you must choose4 one of the options listed.C boldface Boldface text represents the introductionF 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 input9 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 nameH 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 textI are assumed to be decimal. Non-decimal radices-F binary, octal, or hexadecimal-are explicitly$ indicated. viii  I 1I _________________________________________________________________I New and Modified FeaturesE This chapter describes new features and feature changesG that have been added since the MACRO-64 T1.1-048 release.5 1.1 $CALL Improvement with 0/A Stack ArgumentH 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 2I _________________________________________________________________I Resolved ProblemsF This chapter lists problems corrected since the T1.1-048 release., 2.1 DEBUG Scrolling of Repeat BlocksE The debugger does not scroll the source window within aI repeat block definition when you are executing instructionsH 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 LabelsE No local symbol debug information is generated for someC local data labels having a runtime address bound to aE 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 MemoryE If the assembler runs out of virtual memory with a veryE large assembly unit, the assembler aborts with a "%LIB-G F-INSVIRMEM, insufficient virtual memory" diagnostic. TheE assembler should provide some indication of what it was5 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 Problems6 2.3 More Information Needed when Out of MemoryD When the assembler runs out of memory, it includes theE total number of lines assembled up to that point in theD INSVIRMEM diagnostic message. The assembler suppressesE generation of an object module. If you specify /LIST onE the command line (or you default the /LIST qualifier inG 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 memoryI 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 WorkF 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-FT4E If you type "HELP MACRO/ALPHA" on FT3 or FT4 of OpenVMSG AXP V1.5 after installing MACRO-64, two help sections areH 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 AXPD 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 ConflictD 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.SE 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 HangxF 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. ThisI construct directs the assembler to do something forever-the G lexical string-symbol definition is infinitely recursive.gG 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_xxxxRI 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_NOPtH 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 iI Resolved Problems.I 2.12 DEBUG Cannot Examine Registers Outside a RoutineH= 2.12 DEBUG Cannot Examine Registers Outside a RoutineeF 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 QuoteG 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 RegressionH 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.iE This problem has been corrected with MACRO-64 V1.1-079.b2 2.16 $RETURN Needs .BEGIN_EXACT/.END_EXACTH 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 emitD 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 asH 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-64E Previous versions of MACRO-64 crash when the code entrycC point to a procedure (a label specified as the secondE 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 ReferencesI The .INSTRUCTION directive sets the high 6-bits (the opcodeH 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 ReferencesuE This problem has been corrected with MACRO-64 V1.1-079.tC 2.22 .DEFINE_xREG Directive Sometimes Causes Assembler HangeH 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 LineG 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 TimeH 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 Hostss1 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 ListingH 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 rI 3iI _________________________________________________________________"I Known Problems and RestrictionshI 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 ListingD 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