Document revision date: 19 July 1999
[Compaq] [Go to the documentation home page] [How to order documentation] [Help on this site] [How to contact us]
[OpenVMS documentation]

Porting VAX MACRO Code to OpenVMS Alpha


Begin Index

Contents (summary)
Preface Preface
Part 1 Concepts and Methodology
Chapter 1 Preparing to Port VAX MACRO Code
Chapter 2 How to Use the MACRO-32 Compiler
Chapter 3 Recommended and Required Source Changes
Chapter 4 Improving the Performance of Ported Code
Part 2 Reference
Appendix A Compiler Qualifiers
Appendix B Compiler Directives
Appendix C Compiler Built-Ins
Appendix D Macros for Porting to OpenVMS Alpha
  Index
  Tables


Contents


Preface
Preface Preface
Part 1
Part 1 Concepts and Methodology
Chapter 1
1 Preparing to Port VAX MACRO Code
     1.1     Compiler Features
     1.2     Differences Between the Compiler and the Assembler
         1.2.1         Moving Code
         1.2.2         Replicating Code
         1.2.3         Removing Code
         1.2.4         Interleaving Instructions
         1.2.5         Reserved Operand Faults
     1.3     Step-by-Step Porting Process
     1.4     Identifying Nonportable VAX MACRO Coding Practices
     1.5     Establishing Useful Coding Conventions
     1.6     Maintaining Common Sources for VAX and Alpha Systems
         1.6.1         Including Compiler Directive Definitions
         1.6.2         Removing VAX Dependencies
         1.6.3         Using Architecture-Specific Symbols
Chapter 2
2 How to Use the MACRO-32 Compiler
     2.1     Using Alpha Registers
     2.2     Routine Calls and Declarations
         2.2.1         Linkage Section
         2.2.2         Prologue and Epilogue Code
         2.2.3         When to Declare Entry Points
         2.2.4         Directives for Designating Routine Entry Points
         2.2.5         Code Generation for Routine Calls
     2.3     Declaring CALL Entry Points
         2.3.1         Homed Argument Lists
         2.3.2         Saving Modified Registers
         2.3.3         Modifying the Argument Pointer
         2.3.4         Establishing Dynamic Condition Handlers in Called Routines
     2.4     Declaring JSB Routine Entry Points
         2.4.1         Differences Between .JSB_ENTRY and .JSB32_ENTRY
         2.4.2         Two General Cases for Using .JSB32_ENTRY
         2.4.3         PUSHR and POPR Instructions Within JSB Routines
         2.4.4         Establishing Dynamic Condition Handlers in JSB Routines
     2.5     Declaring a Routine's Register Use
         2.5.1         Input Argument for Entry Point Register Declaration
         2.5.2         Output Argument for Entry Point Register Declaration
         2.5.3         Scratch Argument for Entry Point Register Declaration
         2.5.4         Preserve Argument for Entry Point Register Declaration
         2.5.5         Help for Specifying Register Sets
     2.6     Branching Between Local Routines
     2.7     Declaring Exception Entry Points
     2.8     Using Packed Decimal Instructions
         2.8.1         Differences Between the VAX and Alpha Implementations
     2.9     Using Floating-Point Instructions
         2.9.1         Differences Between the VAX and Alpha Implementations
         2.9.2         Impact on Routines in Other Languages
     2.10     Preserving the Atomicity and Granularity of VAX MACRO
         2.10.1         Preserving Atomicity
         2.10.2         Preserving Granularity
         2.10.3         Precedence of Atomicity Over Granularity
         2.10.4         Examples When Atomicity Cannot Be Guaranteed
         2.10.5         Alignment Considerations for Atomicity
         2.10.6         Interlocked Instructions and Atomicity
     2.11     Interoperability of Native and Translated Images
         2.11.1         Compiling Native Images That Can Interoperate with Translated Images
         2.11.2         Linking Native Images That Can Interoperate with Translated Images
     2.12     Compiling and Linking
         2.12.1         Line Numbering in Listing File
         2.12.2         Linking an Object Module
     2.13     Debugging
         2.13.1         Code Relocation
         2.13.2         Symbolic Variables for Routine Arguments
         2.13.3         Locating Arguments Without $ARGn Symbols
             2.13.3.1             Additional Arguments That Are Easy to Locate
             2.13.3.2             Additional Arguments That Are Not Easy to Locate
         2.13.4         Debugging Code with Packed Decimal Data
         2.13.5         Debugging Code with Floating-Point Data
Chapter 3
3 Recommended and Required Source Changes
     3.1     Stack Usage
         3.1.1         References to the Procedure Stack Frame
         3.1.2         References Outside the Current Stack Frame
         3.1.3         Nonaligned Stack References
         3.1.4         Building Data Structures on the Stack
         3.1.5         Quadword Moves Into the VAX SP and PC
     3.2     Instruction Stream
         3.2.1         Data Embedded in the Instruction Stream
         3.2.2         Run-Time Code Generation
         3.2.3         Dependencies on Instruction Size
         3.2.4         Incomplete Instructions
         3.2.5         Untranslatable VAX Instructions
         3.2.6         References to Internal Processor Registers
         3.2.7         Use of Z and N Condition Codes with the BICPSW Instruction
     3.3     Flow Control Mechanisms
         3.3.1         Communication by Condition Codes
         3.3.2         Branches from JSB Routines into CALL Routines
         3.3.3         Pushing an Address onto the Stack
         3.3.4         Removing the Return Address from the Stack
         3.3.5         Modifying the Return Address
         3.3.6         Coroutine Calls
         3.3.7         Using REI to Change Modes
         3.3.8         Loop Nesting Limit
     3.4     Dynamic Image Relocation
     3.5     Overwriting Static Data
     3.6     Static Initialization Using External Symbols
     3.7     Transfer Vectors
     3.8     Arithmetic Exceptions
     3.9     Page Size
     3.10     Locking Pages into a Working Set
     3.11     Synchronization


Previous Next Contents Index

  [Go to the documentation home page] [How to order documentation] [Help on this site] [How to contact us]  
  privacy and legal statement  
5601PRO_CONTENTS.HTML