SDAA552 September   2026 MSPM0C1103 , MSPM0C1103-Q1 , MSPM0C1104 , MSPM0C1104-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
  5. 2C Compiler Optimization
    1. 2.1 Optimization Settings
      1. 2.1.1 Optimization Level
      2. 2.1.2 Optnone
      3. 2.1.3 Link Time Optimization – LTO
    2. 2.2 Runtime Model Options
      1. 2.2.1 Data and Function Sections
      2. 2.2.2 Function Outlining
  6. 3Coding Techniques
    1. 3.1 Use Smallest Possible Types for Variables and Constants
    2. 3.2 Avoid Multiply and Divide
    3. 3.3 Use Lookup Tables Instead of Manual Calculation
    4. 3.4 Use Functions Effectively
    5. 3.5 Implement Down Counting Loops
    6. 3.6 Use the __even_in_range() Intrinsic
    7. 3.7 volatile Keyword
  7. 4Example
    1. 4.1 Optimization Level
    2. 4.2 LTO
    3. 4.3 Runtime Model Options
  8. 5Summary
  9. 6References

Avoid Multiply and Divide

Multiply and divide operations take many cycles to perform and require more code to enable these operations. Therefore, finding ways to remove unnecessary multiplication or division from code can be a great way to save on both code space and execution time.

For multiplication or division by powers of 2 (for example, 2, 4, 8, 16, …), bit shifts can be used instead. To do a bit shift in C, use >> to right shift and << to left shift, then the number of bits to shift. This is much more efficient than a multiply or divide because there are assembly instructions and hardware in the CPU for bit shifts.

Another option is to determine if multiplications or divisions can be computed at compile-time rather than runtime. For example, when multiplying two constants with no variable, the compiler can calculate the result during compilation and use the computed value directly, eliminating the need for multiplication code that would otherwise consume both memory and execution time.

If a variable is part of a multiplication, such that it cannot all be calculated ahead, and that variable has a known range of values, a lookup table could be created to contain the possible results.