User`s guide

Contents
Preface ............................................................ ix
Part I Concepts and Methodology
1 Preparing to Port Macro-32 Code
1.1 Features of the MACRO Compiler ............................... 1–1
1.2 Differences Between the Compiler and the Assembler ............... 1–2
1.2.1 Moving Code ............................................ 1–2
1.2.2 Replicating Code . ........................................ 1–3
1.2.3 Removing Code . . ........................................ 1–3
1.2.4 Interleaving Instructions . . . ................................ 1–4
1.2.5 Reserved Operand Faults . . . ................................ 1–4
1.3 Step-by-Step Porting Process for OpenVMS VAX to OpenVMS Alpha or
OpenVMS I64 .............................................. 1–4
1.4 Step-by-Step Porting Process for OpenVMS Alpha to OpenVMS I64 ..... 1–6
1.5 Identifying Nonportable VAX MACRO Coding Practices .............. 1–6
1.6 Establishing Useful Coding Conventions . . . ....................... 1–8
1.7 Maintaining Common Sources . . ................................ 1–8
1.7.1 Including Compiler Directive Definitions ....................... 1–9
1.7.2 Removing VAX Dependencies ................................ 1–9
1.7.3 Conditionalizing Architecture-Specific Code ..................... 1–9
2 How the MACRO Compiler Functions on Different Platforms
2.1 Using Alpha and Itanium Registers .............................. 2–1
2.2 Itanium Architecture, Calling Standard, and Register Mapping . ....... 2–2
2.3 Routine Calls and Declarations . ................................ 2–4
2.3.1 Linkage Section (OpenVMS Alpha only) ....................... 2–5
2.3.2 Prologue and Epilogue Code . ................................ 2–5
2.3.3 When to Declare Entry Points ............................... 2–6
2.3.4 Directives for Designating Routine Entry Points . . ............... 2–6
2.3.5 Code Generation for Routine Calls ............................ 2–7
2.4 Declaring CALL Entry Points . . ................................ 2–8
2.4.1 Homed Argument Lists .................................... 2–9
2.4.2 Saving Modified Registers . . ................................ 2–10
2.4.3 Modifying the Argument Pointer ............................. 2–10
2.4.4 Establishing Dynamic Condition Handlers in Called Routines ...... 2–10
2.5 Declaring JSB Routine Entry Points ............................. 2–11
2.5.1 Differences Between .JSB_ENTRY and .JSB32_ENTRY ........... 2–11
2.5.2 Two General Cases for Using .JSB32_ENTRY ................... 2–12
2.5.3 PUSHR and POPR Instructions Within JSB Routines ............. 2–12
2.5.4 Establishing Dynamic Condition Handlers in JSB Routines . ....... 2–12
2.6 Declaring a Routine’s Register Use .............................. 2–12
iii