HP OpenVMS Systems Documentation

Content starts here

HP OpenVMS MACRO Compiler
Porting and User's Guide

Previous Contents Index

Chapter 4
4 Improving the Performance of Ported Code
     4.1     Aligning Data
         4.1.1         Alignment Assumptions
         4.1.2         Directives and Qualifier for Changing Alignment Assumptions
         4.1.3         Precedence of Alignment Controls
         4.1.4         Recommendations for Aligning Data
     4.2     Code Flow and Branch Prediction
         4.2.1         Default Code Flow and Branch Prediction
         4.2.2         Changing the Compiler's Branch Prediction
         4.2.3         How to Use .BRANCH_LIKELY
         4.2.4         How to Use .BRANCH_UNLIKELY
         4.2.5         Forward Jumps into Loops
     4.3     Code Optimization
         4.3.1         Using the VAXREGS Optimization (OpenVMS Alpha only)
     4.4     Common-Based Referencing
         4.4.1         Creating a Prefix File for Common-Based Referencing
                Code Sequence Differences on OpenVMS I64 Systems
Chapter 5
5 MACRO Support for 64-Bit Addressing
     5.1     Components for 64-Bit Addressing
     5.2     Passing 64-Bit Values
         5.2.1         Calls with a Fixed-Size Argument List
         5.2.2         Calls with a Variable-Size Argument List
     5.3     Declaring 64-Bit Arguments
     5.4     Specifying 64-Bit Address Arithmetic
         5.4.1         Dependence on Wrapping Behavior of Longword Operations
     5.5     Sign-Extending and Checking
     5.6     Alpha Instruction Built-ins
     5.7     Calculating Page-Size Dependent Values
     5.8     Creating and Using Buffers in 64-Bit Address Space
     5.9     Coding for Moves Longer Than 64 KB
Part 2
Part 2 Reference
Appendix A
Appendix A MACRO Compiler Qualifiers
    Command 1     MACRO/MIGRATION
Appendix B
Appendix B Specialized Directives
     B.1     VAX MACRO Assembler Directives
     B.2     MACRO Compiler Specialized Directives
    Command 2     .BRANCH_LIKELY
    Command 3     .BRANCH_UNLIKELY
    Command 4     .CALL_ENTRY
    Command 5     .CALL_LINKAGE (OpenVMS I64 only)
    Command 6     .DEFINE_LINKAGE (OpenVMS I64 only)
    Command 7     .DEFINE_PAL (OpenVMS Alpha only)
    Command 8     .DISABLE
    Command 9     .ENABLE
    Command 10     .EXCEPTION_ENTRY (OpenVMS Alpha only)
    Command 11     .GLOBAL_LABEL
    Command 12     .JSB_ENTRY
    Command 13     .JSB32_ENTRY
    Command 14     .LINKAGE_PSECT (OpenVMS Alpha only)
    Command 15     .PRESERVE
    Command 16     .SET_REGISTERS
    Command 17     .SYMBOL_ALIGNMENT
    Command 18     .USE_LINKAGE (OpenVMS I64 only)
Appendix C
Appendix C MACRO Compiler Built-Ins
     C.1     Alpha Instruction Built-Ins for OpenVMS Alpha and OpenVMS I64 Systems
     C.2     Alpha PALcode Built-Ins
     C.3     Itanium Instruction Built-Ins for OpenVMS I64 Systems
Appendix D
Appendix D Macros for Porting from VAX to Alpha or I64
     D.1     Calculating Page-Size Values
    Command 19     $BYTES_TO_PAGES
    Command 20     $NEXT_PAGE
    Command 21     $PAGES_TO_BYTES
    Command 22     $PREVIOUS_PAGE
    Command 23     $ROUND_RETADR
    Command 24     $START_OF_PAGE
     D.2     Saving and Restoring 64-Bit Registers
    Command 25     $POP64
    Command 26     $PUSH64
     D.3     Locking Pages into a Working Set
         D.3.1         Image Initialization-Time Lockdown
    Command 27     $LOCK_PAGE_INIT
    Command 28     $LOCKED_PAGE_END
    Command 29     $LOCKED_PAGE_START
         D.3.2         On-the-Fly Lockdown
    Command 30     $LOCK_PAGE
    Command 31     $UNLOCK_PAGE
Appendix E
Appendix E Macros for 64-Bit Addressing
     E.1     Macros for Manipulating 64-Bit Addresses
    Command 32     $SETUP_CALL64
    Command 33     $PUSH_ARG64
    Command 34     $CALL64
     E.2     Macros for Checking Sign Extension and Descriptor Format
    Command 35     $IS_32BITS
    Command 36     $IS_DESC64
2-1 Example of Line Numbering in an OpenVMS I64 Listing File
2-1 Register Mapping Table for OpenVMS VAX / OpenVMS Alpha to OpenVMS I64
3-1 Image Initialization-Time Lockdown
3-2 On-the-Fly Lockdown
3-3 Image Initialization-Time Lockdown with the Same Code
5-1 Components for 64-Bit Addressing
5-2 Passing 64-Bit Values with a Fixed-Size Argument List
A-1 Compiler Qualifiers
B-1 Operand Descriptors
C-1 Alpha Instruction Built-Ins for OpenVMS Alpha and OpenVMS I64 Systems
C-2 Alpha PALcode Built-Ins
C-3 Itanium Instruction Built-Ins for OpenVMS I64 Systems
D-1 Shift Values

Previous Next Contents Index