Datasheet
ARM Compiler Reference
3-24 Copyright © 1999-2001 ARM Limited. All rights reserved. ARM DUI 0067D
Float
Floating-point quantities are stored in IEEE format:
•
float
values are represented by IEEE single-precision values
•
double
and
long
double
values are represented by IEEE double-precision values.
If
softvfp
,
vfp
, or
softvfp+vfp
is selected, for
double
and
long
double
quantities the word
containing the sign, the exponent, and the most significant part of the mantissa is stored
with the lower machine address in big-endian mode and at the higher address in
little-endian mode. See Operations on floating-point types on page 3-25 for more
information.
ARM implements an ANSI extension for floating-point constants (see Hexadecimal
floating-point constants on page 3-19).
Arrays and pointers
The following statements apply to all pointers to objects in C and C++, except pointers
to members:
• adjacent bytes have addresses that differ by one
• the macro
NULL
expands to the value 0
• casting between integers and pointers results in no change of representation
• the compiler warns of casts between pointers to functions and pointers to data
• the type
size_t
is defined as
unsigned int
• the type
ptrdiff_t
is defined as
signed int
.
3.3.3 Operations on basic data types
The ARM compilers perform the usual arithmetic conversions set out in relevant
sections of the C and C++ standards. The following sections document additional points
that relate to arithmetic operations. See also Statements on page B-7.
Operations on integral types
The following statements apply to operations on the integral types:
• All signed integer arithmetic uses a two's complement representation.
• Bitwise operations on signed integral types follow the rules that arise naturally
from two's complement representation. No sign extension takes place.
• Right shifts on signed quantities are arithmetic.