HP OpenVMS Systems Documentation
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
4.4.1.1
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
Index
Index
Examples
2-1
Example of Line Numbering in an OpenVMS I64 Listing File
Tables
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