vi
Motorola DSP56000 Family Optimizing C Compiler User’s Manual
For More Information On This Product,
Go to: www.freescale.com
Motorola
4.4.3
4.5
4.6
4.6.1
4.6.2
4.7
4.8
4.8.1
4.8.2
4.8.3
4.9
4.10
4.10.1
4.10.2
4.11
4.11.1
4.11.2
4.11.3
4.11.4
4.11.5
4.11.6
4.11.7
4.11.8
4.11.9
4.11.10
4.11.11
4.11.12
4.11.13
4.11.14
Pointer Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7
Register Usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8
Memory Usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-9
Activation Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10
Global/Static Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-13
Compiler Naming Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-13
Subroutine Call Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14
Caller Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14
Callee Sequence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15
Return Sequence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15
Software Support for Aritmetic Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15
Run-time Safety. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-16
Memory Allocation Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-16
Run-time Stack Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-17
Optimization Techniques Implemented. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-17
Register Promotion and Lifetime Analysis . . . . . . . . . . . . . . . . . . . . . . . . . 4-17
Common Sub-expression Elimination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-17
Constant Propagation/Folding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-18
Dead Code Elimination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-18
Tail Merging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-18
Strength Reduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-19
Loop Invariant Code Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-19
Hardware DO Loop Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-19
Loop Rotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-20
Jump Optimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-20
Instruction Combination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-20
Leaf Routine Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-21
Function In-lining. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-21
Instruction Scheduling / Microcode Compaction . . . . . . . . . . . . . . . . . . . . 4-21
Chapter 5
Mixing C and Assembly Language
5.1
5.2
5.2.1
5.2.2
5.2.3
5.2.4
5.2.5
5.2.5.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1
In-line Assembly Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1
Instruction Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3
Output/Input Operands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5
Explicit Register Saving. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-7
In-line Assembly Code Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-8
Controlling Labels Generated by the Compiler. . . . . . . . . . . . . . . . . . . . . . 5-17
Calling Assembly Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-17
F
Freescale Semiconductor, Inc.
n
.