xvi
SC100 C Compiler
3-32
3-33
3-34
3-35
3-36
4-1
4-2
4-3
4-4
4-5
4-6
4-7
4-8
4-9
4-10
4-11
4-12
5-1
5-2
5-3
5-4
5-5
5-6
5-7
5-8
5-9
5-10
5-11
5-12
5-13
5-14
5-15
5-16
5-17
5-18
5-19
5-20
#pragma interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-58
#pragma profile with constant value. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-58
#pragma profile with frequency ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-59
#pragma loop count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-60
#pragma align . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-62
Inlining a single assembly instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
Inlining syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4
Simple inlined assembly function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4
Inlined assembly function with labels and hardware loops . . . . . . . . . . . . . . . . 4-5
Referencing global variables in an inlined assembly function. . . . . . . . . . . . . . 4-6
Assembly function in a separate file. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7
C code calling assembly function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8
Integrating C and assembly files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8
Data structure shared between C and assembly . . . . . . . . . . . . . . . . . . . . . . . . . 4-9
Specifying the output of offset information . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-9
Data structure offsets in the assembly output file. . . . . . . . . . . . . . . . . . . . . . . . 4-9
Using symbolic offsets in assembly code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10
Instruction transformation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2
Invoking the optimizer with default settings . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6
Invoking the optimizer for high-level optimizations only . . . . . . . . . . . . . . . . . 5-6
Invoking the optimizer for time optimization. . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6
Invoking the optimizer in global mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-7
Simple instruction dependency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-8
Algorithm instruction dependency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-9
Loop transformation - simple loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-10
Loop transformation - dynamic loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-11
Loop transformation - multi-step loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-12
Loop transformation - composed variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-13
Loop transformation - square loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-14
Loop transformation - triangular loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-15
Function inlining. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-16
Common subexpression elimination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-17
Loop invariant code motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-17
Constant folding and propagation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-17
Jump-to-jump elimination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-18
Dead code elimination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-18
Dead storage/assignment elimination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-18