Title and Copyright Information
About This Manual
New and Changed Features
Related Documents
Reader's Comments
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    Stack Frame Format    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    Entry Code Sequence    Prologue Length    Frame Pointer Conventions    Entry Code Example for a Stack Frame Procedure    Entry Code Example for a Register Frame Procedure    Exit Code Sequence    Reserved Instruction Sequence for a Procedure Exit    Exit Code Sequence Steps    Exit Code Example for a Stack Frame Procedure    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    Sending Mechanism    Order of Argument Evaluation
4.1.7    Returning Data    Function Value Return by Immediate Value    Function Value Return by Reference    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    General Exceptions    Unwind Exceptions    Signal Exceptions
5.1.4    Status Values and Exception Codes
5.1.5    Exception Records    Exception Records for General Exceptions    Exception Records for Unwind Exceptions    Exception Records for Signal Exceptions
5.1.6    Frame-Based Exception Handlers
5.1.7    Establishing Handlers
5.1.8    Raising Exceptions    Raising General Exceptions    Raising General Exceptions Using gentrap    Raising Unwind Exceptions    Raising Signal Exceptions
5.1.9    Search for and Invocation of Exception Handlers    Invocation Order for Exception Handlers    Handler Invocation and Arguments
5.1.10    Modification of Exception Records and Context by Handlers
5.1.11    Handler Completion and Return Value    Completion by Reraising the Exception    Completion by Continuing Thread Execution    Completion During Unwinding    Completion from Signal Exceptions
5.1.12    Other Considerations in Handling Exceptions    Exception Synchronization    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    General Unwind    Exit Unwind
5.2.3    Types of Unwind Invocations    Unwind Operations with No Active Exception    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    Nested Unwind    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    Implicit Stack Limit Checking    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    Multiple Entry Point Example    Instrumented Code Example
8.2    Procedure Descriptor Access Routines
8.3    Run-Time Generated Code
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
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