Title and Copyright Information
 
About This Manual
Audience
New and Changed Features
Organization
Related Documents
Reader's Comments
Conventions
 
1    Introduction
1.1    Applicability
1.2    Architectural Level
1.3    Goals
1.4    Requirements
1.5    Definitions
 
2    Tru64 UNIX Concepts
2.1    Address Representation
2.2    Procedure Representation
2.3    Register Usage Conventions
2.3.1    Integer Registers
2.3.2    Floating-Point Registers
2.4    Register Names
2.5    Program Image Layout
 
3    Flow Control
3.1    Procedure Types
3.1.1    Procedure Descriptor Overview
3.1.2    Stack Frame Procedure
3.1.2.1    Stack Frame Format
3.1.2.2    Register Save Area
3.1.3    Register Frame Procedure
3.1.4    Null Frame Procedure
3.2    Transfer of Control
3.2.1    Call Conventions
3.2.2    Linkage
3.2.3    Link-Time Optimization
3.2.4    Calling Computed Addresses
3.2.5    Bound Procedure Values
3.2.6    Entry and Exit Code Sequences
3.2.6.1    Entry Code Sequence
3.2.6.1.1    Prologue Length
3.2.6.1.2    Frame Pointer Conventions
3.2.6.1.3    Entry Code Example for a Stack Frame Procedure
3.2.6.1.4    Entry Code Example for a Register Frame Procedure
3.2.6.2    Exit Code Sequence
3.2.6.2.1    Reserved Instruction Sequence for a Procedure Exit
3.2.6.2.2    Exit Code Sequence Steps
3.2.6.2.3    Exit Code Example for a Stack Frame Procedure
3.2.6.2.4    Exit Code Example for a Register Frame Procedure
 
4    Data Manipulation
4.1    Data Passing
4.1.1    Argument Passing Mechanisms
4.1.2    Normal Argument List Structure
4.1.3    Homed Memory Argument List Structure
4.1.4    Argument Lists and High-Level Languages
4.1.5    Unused Bits in Passed Data
4.1.6    Sending Data
4.1.6.1    Sending Mechanism
4.1.6.2    Order of Argument Evaluation
4.1.7    Returning Data
4.1.7.1    Function Value Return by Immediate Value
4.1.7.2    Function Value Return by Reference
4.1.7.3    Function Value Return by Descriptor
4.2    Data Allocation
4.2.1    Data Alignment
4.2.2    Granularity of Memory
4.2.3    Record Layout Conventions
 
5    Event Processing
5.1    Exception Handling
5.1.1    Exception Handling Requirements
5.1.2    Exception Handling Overview
5.1.3    Kinds of Exceptions
5.1.3.1    General Exceptions
5.1.3.2    Unwind Exceptions
5.1.3.3    Signal Exceptions
5.1.4    Status Values and Exception Codes
5.1.5    Exception Records
5.1.5.1    Exception Records for General Exceptions
5.1.5.2    Exception Records for Unwind Exceptions
5.1.5.3    Exception Records for Signal Exceptions
5.1.6    Frame-Based Exception Handlers
5.1.7    Establishing Handlers
5.1.8    Raising Exceptions
5.1.8.1    Raising General Exceptions
5.1.8.2    Raising General Exceptions Using gentrap
5.1.8.3    Raising Unwind Exceptions
5.1.8.4    Raising Signal Exceptions
5.1.9    Search for and Invocation of Exception Handlers
5.1.9.1    Invocation Order for Exception Handlers
5.1.9.2    Handler Invocation and Arguments
5.1.10    Modification of Exception Records and Context by Handlers
5.1.11    Handler Completion and Return Value
5.1.11.1    Completion by Reraising the Exception
5.1.11.2    Completion by Continuing Thread Execution
5.1.11.3    Completion During Unwinding
5.1.11.4    Completion from Signal Exceptions
5.1.12    Other Considerations in Handling Exceptions
5.1.12.1    Exception Synchronization
5.1.12.2    Continuation from Exceptions
5.1.13    Exception and Signal Handling Coexistence
5.2    Unwinding
5.2.1    Overview of Unwinding
5.2.2    Types of Unwind Operations
5.2.2.1    General Unwind
5.2.2.2    Exit Unwind
5.2.3    Types of Unwind Invocations
5.2.3.1    Unwind Operations with No Active Exception
5.2.3.2    Unwind Operations During an Active Exception
5.2.4    Unwind Initiation
5.2.5    Unwinding from an Inserted Code Range
5.2.6    Multiply Active Unwind Operations
5.2.6.1    Nested Unwind
5.2.6.2    Colliding Unwind
5.2.7    Unwind Completion
5.2.8    Unwinding Coexistence with setjmp and longjmp
 
6    Stack Limits in Multithreaded Execution Environments
6.1    Stack Limit Checking
6.1.1    Stack Region Definitions
6.1.2    Methods for Stack Limit Checking
6.1.2.1    Implicit Stack Limit Checking
6.1.2.2    Explicit Stack Limit Checking
6.1.3    Stack Reserve Region Checking
6.2    Stack Overflow Handling
 
7    Procedure Invocations and Call Chains
7.1    Referencing a Procedure Invocation
7.2    Providing a Procedure Invocation Context
7.3    Walking the Call Chain
 
8    Procedure Descriptors
8.1    Procedure Descriptor Representation
8.1.1    Code Range Descriptors
8.1.2    Run-Time Procedure Descriptors
8.1.3    Examples
8.1.3.1    Multiple Entry Point Example
8.1.3.2    Instrumented Code Example
8.2    Procedure Descriptor Access Routines
8.3    Run-Time Generated Code
 
Figures
3-1    Fixed Size Stack Frame Format
3-2    Variable Size Stack Frame Format
3-3    Register Save Area Layout
3-4    Register Save Area Example
4-1    In-Memory Homed Argument List Structure
5-1    Status Value Representation
5-2    Exception Record Format
5-3    Procedure Invocation Chain
8-1    Code Range Descriptor
8-2    Long Form Run-Time Procedure Descriptor
8-3    Short Form Run-Time Procedure Descriptor
 
Tables
2-1    General-Purpose Integer Registers
2-2    Floating-Point Registers
3-1    Procedure Properties Summary
4-1    Argument Item Locations
4-2    Unused Bits in Passed Data
4-3    Data Alignment Addresses
5-1    gentrap EXPT_CODE Values
 
Index