- •General
- •Introduction
- •Legal
- •Installation
- •Installing for DOS/Windows
- •Installing for AmigaOS
- •Tutorial
- •The Frontend
- •Usage
- •The Compiler
- •General Compiler Options
- •Errors and Warnings
- •Data Types
- •Optimizations
- •Register Allocation
- •Flow Optimizations
- •Common Subexpression Elimination
- •Copy Propagation
- •Constant Propagation
- •Dead Code Elimination
- •Loop-Invariant Code Motion
- •Strength Reduction
- •Induction Variable Elimination
- •Loop Unrolling
- •Function Inlining
- •Intrinsic Functions
- •Unused Object Elimination
- •Alias Analysis
- •Inter-Procedural Analysis
- •Cross-Module Optimizations
- •Instruction Scheduling
- •Debugging Optimized Code
- •Pragmas
- •Register Parameters
- •Inline-Assembly Functions
- •Variable Attributes
- •Type Attributes
- •__typeof
- •__offsetof
- •Known Problems
- •Credits
- •Additional options
- •Small data
- •Small code
- •FPUs
- •Math
- •Stack
- •Known problems
- •PowerPC Backend
- •Additional options for this version
- •Stack
- •Stdarg
- •Known problems
- •DEC Alpha Backend
- •Additional options for this version
- •Stdarg
- •i386 Backend
- •Additional options for this version
- •Stdarg
- •Known Problems
- •c16x Backend
- •Additional options for this version
- •Stdarg
- •Known Problems
- •Additional options for this version
- •Stack
- •Stdarg
- •Known Problems
- •Instruction Scheduler
- •Introduction
- •Usage
- •Known problems
- •C Library
- •Introduction
- •Legal
- •Embedded Systems
- •Startup
- •Heap
- •Input/Output
- •Floating Point
- •Useless Functions
- •Linking/Locating
- •Startup
- •Floating point
- •Stack
- •Small data model
- •Restrictions
- •Minimal startup
- •amiga.lib
- •auto.lib
- •extra.lib
- •ixemul
- •Introduction
- •Legal
- •Usage
- •Startup
- •Floating point
- •Stack
- •Small data model
- •Restrictions
- •libamiga.a
- •libauto.a
- •libextra.a
- •WarpOS/PPC
- •Startup
- •Floating point
- •Stack
- •Restrictions
- •amiga.lib
- •auto.lib
- •extra.lib
- •MorphOS/PPC
- •Floating point
- •Stack
- •Small data model
- •Restrictions
- •libamiga.a
- •libauto.a
- •libextra.a
- •List of Errors
- •Backend Interface
Chapter 10: Instruction Scheduler |
63 |
10 Instruction Scheduler
vsc - scheduler for vbcc (c) in 1997-99 by Volker Barthelmann
10.1 Introduction
vsc is an instruction-scheduler which reorders the assembly output of vbcc and tries to improve performance of the generated code by avoiding pipeline stalls etc.
Like the compiler vbcc it is split into a target independent and a target dependent part.
However there may be code-generators for vbcc which do not have a corresponding scheduler.
This document only deals with the target independent parts of vsc. Be sure to read all the documents for your machine.
10.2 Usage
Usually vsc will be called by a frontend. However if you call it directly, it has to be done like this:
vsc [options] input-file output-file
The following options are supported:
‘-quiet’ Do not print the copyright notice.
‘-debug=<n>’
Set debug-level to <n>.
Note that depending on the target vbcc may insert hints into the generated code to tell vsc what CPU to schedule for. Code scheduled for a certain CPU may run much slower on slightly di erent CPUs. Therefore it is especially important to specify the correct target-
CPU when compiling.
10.3 Known problems
− works only on basic-blocks
64 |
vbcc manual |