Title and Copyright Information |
About This Manual |
Audience |
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 | Multiply Active Unwind Operations |
5.2.5.1 | Nested Unwind |
5.2.5.2 | Colliding Unwind |
5.2.6 | Unwind Completion |
5.2.7 | 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.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 |