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 |