| |||
| Home > About Previous Releases > Differences between RVCT v3.0 and RVCT v2.2 > General changes in RVCT v3.0 | |||
The following changes were made in RVCT v3.0:
RVCT v3.0 includes support for two ARMv7 architecture profiles:
The application profile for systems supporting the ARM and Thumb-2 instruction sets, with Thumb®-2EE, for virtual (MMU-based) memory systems.
The micro-controller profile for Thumb-2 only.
RVCT v3.0 includes support for all ARM architectures from ARMv4 onwards. All architecture names prior to ARMv4 are now obsolete and no longer supported.
RVCT v3.0 supports two of the ARM Cortex™ processor family:
Cortex-A8
Cortex-M3.
To see a full list of supported architectures and processors use:
armcc --cpu list
RVCT v3.0 contains preliminary support for two components of ARMv7 architecture, that is, the Advanced SIMD Extension (also called NEON Technology) and VFPv3. This means that a substantial number of SIMD (Single Instruction, Multiple Data) instructions and some VFPv3 instructions are now available in both ARM and Thumb-2 instruction sets.
NEON is a 64/128 bit hybrid SIMD technology targeted at signal processing applications and embedded processors. NEON is implemented as part of the processor, but has its own execution pipelines and a register bank that is distinct from the ARM register bank. NEON instructions are available in both ARM and Thumb-2.
To see a full list of supported floating-point architectures use:
armcc --fpu list
RVCT v3.0 supports the Thumb-2 Execution Environment (Thumb-2EE) for ARMv7. The Thumb-2EE instruction set is based on Thumb-2, with some changes and additions to make it a better target for dynamically generated code.
The Thumb-2EE extension introduces a new instruction set state, ThumbEE state. In this state, the instruction set is almost identical to the Thumb-2 instruction set. However, some instructions have modified behavior, and some new instructions are available.
The ARM assembler can be used to assemble Intel® Wireless MMX™ Technology instructions to develop code, for example, for the PXA270 processor.
RVCT v3.0 provides full support for DWARF 3 debug tables (DWARF Debugging Standard Version 3), as required by the latest release of the ABI for the ARM Architecture (base standard) [BSABI].
DWARF 3 is the default format and includes:
full support for debugging C++ namespaces
an increase in the size of debug information.
In this release of the compiler and assembler:
if you do not specify a format, DWARF 3 is assumed
if you specify --debug (-g),
DWARF 3 is generated by default.
The command-line option, --dwarf2, is still
supported for backwards compatibility.
The ARM compiler and linker support Thread Local Storage (TLS) to enable programs to use multiple threads. Two new keywords are available to support TLS on MPCore™:
__declspec(thread)
__thread.
The ARM compiler now includes high-level scalar
optimizations, including loop unrolling. These enhancements are
automatically invoked when compiling with -O3 and
can give significant performance benefits at a small code size cost.
In RVCT v3.0, dividing an integer (either int or long long) by zero returns zero by default. This is a change to the previous behavior where the result at run-time was to terminate the program with an error message.
In RVCT v3.0, you can change the language used for error and warning messages. For example, to display messages in Japanese on an English-based workstation, use:
--message_locale ja_JP
Previously available in the ARM compiler only, the --show_cmdline option
is now available in the assembler, linker, armar,
and fromelf. Use this to see how the command
line has been processed. The commands are shown normalized, and
the contents of any via files are expanded. However, using this
option does not trap accidental errors in your command line.
RVCT v3.0 introduces the environment variables:
RVCT30_CCOPT
RVCT30_LINKOPT
RVCT30_ASMOPT.
The value of this variable is inserted at the front of the command string as appropriate for each of the RVCT tools. Options specified in the environment variables can be overridden by arguments on the command-line.
The following changes were made in RVCT v3.0:
All features and command-line options that were deprecated in RVCT v2.2 are obsolete in RVCT v3.0. See Appendix A Using Old Command-line Options in the Compiler User Guide for a list.
The previous release of RVCT supported old compiler options to help you to migrate your message options to the new release. However, these options are now obsolete and no longer supported. See Appendix A Using Old Command-line Options in the Compiler User Guide for more information.
Multiline strings are not supported in the ARM compiler. This behavior was previously supported in GNU mode for backward compatibility.
The following compiler-specific pragmas are no longer supported:
check_printf_formats, check_scanf_formats,
and check_vprintf_formats
[no_]debug.
Support for software stack checking is obsolete. The following compiler and assembler options are not supported in this release:
--apcs
/swst
--apcs /noswst
--apcs /swstna.
The following are no longer available:
pragma [no_]check_stack
predefined macro __APCS_SWST.
Software stack checked versions of the libraries are no longer supplied.
The following changes were made in RVCT v3.0:
The ARM compiler supports the option --apcs
/adsabi to compile code that is compatible with the old ARM Developer Suite™ (ADS) Application
Binary Interface (ABI). This is deprecated and will be
removed in a future release.
The following assembler options are deprecated and will be removed in a future release:
--no_cache
--no_regs (use --regnames=none instead)
--checkreglist (use --diag_warning
1206 instead).
Support for using section attribute qualifiers (RO, RW, ZI, DBG)
with the linker option --remove is deprecated and
will be removed in a future release.
The C++ configuration option --dll_vtbl has
been replaced by the new option --export_all_vtbl. --dll_vtbl is
deprecated and will not be supported in the future.
Support for --memaccess -UL41 is
deprecated and will be removed in a future release. --memaccess
-UL41 is replaced by --no_unaligned_access.
The compiler option --depend_format=unix replaces --unix_depend_format.
This option is deprecated and will be removed in a future release.
The syntax of fromelf --text is
different in RVCT v3.0. The following forms are deprecated and will
be removed in a future release:
fromelf --text=xx
.fromelf --text/xx
ARM does not recommend the use of the __user_stack_slop function.
This is deprecated and will be removed in a future release.