Preface |
Preface
|
Preface
|
Chapter 1 |
1
|
Introduction
|
1.1
|
Applicability
|
1.2
|
Architectural Level
|
1.3
|
Goals
|
1.4
|
Definitions
|
Chapter 2 |
2
|
OpenVMS VAX Conventions
|
2.1
|
Register Usage
|
2.1.1
|
Scalar Register Usage
|
2.1.2
|
Vector Register Usage
|
2.2
|
Stack Usage
|
2.3
|
Calling Sequence
|
2.4
|
Argument List
|
2.4.1
|
Format
|
2.4.2
|
Argument Lists and High-Level Languages
|
2.4.2.1
|
Order of Argument Evaluation
|
2.4.2.2
|
Language Extensions for Argument Transmission
|
2.5
|
Function Value Returns
|
2.5.1
|
Returning a Function Value on Top of the Stack
|
2.5.1.1
|
Returning a Fixed-Length or Varying String Function Value
|
2.6
|
Vector and Scalar Processor Synchronization
|
2.6.1
|
Memory Synchronization
|
2.6.2
|
Exception Synchronization
|
Chapter 3 |
3
|
OpenVMS Alpha Conventions
|
3.1
|
Register Usage
|
3.1.1
|
Integer Registers
|
3.1.2
|
Floating-Point Registers
|
3.2
|
Address Representation
|
3.3
|
Procedure Representation
|
3.4
|
Procedure Types
|
3.4.1
|
Stack Frame Procedures
|
3.4.2
|
Procedure Descriptor for Procedures with a Stack Frame
|
3.4.3
|
Stack Frame Format
|
3.4.3.1
|
Fixed-Size Stack Frame
|
3.4.3.2
|
Variable-Size Stack Frame
|
3.4.3.3
|
Fixed Temporary Locations for All Stack Frames
|
3.4.3.4
|
Register Save Area for All Stack Frames
|
3.4.4
|
Register Frame Procedure
|
3.4.5
|
Procedure Descriptor for Procedures with a Register Frame
|
3.4.6
|
Null Frame Procedures
|
3.4.7
|
Procedure Descriptor for Null Frame Procedures
|
3.5
|
Procedure Call Stack
|
3.5.1
|
Current Procedure
|
3.5.2
|
Procedure Call Tracing
|
3.5.2.1
|
Referring to a Procedure Invocation from a Data Structure
|
3.5.2.2
|
Invocation Context Block
|
3.5.2.3
|
Getting a Procedure Invocation Context with a Routine
|
3.5.2.4
|
Walking the Call Stack
|
3.5.3
|
Invocation Context Access Routines
|
3.5.3.1
|
LIB$GET_INVO_CONTEXT
|
3.5.3.2
|
LIB$GET_CURR_INVO_CONTEXT
|
3.5.3.3
|
LIB$GET_PREV_INVO_CONTEXT
|
3.5.3.4
|
LIB$GET_INVO_HANDLE
|
3.5.3.5
|
LIB$GET_PREV_INVO_HANDLE
|
3.5.3.6
|
LIB$PUT_INVO_REGISTERS
|
3.6
|
Transfer of Control
|
3.6.1
|
Call Conventions
|
3.6.2
|
Linkage Section
|
3.6.3
|
Calling Computed Addresses
|
3.6.4
|
Simple and Bound Procedures
|
3.6.4.1
|
Bound Procedure Descriptors
|
3.6.4.2
|
Bound Procedure Value
|
3.6.5
|
Entry and Exit Code Sequences
|
3.6.5.1
|
Entry Code Sequence
|
3.6.5.2
|
Exit Code Sequence
|
3.7
|
Data Passing
|
3.7.1
|
Argument-Passing Mechanisms
|
3.7.2
|
Argument List Structure
|
3.7.3
|
Argument Lists and High-Level Languages
|
3.7.4
|
Unused Bits in Passed Data
|
3.7.5
|
Sending Data
|
3.7.5.1
|
Sending Mechanism
|
3.7.5.2
|
Order of Argument Evaluation
|
3.7.6
|
Receiving Data
|
3.7.7
|
Returning Data
|
3.7.7.1
|
Function Value Return by Immediate Value
|
3.7.7.2
|
Function Value Return by Reference
|
3.7.7.3
|
Function Value Return by Descriptor
|
3.8
|
Data Allocation
|
3.8.1
|
Alignment
|
3.8.2
|
Record Layout Conventions
|
3.8.2.1
|
Aligned Record Layout
|
3.8.2.2
|
OpenVMS VAX Compatible Record Layout
|
3.9
|
Multithreaded Execution Environments
|
3.9.1
|
Stack Limit Checking
|
3.9.1.1
|
Stack Guard Region
|
3.9.1.2
|
Stack Reserve Region
|
3.9.1.3
|
Methods for Stack Limit Checking
|
3.9.1.4
|
Stack Overflow Handling
|