Document revision date: 30 March 2001

## OpenVMS Calling Standard

Begin | Index

Contents (summary)
Preface | Preface
Chapter 1 | Introduction
Chapter 2 | OpenVMS VAX Conventions
Chapter 3 | OpenVMS Alpha Conventions
Chapter 4 | OpenVMS Argument Data Types
Chapter 5 | OpenVMS Argument Descriptors
Chapter 6 | OpenVMS Conditions
| Index
| Figures
| Examples
| Tables

## Contents

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 Signatures
3.5.1 | Call Parameter PSIG Conversions
3.5.1.1 | Native-to-Translated Code PSIG Conversions
3.5.1.2 | Translated-to-Native Code PSIG Conversions
3.5.2 | Default Procedure Signature
3.6 | Procedure Call Chain
3.6.1 | Current Procedure
3.6.2 | Procedure Call Tracing
3.6.2.1 | Referring to a Procedure Invocation from a Data Structure
3.6.2.2 | Invocation Context Block
3.6.2.3 | Getting a Procedure Invocation Context with a Routine
3.6.2.4 | Walking the Call Chain
3.6.3 | Invocation Context Access Routines
3.6.3.1 | LIB$GET_INVO_CONTEXT
3.6.3.2 | LIB$GET_CURR_INVO_CONTEXT
3.6.3.3 | LIB$GET_PREV_INVO_CONTEXT
3.6.3.4 | LIB$GET_INVO_HANDLE
3.6.3.5 | LIB$GET_PREV_INVO_HANDLE
3.6.3.6 | LIB$PUT_INVO_REGISTERS
3.7 | Transfer of Control
3.7.1 | Call Conventions
3.7.2 | Linkage Section
3.7.3 | Calling Computed Addresses
3.7.4 | Bound Procedure Descriptors
3.7.4.1 | Bound Procedure Value
3.7.5 | Entry and Exit Code Sequences
3.7.5.1 | Entry Code Sequence
3.7.5.2 | Exit Code Sequence
3.8 | Data Passing
3.8.1 | Argument-Passing Mechanisms
3.8.2 | Argument List Structure
3.8.3 | Argument Lists and High-Level Languages
3.8.4 | Unused Bits in Passed Data
3.8.5 | Sending Data
3.8.5.1 | Sending Mechanism
3.8.5.2 | Order of Argument Evaluation
3.8.6 | Receiving Data
3.8.7 | Returning Data
3.8.7.1 | Function Value Return by Immediate Value
3.8.7.2 | Function Value Return by Reference
3.8.7.3 | Function Value Return by Descriptor
3.9 | Static Data
3.9.1 | Alignment
3.9.2 | Record Layout Conventions
3.9.2.1 | Aligned Record Layout
3.9.2.2 | OpenVMS VAX Compatible Record Layout
3.10 | Multithreaded Execution Environments
3.10.1 | Stack Limit Checking
3.10.1.1 | Stack Guard Region
3.10.1.2 | Stack Reserve Region
3.10.1.3 | Methods for Stack Limit Checking
3.10.1.4 | Stack Overflow Handling

Previous | Next | Contents | Index

| privacy and legal statement |
5973PRO_CONTENTS.HTML