About This Manual
Audience
New and Changed Features
Organization
Related Documents
Reader's Comments
Conventions
1 Architecture-Based Considerations
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 Lexical Conventions
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 Main Instruction Set
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 Floating-Point Instruction Set
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 Programming Considerations
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 Object Files
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 Symbol Table
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 Program Loading and Dynamic Linking
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 32-Bit Considerations
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 Basic Machine Definition
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 PALcode Instruction Summaries
D.1 Unprivileged PALcode Instructions
D.2 Privileged PALcode Instructions