|
|
IRIX 6.5 » Books » Developer »
MIPS O32 Compiling and Performance Tuning Guide
(document number: 007-2479-001 / published: 1994-11-14)
table of contents | additional info | download find in page
- – non_shared option
- Position-Independent Coding in Assembly Language
- –ansi option
- General Options for Compiler Drivers
- –Bsymbolic, compiling
- Compiling with –Bsymbolic
- –cckr option
- General Options for Compiler Drivers
- –g option
- General Options for Compiler Drivers
- –KPIC
- See also drivers
- Position-Independent Coding in Assembly Language
- –KPIC option
- Position-Independent Code
- General Options for Compiler Drivers
- –O0 compiler option
- Compiler Optimization Options
- –O1 compiler option
- Compiler Optimization Options
- –O2 compiler option
- Compiler Optimization Options
- –O3 compiler option
- Compiler Optimization Options
- example
- Examples of Full Optimization
- –xansi option
- General Options for Compiler Drivers
- a.out files
- Linking
- accom_mp preprocessor
- About the Compiler System
- acpp preprocessor
- About the Compiler System
- Ada
- optimization
- Adaź Programs
- address space
- Dynamic Loading Under Program Control
- addresses, optimization
- Example of Pointer Placement and Aliasing
- aliasing, optimization
- C Programs Only
- analyzer, parallel
- About the Compiler System
- ar command
- command syntax
- ar Syntax
- options
- Archiver Options
- ar command
- Using the Archiver to Create Libraries
- archive libraries
- Dynamic Shared Objects
- archiver. See ar command
- Using the Archiver to Create Libraries
- as1 assembler
- Linking Assembly Language Programs
- About the Compiler System
- assembler
- About the Compiler System
- Position-Independent Coding in Assembly Language
- assembly language programs
- linking
- Linking Assembly Language Programs
- position-independent coding
- Position-Independent Coding in Assembly Language
- bal operation
- Position-Independent Coding in Assembly Language
- basic block counting. See profiling
- Basic Block Counting
- BLOCK DATA
- Compiling with –Bsymbolic
- branch-and-link instruction
- Examples
- building ucode object library
- Building Ucode Object Libraries
- C++
- building DSOs
- Using DSOs With C++
- compiler
- About the Compiler System
- language definitions
- Creating a Header File for Multiple Languages
- ld options
- Using DSOs With C++
- cache mapping, improve
- Rearranging Procedures With cord
- cc compiler. See drivers
- About the Compiler System
- ccom_mp preprocessor
- About the Compiler System
- cfe preprocessor
- About the Compiler System
- About the Compiler System
- code generator
- About the Compiler System
- COFF
- Executable and Linking Format
- Common Object File Format
- Executable and Linking Format
- COMMON symbols
- Compiling with –Bsymbolic
- compiler drivers. See drivers
- About the Compiler System
- compiler front end
- About the Compiler System
- compiler options. See drivers
- General Options for Compiler Drivers
- compiler system
- components
- About the Compiler System
- overview
- About the Compiler System
- compiling with –Bsymbolic
- Compiling with –Bsymbolic
- conventions, syntax
- Conventions Used in This Guide
- copt optimizer
- About the Compiler System
- cord
- Rearranging Procedures With cord
- –feedback option
- Example Using cord
- –o out_file option
- cord Options
- –v option
- cord Options
- command options
- cord Options
- command syntax
- cord Syntax
- example
- Example Using cord
- feedback files
- cord Syntax
- .Counts file
- Obtaining Basic Block Counts
- .cpadd reg directive
- Position-Independent Coding in Assembly Language
- .cpload reg directive
- Position-Independent Coding in Assembly Language
- cpp preprocessor
- About the Compiler System
- .cprestore offset directive
- Position-Independent Coding in Assembly Language
- .cpword local-sym directive
- Position-Independent Coding in Assembly Language
- data type
- signed
- C Programs Only
- unsigned
- C Programs Only
- dbx. See debugging
- Header Files
- debugging
- and include files
- Header Files
- and optimization
- Loop Optimization
- driver options
- Debugging
- dis command
- Getting Information About Object Files
- Disassembling Object Files with dis
- command syntax
- Disassembling Object Files with dis
- options
- dis Options
- disassemble object file
- Getting Information About Object Files
- dlclose()
- Dynamic Loading Under Program Control
- dlerror()
- Dynamic Loading Under Program Control
- dlopen()
- Dynamic Loading Under Program Control
- dlsym()
- Dynamic Loading Under Program Control
- do while, optimization
- C Programs Only
- drivers
- – non_shared
- Position-Independent Code
- –KPIC
- Position-Independent Code
- Position-Independent Coding in Assembly Language
- –nocpp
- About the Compiler System
- –v option
- About the Compiler System
- as1 assembler
- Linking Assembly Language Programs
- bypassing
- About the Compiler System
- C++ compiler
- About the Compiler System
- cc compiler
- About the Compiler System
- cfe preprocessor
- About the Compiler System
- defaults
- Default Behavior for Compiler Drivers
- f77 compiler
- About the Compiler System
- file name suffixes
- Source File Naming Conventions
- input file suffixes
- Source File Naming Conventions
- options
- Position-Independent Coding in Assembly Language
- General Options for Compiler Drivers
- –KPIC
- Position-Independent Coding in Assembly Language
- Position-Independent Coding in Assembly Language
- –non_shared
- Position-Independent Coding in Assembly Language
- passing options to ld
- Invoking the Linker Manually
- pc compiler
- About the Compiler System
- DSOs
- About the Compiler System
- Object File Format and Dynamic Linking
- Dynamic Shared Objects
- Dynamic Shared Objects
- archive libraries
- DSOs vs. Archive Libraries
- building new DSOs
- Building DSOs
- C++
- Using DSOs With C++
- converting libraries
- Converting Libraries to DSOs
- creating DSOs
- Building DSOs
- dlclose()
- Dynamic Loading Under Program Control
- dlerror()
- Dynamic Loading Under Program Control
- dlopen()
- Dynamic Loading Under Program Control
- dlsym()
- Dynamic Loading Under Program Control
- dynamic loading diagnostics
- Dynamic Loading Under Program Control
- exporting symbols
- Controlling Symbols to be Exported or Loaded
- guidelines
- Guidelines for Using Shared Libraries
- hiding symbols
- Controlling Symbols to be Exported or Loaded
- libraries, shared
- Guidelines for Using Shared Libraries
- linking
- Linking to Dynamic Shared Objects
- loading dynamically
- Dynamic Loading Under Program Control
- mmap() system call
- Dynamic Loading Under Program Control
- munmap() system call
- Dynamic Loading Under Program Control
- naming conventions
- Creating DSOs
- QuickStart
- Taking Advantage of QuickStart
- QuickStart registry file
- Using Registry Files
- registry files
- Using Registry Files
- search path
- Searching for DSOs at Runtime
- shared libraries
- Guidelines for Using Shared Libraries
- starting quickly
- Taking Advantage of QuickStart
- unloading dynamically
- Dynamic Loading Under Program Control
- versioning
- The Versioning Mechanism of Silicon Graphics
- dynamic linking
- About the Compiler System
- Object File Format and Dynamic Linking
- Dynamic Loading Under Program Control
- Dynamic Shared Objects. See DSOs
- Linking to Dynamic Shared Objects
- ELF. See executable and linking format
- Executable and Linking Format
- elfdump command
- Listing Selected Parts of Object Files and Libraries With elfdump
- Getting Information About Object Files
- command syntax
- elfdump Syntax
- options
- elfump Options
- executable and linking format
- Executable and Linking Format
- About the Compiler System
- Object File Format and Dynamic Linking
- exporting symbols
- Controlling Symbols to be Exported or Loaded
- f77 compiler. See drivers
- About the Compiler System
- fcom preprocessor
- About the Compiler System
- file command
- Getting Information About Object Files
- Determining File Type With file
- command syntax
- file Syntax
- file type, determining
- Determining File Type With file
- files
- header
- Header Files
- include
- Header Files
- listing properties
- Getting Information About Object Files
- naming conventions
- Source File Naming Conventions
- floating point data
- pixstats Options
- format
- object file
- Object File Format and Dynamic Linking
- About the Compiler System
- Fortran
- optimization
- C and Fortran Programs
- global offset table
- Position-Independent Code
- global optimizer
- Global Optimizer
- GOT
- Position-Independent Code
- .gpword
- Position-Independent Coding in Assembly Language
- .gpword directive
- Position-Independent Coding in Assembly Language
- header files
- Header Files
- multiple languages
- Creating a Header File for Multiple Languages
- if-then-else statements
- optimization
- C and Fortran Programs
- include files
- Header Files
- debugging
- Header Files
- multiple languages
- Creating a Header File for Multiple Languages
- indirect
- calls, using
- Optimizing C and Fortran Programs
- function call
- Examples
- jump instruction
- Examples
- internationalization
- C++
- Creating a Header File for Multiple Languages
- multilanguage programs
- Specifying Libraries and DSOs
- jal operation
- Position-Independent Coding in Assembly Language
- ld
- –shared option
- Creating DSOs
- and assembly language programs
- Linking Assembly Language Programs
- C++
- Using DSOs With C++
- command syntax
- Linker Syntax
- DSOs
- Using DSOs With C++
- dynamic linking
- About the Compiler System
- Object File Format and Dynamic Linking
- example
- Linker Example
- libraries, default search path
- Specifying Libraries and DSOs
- libraries, specifying
- Linking Libraries
- link editor
- About the Compiler System
- multilanguage programs
- Linking Multilanguage Programs
- options
- Using DSOs With C++
- registry files
- Using Registry Files
- LD_BIND_NOW
- Runtime Symbol Resolution
- LD_LIBRARY_PATH
- Obtaining Basic Block Counts
- lib.so functions
- optimization
- C Programs Only
- libdl
- Dynamic Loading Under Program Control
- libraries
- and multilanguage programs
- Specifying Libraries and DSOs
- archive
- Dynamic Shared Objects
- global data
- Tuning Shared Library Code
- libdl
- Dynamic Loading Under Program Control
- locality
- Tuning Shared Library Code
- non-shared, converting to DSOs
- Converting Libraries to DSOs
- paging
- Tuning Shared Library Code
- routines to exclude
- Choosing Library Members
- routines to include
- Choosing Library Members
- self-contained
- Choosing Library Members
- shared
- Object File Format and Dynamic Linking
- About the Compiler System
- shared, static
- Linking to Dynamic Shared Objects
- Dynamic Shared Objects
- Dynamic Shared Objects
- specifying
- Linking Libraries
- static data
- Choosing Library Members
- tuning
- Tuning Shared Library Code
- linking
- dynamic. See ld
- About the Compiler System
- Object File Format and Dynamic Linking
- linking. See ld
- Linking Multilanguage Programs
- loader
- runtime. See rld
- Benefits of Using DSOs
- loading
- symbols
- Controlling Symbols to be Exported or Loaded
- local variables
- optimization
- C Programs Only
- loop unrolling
- Loop Unrolling
- machine instructions
- Getting Information About Object Files
- macro preprocessors
- About the Compiler System
- mmap() system call
- Dynamic Loading Under Program Control
- mon.out file. See profiling, pc sampling
- Obtaining pc Sampling
- multilanguage programs
- and ld
- Linking Multilanguage Programs
- and libraries
- Specifying Libraries and DSOs
- header files
- Creating a Header File for Multiple Languages
- multiprocessed executables, profiling
- Profiling Multiprocessed Executables
- munmap() system call
- Dynamic Loading Under Program Control
- naming source files
- Source File Naming Conventions
- nm command
- Getting Information About Object Files
- command syntax
- nm Syntax
- example
- nm Example
- example of undefined symbol
- Finding an Unresolved Symbol With ld
- undefined symbol
- Finding an Unresolved Symbol With ld
- nm command
- Listing Symbol Table Information: nm
- object code library
- building
- Building Ucode Object Libraries
- object file information
- disassemble
- Getting Information About Object Files
- format
- About the Compiler System
- Object File Format and Dynamic Linking
- listing section sizes
- Getting Information About Object Files
- Determining Section Sizes With size
- symbol table information
- Listing Symbol Table Information: nm
- Getting Information About Object Files
- tools
- Getting Information About Object Files
- using elfdump
- Listing Selected Parts of Object Files and Libraries With elfdump
- Getting Information About Object Files
- using odump
- Listing Selected Parts of COFF Files With odump
- Getting Information About Object Files
- odump command
- Getting Information About Object Files
- Listing Selected Parts of COFF Files With odump
- command syntax
- odump Syntax
- optimization
- –O0 compiler option
- Compiler Optimization Options
- –O1 compiler option
- Compiler Optimization Options
- –O2 compiler option
- Compiler Optimization Options
- –O3 compiler option
- Compiler Optimization Options
- Examples of Full Optimization
- Ada
- Adaź Programs
- addresses
- Example of Pointer Placement and Aliasing
- aliasing
- C Programs Only
- and debugging
- Loop Optimization
- and loop unrolling
- Loop Unrolling
- and register allocation
- Register Allocation
- C
- Optimizing C and Fortran Programs
- do while
- C Programs Only
- example
- Example of Pointer Placement and Aliasing
- Fortran
- Optimizing C and Fortran Programs
- C and Fortran Programs
- frequently used modules
- Optimizing Frequently Used Modules
- full
- Examples of Full Optimization
- function return values
- C Programs Only
- global
- Global Optimizer
- if-then-else statements
- C and Fortran Programs
- libc.so functions
- C Programs Only
- loop
- Loop Optimization
- machine-dependent
- Global Optimizer
- machine-independent
- Global Optimizer
- options
- Compiler Optimization Options
- pointers
- C Programs Only
- pragma inline
- Adaź Programs
- separate compilation units
- Optimizing Separate Compilation Units
- signed data types
- C Programs Only
- STDARG
- Example of Pointer Placement and Aliasing
- subscripts
- Example of Pointer Placement and Aliasing
- switch statements
- C and Fortran Programs
- tables
- C and Fortran Programs
- tips for improving
- Improving Global Optimization
- unions
- C Programs Only
- unsigned data type
- C Programs Only
- value parameters
- C Programs Only
- VARARG
- Example of Pointer Placement and Aliasing
- variables, global vs. local
- C Programs Only
- optimizer
- About the Compiler System
- copt optimizer
- About the Compiler System
- optimizing programs
- benefits
- Optimization and Debugging
- debugging
- Optimization and Debugging
- .option pic0 directive
- Position-Independent Coding in Assembly Language
- .option pic2 directive
- Position-Independent Coding in Assembly Language
- page size
- Tuning Shared Library Code
- paging
- alignment
- Tuning Shared Library Code
- paging, reduce
- Rearranging Procedures With cord
- parallel analyzer
- About the Compiler System
- parameters
- optimization
- C Programs Only
- pc compiler. See drivers
- About the Compiler System
- pc sampling. See profiling
- Obtaining pc Sampling
- pca analyzer
- About the Compiler System
- pfa analyzer
- About the Compiler System
- PIC. See position-independent code
- Object File Format and Dynamic Linking
- Position-Independent Coding in Assembly Language
- Building DSOs
- About the Compiler System
- pixie
- Using pixie
- –autopixie option
- pixie Options
- –counts option
- pixie Options
- –liblist option
- pixie Options
- –pids option
- pixie Options
- –verbose option
- pixie Options
- and prof –clock example
- Example Using prof –pixie –procedures –clock
- and prof –heavy example
- Example Using prof –pixie –heavy
- and prof –i example
- Example Using prof –pixie –invocations
- and prof –lines example
- Example Using prof –pixie –lines
- and prof –pids
- Summing Basic Block Count Results
- and prof –procedures example
- Example Using prof –pixie –procedures
- command options
- Using pixie
- command syntax
- Using pixie
- .Counts file
- Obtaining Basic Block Counts
- Summing Basic Block Count Results
- examples
- Obtaining Basic Block Counts
- output size
- Obtaining Basic Block Counts
- restricting output
- Obtaining Basic Block Counts
- setting search path
- Obtaining Basic Block Counts
- pixstats
- Using pixstats
- –disassemble option, example
- Examples Using pixstats
- –op option, example
- Examples Using pixstats
- command syntax
- Using pixstats
- example
- Examples Using pixstats
- profiling
- pixstats Options
- pointers
- optimization
- C Programs Only
- position-independent code
- Building DSOs
- Object File Format and Dynamic Linking
- Position-Independent Code
- About the Compiler System
- assembly language
- Position-Independent Coding in Assembly Language
- branch-and-link instruction
- Examples
- .cpadd reg directive
- Position-Independent Coding in Assembly Language
- .cpload reg directive
- Position-Independent Coding in Assembly Language
- .cprestore offset directive
- Position-Independent Coding in Assembly Language
- .cpword local-sym directive
- Position-Independent Coding in Assembly Language
- examples
- Examples
- indirect function call
- Examples
- indirect jump instruction
- Examples
- .option pic0 directive
- Position-Independent Coding in Assembly Language
- .option pic2 directive
- Position-Independent Coding in Assembly Language
- register t9
- Examples
- switch tables
- Position-Independent Coding in Assembly Language
- pragma inline
- optimization
- Adaź Programs
- preprocessing
- About the Compiler System
- preprocessors
- macro
- About the Compiler System
- procedures, rearrange
- Rearranging Procedures With cord
- prof
- –clock example
- Example Using prof –pixie –procedures –clock
- –heavy example
- Example Using prof –pixie –heavy
- –invocations example
- Example Using prof –pixie –invocations
- –lines example
- Example Using prof –pixie –lines
- –procedures example
- Example Using prof –pixie –procedures
- Also see profiling
- prof Syntax
- PROFDIR environment variable
- Creating Multiple Profile Data Files
- profiling
- Profiling With prof
- –clock option
- prof Options
- prof Defaults
- example
- Example Using prof –pixie –procedures –clock
- –dis option
- prof Options
- –dso option
- prof Defaults
- prof Options
- –exclude option
- Obtaining Basic Block Counts
- Obtaining pc Sampling
- prof Defaults
- prof Options
- –g option
- Obtaining Basic Block Counts
- –heavy option
- prof Defaults
- prof Options
- example
- Example Using prof –pixie –heavy
- –invocations option
- prof Options
- prof Defaults
- example
- Example Using prof –pixie –invocations
- –lines option
- prof Defaults
- prof Options
- example
- Example Using prof –pixie –lines
- –merge option
- prof Options
- prof Defaults
- –only option
- Obtaining Basic Block Counts
- Obtaining pc Sampling
- prof Options
- –p option
- Obtaining pc Sampling
- –pcsample option
- prof Options
- –pids option
- Summing Basic Block Count Results
- –pixie option
- prof Options
- –procedures option
- prof Options
- example
- Example Using prof –pixie –procedures
- –quit option
- prof Options
- Example Using prof –pixie –quit
- Obtaining Basic Block Counts
- –testcoverage option
- prof Options
- –zero option
- prof Options
- Also see prof
- Running the Profiler
- basic block counting
- Basic Block Counting
- command options
- prof Defaults
- command syntax
- prof Syntax
- floating point
- pixstats Options
- instruction distribution
- Examples Using pixstats
- multiple data files
- Creating Multiple Profile Data Files
- multiprocessed executables
- Profiling Multiprocessed Executables
- overview
- Overview of Profiling
- pc sampling
- pc Sampling
- example
- Example Using prof –pcsample
- pixstats
- pixstats Options
- procedure invocation example
- Examples of Basic Block Counting
- register usage
- Examples Using pixstats
- stall distribution
- Examples Using pixstats
- summing results
- Summing Basic Block Count Results
- QuickStart DSOs. See DSOs, QuickStart
- Taking Advantage of QuickStart
- Taking Advantage of QuickStart
- rearrange procedures
- Rearranging Procedures With cord
- reduce paging
- Rearranging Procedures With cord
- register
- allocation
- Register Allocation
- usage
- Examples Using pixstats
- register t9
- Examples
- registry file. See DSOs
- Using Registry Files
- relocation bits, removing
- Getting Information About Object Files
- remove
- relocation bits
- Getting Information About Object Files
- symbol table
- Getting Information About Object Files
- reorder procedures
- Rearranging Procedures With cord
- resolve text symbols
- Runtime Symbol Resolution
- return values, optimization
- C Programs Only
- rld
- Benefits of Using DSOs
- dynamic linking
- Dynamic Loading Under Program Control
- libdl
- Dynamic Loading Under Program Control
- search path
- Searching for DSOs at Runtime
- Obtaining Basic Block Counts
- runtime linker. See rld
- Benefits of Using DSOs
- scalar optimizer, copt
- About the Compiler System
- scalar variables
- word size
- C and Fortran Programs
- search path
- rld
- Searching for DSOs at Runtime
- Obtaining Basic Block Counts
- shared libraries, static
- Linking to Dynamic Shared Objects
- Dynamic Shared Objects
- shared library
- About the Compiler System
- Object File Format and Dynamic Linking
- shared objects, dynamic
- Dynamic Shared Objects
- signed data type
- optimization
- C Programs Only
- size command
- Determining Section Sizes With size
- Getting Information About Object Files
- Determining Section Sizes With size
- command syntax
- size Syntax
- example
- size Example
- source file names
- Source File Naming Conventions
- STDARG. See optimization
- Example of Pointer Placement and Aliasing
- strip command
- Removing Symbol Table and Relocation Bits with strip
- Getting Information About Object Files
- command syntax
- Removing Symbol Table and Relocation Bits with strip
- subscripts
- optimization
- Example of Pointer Placement and Aliasing
- switch statements
- optimization
- C and Fortran Programs
- switch tables
- Position-Independent Coding in Assembly Language
- symbol resolution
- Runtime Symbol Resolution
- symbol table
- removing
- Getting Information About Object Files
- symbol table information, listing
- Getting Information About Object Files
- symbols
- exporting
- Controlling Symbols to be Exported or Loaded
- loading
- Controlling Symbols to be Exported or Loaded
- syntax, conventions
- Conventions Used in This Guide
- tables, switch
- Position-Independent Coding in Assembly Language
- tools
- basic block counting
- Basic Block Counting
- optimization
- Compiler Optimization Options
- performance
- Using the Performance Tools
- procedure rearranger
- Rearranging Procedures With cord
- profiling
- Overview of Profiling
- ucode
- About the Compiler System
- type, determining for files
- Determining File Type With file
- typographical conventions
- Conventions Used in This Guide
- ucode
- object library, building
- Building Ucode Object Libraries
- object library, using
- Using Ucode Object Libraries
- tools
- About the Compiler System
- ugen code generator
- About the Compiler System
- ujoin
- About the Compiler System
- uld
- About the Compiler System
- umerge
- About the Compiler System
- unassigned data type
- optimization
- C Programs Only
- unions
- optimization
- C Programs Only
- uopt optimizer
- About the Compiler System
- upas preprocessor
- About the Compiler System
- VARARG. See optimization
- Example of Pointer Placement and Aliasing
- variables
- scalar
- C and Fortran Programs
- virtual address space
- Dynamic Loading Under Program Control
- .word directive
- Position-Independent Coding in Assembly Language
- word-size scalar variables
- C and Fortran Programs
MIPS O32 Compiling and Performance Tuning Guide
(document number: 007-2479-001 / published: 1994-11-14)
table of contents | additional info | download
Front Matter
About This Guide
Chapter 1. About the Compiler System
Chapter 2. Using the Compiler System
Chapter 3. Dynamic Shared Objects
Chapter 4. Using the Performance Tools
Chapter 5. Optimizing Program Performance
Appendix A. Position-Independent Coding in Assembly Language
Index
home/search |
what's new |
help
|
|
|