User`s guide

3.3.2 Branches from JSB Routines into CALL Routines . ............... 3–8
3.3.3 Pushing a Return Address onto the Stack ...................... 3–9
3.3.4 Removing the Return Address from the Stack ................... 3–10
3.3.5 Modifying the Return Address ............................... 3–11
3.3.6 Coroutine Calls . . ........................................ 3–11
3.3.7 Using REI to Change Modes ................................ 3–13
3.3.8 Loop Nesting Limit ....................................... 3–14
3.4 Dynamic Image Relocation ..................................... 3–15
3.5 Overwriting Static Data ....................................... 3–15
3.6 Static Initialization Using External Symbols....................... 3–16
3.7 Transfer Vectors ............................................. 3–16
3.8 Arithmetic Exceptions ........................................ 3–17
3.9 Page Size . . ................................................ 3–18
3.10 Locking Pages into a Working Set ............................... 3–18
3.11 Synchronization ............................................. 3–23
4 Improving the Performance of Ported Code
4.1 Aligning Data ............................................... 4–1
4.1.1 Alignment Assumptions .................................... 4–1
4.1.2 Directives and Qualifier for Changing Alignment Assumptions ...... 4–2
4.1.3 Precedence of Alignment Controls ............................ 4–2
4.1.4 Recommendations for Aligning Data . . . ....................... 4–2
4.2 Code Flow and Branch Prediction ............................... 4–3
4.2.1 Default Code Flow and Branch Prediction ...................... 4–4
4.2.2 Changing the Compilers Branch Prediction .................... 4–5
4.2.3 How to Use .BRANCH_LIKELY .............................. 4–5
4.2.4 How to Use .BRANCH_UNLIKELY ........................... 4–6
4.2.5 Forward Jumps into Loops . . ................................ 4–7
4.3 Code Optimization . . . ........................................ 4–7
4.3.1 Using the VAXREGS Optimization (OpenVMS Alpha only) . ....... 4–8
4.4 Common-Based Referencing .................................... 4–9
4.4.1 Creating a Prefix File for Common-Based Referencing ............ 4–9
4.4.1.1 Code Sequence Differences on OpenVMS I64 Systems . . . ....... 4–10
5 MACRO Support for 64-Bit Addressing
5.1 Components for 64-Bit Addressing ............................... 5–1
5.2 Passing 64-Bit Values ........................................ 5–2
5.2.1 Calls with a Fixed-Size Argument List . ....................... 5–2
5.2.2 Calls with a Variable-Size Argument List ...................... 5–4
5.3 Declaring 64-Bit Arguments . . . ................................ 5–4
5.4 Specifying 64-Bit Address Arithmetic ............................ 5–5
5.4.1 Dependence on Wrapping Behavior of Longword Operations . ....... 5–6
5.5 Sign-Extending and Checking . . ................................ 5–6
5.6 Alpha Instruction Built-ins .................................... 5–7
5.7 Calculating Page-Size Dependent Values . . ....................... 5–7
5.8 Creating and Using Buffers in 64-Bit Address Space . . ............... 5–7
5.9 Coding for Moves Longer Than 64 KB ............................ 5–7
v