29.10.2014 Views

ARM Compiler toolchain v4.1 for µVision Using the Compiler

ARM Compiler toolchain v4.1 for µVision Using the Compiler

ARM Compiler toolchain v4.1 for µVision Using the Compiler

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Contents<br />

5.19 Inline functions ....................................................................................................... 5-29<br />

5.20 <strong>Compiler</strong> decisions on function inlining .................................................................. 5-30<br />

5.21 Automatic function inlining and static functions ..................................................... 5-32<br />

5.22 Inline functions and removal of unused out-of-line functions at link time ............... 5-33<br />

5.23 Automatic function inlining and multifile compilation .............................................. 5-34<br />

5.24 Restriction on overriding compiler decisions about function inlining ...................... 5-35<br />

5.25 <strong>Compiler</strong> modes and inline functions ..................................................................... 5-36<br />

5.26 Inline functions in C++ and C90 mode ................................................................... 5-37<br />

5.27 Inline functions in C99 mode ................................................................................. 5-38<br />

5.28 Inline functions and debugging .............................................................................. 5-40<br />

5.29 Types of data alignment ........................................................................................ 5-41<br />

5.30 Advantages of natural data alignment ................................................................... 5-42<br />

5.31 <strong>Compiler</strong> storage of data objects by natural byte alignment .................................. 5-43<br />

5.32 Relevance of natural data alignment at compile time ............................................ 5-44<br />

5.33 Unaligned data access in C and C++ code ........................................................... 5-45<br />

5.34 The __packed qualifier and unaligned data access in C and C++ code ................ 5-46<br />

5.35 Unaligned fields in structures ................................................................................. 5-47<br />

5.36 Per<strong>for</strong>mance penalty associated with marking whole structures as packed .......... 5-48<br />

5.37 Unaligned pointers in C and C++ code .................................................................. 5-49<br />

5.38 Unaligned Load Register (LDR) instructions generated by <strong>the</strong> compiler ............... 5-50<br />

5.39 Detailed comparison of an unpacked struct, a __packed struct, and a struct with<br />

individually __packed fields ................................................................................... 5-51<br />

5.40 <strong>Compiler</strong> support <strong>for</strong> floating-point arithmetic ........................................................ 5-53<br />

5.41 Default selection of hardware or software floating-point support ........................... 5-55<br />

5.42 Example of hardware and software support differences <strong>for</strong> floating-point arithmetic .....<br />

5-56<br />

5.43 Vector Floating-Point (VFP) architectures ............................................................. 5-58<br />

5.44 Limitations on hardware handling of floating-point arithmetic ................................ 5-59<br />

5.45 Implementation of Vector Floating-Point (VFP) support code ............................... 5-60<br />

5.46 <strong>Compiler</strong> and library support <strong>for</strong> half-precision floating-point numbers ................. 5-61<br />

5.47 Half-precision floating-point number <strong>for</strong>mat ........................................................... 5-62<br />

5.48 <strong>Compiler</strong> support <strong>for</strong> floating-point computations and linkage ............................... 5-63<br />

5.49 Types of floating-point linkage ............................................................................... 5-64<br />

5.50 <strong>Compiler</strong> options <strong>for</strong> floating-point linkage and computations ............................... 5-65<br />

5.51 Integer division-by-zero errors in C code ............................................................... 5-67<br />

5.52 About trapping integer division-by-zero errors with __aeabi_idiv0() ...................... 5-68<br />

5.53 About trapping integer division-by-zero errors with __rt_raise() ............................ 5-69<br />

5.54 Identification of integer division-by-zero errors in C code ...................................... 5-70<br />

5.55 Examining parameters when integer division-by-zero errors occur in C code ....... 5-71<br />

5.56 Software floating-point division-by-zero errors in C code ...................................... 5-72<br />

5.57 About trapping software floating-point division-by-zero errors ............................... 5-73<br />

5.58 Identification of software floating-point division-by-zero errors .............................. 5-74<br />

5.59 Software floating-point division-by-zero debugging ............................................... 5-76<br />

5.60 New language features of C99 .............................................................................. 5-77<br />

5.61 New library features of C99 ................................................................................... 5-79<br />

5.62 // comments in C99 and C90 ................................................................................. 5-80<br />

5.63 Compound literals in C99 ...................................................................................... 5-81<br />

5.64 Designated initializers in C99 ................................................................................ 5-82<br />

5.65 Hexadecimal floating-point numbers in C99 .......................................................... 5-83<br />

5.66 Flexible array members in C99 .............................................................................. 5-84<br />

5.67 __func__ predefined identifier in C99 .................................................................... 5-85<br />

5.68 inline functions in C99 ............................................................................................ 5-86<br />

5.69 long long data type in C99 and C90 ...................................................................... 5-87<br />

5.70 Macros with a variable number of arguments in C99 ............................................ 5-88<br />

5.71 Mixed declarations and statements in C99 ............................................................ 5-89<br />

5.72 New block scopes <strong>for</strong> selection and iteration statements in C99 ........................... 5-90<br />

5.73 _Pragma preprocessing operator in C99 ............................................................... 5-91<br />

5.74 Restricted pointers in C99 ..................................................................................... 5-92<br />

5.75 Additional library functions in C99 ......................................................... 5-93<br />

5.76 Complex numbers in C99 ...................................................................................... 5-94<br />

<strong>ARM</strong> DUI 0375C Copyright © 2007-2008, 2011 <strong>ARM</strong>. All rights reserved. v<br />

ID061811<br />

Non-Confidential

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!