User`s guide

2.6.1 Input Argument for Entry Point Register Declaration . . ........... 2–13
2.6.2 Output Argument for Entry Point Register Declaration . ........... 2–14
2.6.3 Scratch Argument for Entry Point Register Declaration ........... 2–14
2.6.4 Preserve Argument for Entry Point Register Declaration .......... 2–15
2.6.5 Help for Specifying Register Sets . ............................ 2–15
2.7 Branching Between Local Routines . . ............................ 2–16
2.8 Declaring Exception Entry Points (OpenVMS Alpha only) . ........... 2–17
2.9 Using Packed Decimal Instructions . . ............................ 2–17
2.9.1 Differences Between the OpenVMS VAX and OpenVMS Alpha/I64
Implementations ......................................... 2–17
2.10 Using Floating-Point Instructions . . . ............................ 2–19
2.10.1 Differences Between the OpenVMS VAX and OpenVMS Alpha/I64
Implementations ......................................... 2–19
2.10.2 Impact on Routines in Other Languages ....................... 2–21
2.11 Preserving VAX Atomicity and Granularity ........................ 2–21
2.11.1 Preserving Atomicity . . .................................... 2–22
2.11.2 Preserving Granularity .................................... 2–24
2.11.3 Precedence of Atomicity Over Granularity . . . ................... 2–26
2.11.4 When Atomicity Cannot Be Guaranteed ....................... 2–26
2.11.5 Alignment Considerations for Atomicity ....................... 2–28
2.11.6 Interlocked Instructions and Atomicity ........................ 2–29
2.12 Compiling and Linking . . . .................................... 2–31
2.12.1 Line Numbering in Listing File . . ............................ 2–31
2.13 Debugging ................................................. 2–32
2.13.1 Code Relocation .......................................... 2–32
2.13.2 Symbolic Variables for Routine Arguments . . ................... 2–33
2.13.3 Locating Arguments Without $ARGn Symbols ................... 2–33
2.13.3.1 Additional Arguments That Are Easy to Locate ............... 2–33
2.13.3.2 Additional Arguments That Are Not Easy to Locate ........... 2–34
2.13.4 Using VAX and Alpha Register Names on OpenVMS I64 .......... 2–34
2.13.5 Debugging Code with Packed Decimal Data . ................... 2–35
2.13.6 Debugging Code with Floating-Point Data . . . ................... 2–35
3 Recommended and Required Source Changes
3.1 Stack Usage ................................................ 3–1
3.1.1 References to the Procedure Stack Frame . . . ................... 3–2
3.1.2 References Outside the Current Stack Frame ................... 3–2
3.1.3 Nonaligned Stack References ................................ 3–2
3.1.4 Building Data Structures on the Stack ........................ 3–2
3.1.5 Quadword Moves Into the VAX SP and PC . . ................... 3–3
3.2 Instruction Stream ........................................... 3–3
3.2.1 Data Embedded in the Instruction Stream . . ................... 3–4
3.2.2 Run-Time Code Generation ................................. 3–4
3.2.3 Dependencies on Instruction Size . ............................ 3–4
3.2.4 Incomplete Instructions .................................... 3–4
3.2.5 Untranslatable VAX Instructions . ............................ 3–4
3.2.6 References to Internal Processor Registers . . ................... 3–5
3.2.7 Use of Z and N Condition Codes with the BICPSW Instruction . . . . . . 3–5
3.2.8 Interlocked Memory Instructions . ............................ 3–5
3.2.9 Use of the MOVPSL Instruction . ............................ 3–7
3.2.10 Instructions Implemented By Macros ......................... 3–7
3.3 Flow Control Mechanisms . .................................... 3–8
3.3.1 Communication by Condition Codes ........................... 3–8
iv