About This Manual 1 Architecture-Based Considerations 2 Lexical Conventions 3 Main Instruction Set 4 Floating-Point Instruction Set 6 Programming Considerations 7 Object Files 8 Symbol Table 9 Program Loading and Dynamic Linking B 32-Bit Considerations C Basic Machine Definition D PALcode Instruction Summaries
Table of Contents
Audience
New and Changed Features
Organization
Related Documents
Reader's Comments
Conventions
1.1 Registers
1.1.1 Integer Registers
1.1.2 Floating-Point Registers
1.2 Bit and Byte Ordering
1.3 Addressing
1.3.1 Aligned Data Operations
1.3.2 Unaligned Data Operations
1.4 Exceptions
1.4.1 Main Processor Exceptions
1.4.2 Floating-Point Processor Exceptions
2.1 Blank and Tab Characters
2.2 Comments
2.3 Identifiers
2.4 Constants
2.4.1 Scalar Constants
2.4.2 Floating-Point Constants
2.4.3 String Constants
2.5 Multiple Lines Per Physical Line
2.6 Statements
2.6.1 Labels
2.6.2 Null Statements
2.6.3 Keyword Statements
2.6.4 Relocation Operands
2.7 Expressions
2.7.1 Expression Operators
2.7.2 Expression Operator Precedence Rules
2.7.3 Data Types
2.7.4 Type Propagation in Expressions
2.8 Address Formats
3.1 Load and Store Instructions
3.1.1 Load Instruction Descriptions
3.1.2 Store Instruction Descriptions
3.2 Arithmetic Instructions
3.3 Logical and Shift Instructions
3.4 Relational Instructions
3.5 Move Instructions
3.6 Control Instructions
3.7 Byte-Manipulation Instructions
3.8 Special-Purpose Instructions
4.1 Background Information on Floating-Point Operations
4.1.1 Floating-Point Data Types
4.1.2 Floating-Point Control Register
4.1.3 Floating-Point Exceptions
4.1.4 Floating-Point Rounding Modes
4.1.5 Floating-Point Instruction Qualifiers
4.2 Floating-Point Load and Store Instructions
4.3 Floating-Point Arithmetic Instructions
4.4 Floating-Point Relational Instructions
4.5 Floating-Point Move Instructions
4.6 Floating-Point Control Instructions
4.7 Floating-Point Special-Purpose Instructions
6.1 Calling Conventions
6.2 Program Model
6.3 General Coding Concerns
6.3.1 Register Use
6.3.2 Using Directives to Control Sections and Location Counters
6.3.3 The Stack Frame
6.3.4 Examples
6.4 Developing Code for Procedure Calls
6.4.1 Calling a High-Level Language Procedure
6.4.2 Calling an Assembly-Language Procedure
6.5 Memory Allocation
7.1 Object File Overview
7.2 Object File Sections
7.2.1 File Header
7.2.2 Optional Header
7.2.3 Section Headers
7.2.4 Section Data
7.2.5 Section Relocation Information
7.2.5.1 Relocation Table Entry
7.2.5.2 Assembler and Linker Processing of Relocation Entries
7.3 Object-File Formats (OMAGIC, NMAGIC, ZMAGIC)
7.3.1 Impure Format (OMAGIC) Files
7.3.2 Shared Text (NMAGIC) Files
7.3.3 Demand Paged (ZMAGIC) Files
7.3.4 Ucode Objects
7.4 Loading Object Files
7.5 Archive Files
7.6 Linker Defined Symbols
8.1 Symbol Table Overview
8.2 Format of Symbol Table Entries
8.2.1 Symbolic Header
8.2.2 Line Number Table
8.2.3 Procedure Descriptor Table
8.2.4 Local Symbol Table
8.2.4.1 Symbol Type (st) Constants
8.2.4.2 Storage Class (sc) Constants
8.2.5 Auxiliary Symbol Table
8.2.6 File Descriptor Table
8.2.7 External Symbol Table
9.1 Object File Considerations
9.1.1 Structures
9.1.2 Base Addresses
9.1.3 Segment Access Permissions
9.1.4 Segment Contents
9.2 Program Loading
9.3 Dynamic Linking
9.3.1 Dynamic Loader
9.3.2 Dynamic Section (.dynamic)
9.3.2.1 Shared Object Dependencies
9.3.3 Global Offset Table (.got)
9.3.3.1 Resolving Calls to Position-Independent Functions
9.3.4 Dynamic Symbol Section (.dynsym)
9.3.5 Dynamic Relocation Section (.rel.dyn)
9.3.6 Msym Section (.msym)
9.3.7 Hash Table Section (.hash)
9.3.8 Dynamic String Section (.dynstr)
9.3.9 Initialization and Termination Functions
9.3.10 Quickstart
9.3.10.1 Shared Object List (.liblist)
9.3.10.2 Conflict Section (.conflict)
9.3.10.3 Ordering of Sections
B.1 Canonical Form
B.2 Longword Instructions
B.3 Quadword Instructions for Longword Operations
B.4 Logical Shift Instructions
B.5 Conversions to Quadword
B.6 Conversions to Longword
C.1 Implicit Register Use
C.2 Addresses
C.3 Immediate Values
C.4 Load and Store Instructions
C.5 Integer Arithmetic Instructions
C.6 Floating-Point Load Immediate Instructions
C.7 One-to-One Instruction Mappings
D.1 Unprivileged PALcode Instructions
D.2 Privileged PALcode Instructions
Examples
6-1 Nonleaf Procedure
6-2 Leaf Procedure Without Stack Space for Local Variables
6-3 Leaf Procedure With Stack Space for Local Variables