| |||
| Home > Differences > Differences between RVCT v3.0 and RVCT v2.2 > Changes to the ARM assembler | |||
Be aware of the following differences in the assembler in RVCT v3.0:
RVCT v3.0 supports the Thumb-2 Execution Environment (Thumb-2EE) architecture extension to ARMv7. This is based on Thumb-2. The key differences are:
new ENTERX and LEAVEX state
changing instructions in both Thumb state and the new ThumbEE state
new HB, HBL, HBLP,
and HBP instructions to branch to handlers
null pointer checking on loads and stores
an additional CHKA instruction in ThumbEE
state to check array bound
some other modifications to the load, store, and
branch instructions (BX, BLX, and BXJ).
RVCT v3.0 contains initial support for two optional components of ARMv7 architecture, that is, Advanced SIMD extension and VFPv3.
Advanced SIMD extension consists of:
the Advanced SIMD registers. These are the same as the VFPv3 register bank, but are viewed as either thirty-two 64-bit registers or sixteen 128-bit registers.
a substantial number of new instructions that treat the Advanced SIMD registers as vectors of elements.
These new instructions are available in both ARM and Thumb-2 instruction sets.
VFPv3 has the following enhancements over VFPv2:
A substantial extension to the VFPv2 register bank that doubles the earlier VFP register bank to thirty-two 64-bit registers. These registers are in addition to the main ARM general-purpose registers.
Several new instructions that provide efficient loading of a substantial number of commonly used floating-point numbers and efficient conversion between floating-point and fixed-point formats.
These new instructions are available in both ARM and Thumb-2 instruction sets.
As part of ARM support for Advanced SIMD instructions, bit 27 of the Floating-Point Status and Control Register (FPSCR) is now reserved as a cumulative flag to show when saturation occurs in a saturating integer operation.
The ARM assembler can be used to assemble Wireless MMX Technology instructions to develop code for the PXA270 processor. Two new directives have been introduced and the syntax of load/store instructions has been changed to provide support for symbols and literals.
Use the following option to list output to a file:
--list file
If no is
given, use file--list= to send the output to .inputfile.lst
You can use --list to send the output to
a .lst file. However, this syntax is deprecated
and the assembler issues a warning.
Two new directives have been introduced:
RELOC, to encode
an ELF relocation in an object file
QN, to define a name for a specified
NEON Quadword register.
The ARM assembler now supports the command-line
option --diag_style gnu to display messages matching
the format reported by gcc. This is in addition
to the arm and ide formats available
in the previous release.
Local symbols are no longer preserved with armasm
--debug. You must specify --keep if you
want to preserve the local symbols to aid debugging.
In RVCT v2.2, using the LDR pseudo-instruction with
local labels in Thumb assembler code resulted in an address where
the Thumb bit was not set. If your code expects this behavior, use armasm
--untyped_local_labels.