| |||
| Home > About Previous Releases > Differences between RVCT v2.2 and RVCT v2.1 > Changes to the ARM assembler in RVCT v2.2 | |||
The following changes were made in RVCT v2.2:
ARMv6T2 defines Thumb-2, a major enhancement of the Thumb instruction set. Thumb-2 provides almost exactly the same functionality as the ARM instruction set. It has both 16-bit and 32-bit instructions, and achieves ARM-like performance with Thumb-like code density.
ARMv6T2 also defines several new instructions in the ARM instruction set.
The assembler supports all the new instructions in both ARM and Thumb-2.
RVCT v2.2 includes support for new ARMv6 architecture extensions:
ARMv6Z defines ARM Security Extensions (TrustZone), as used in the ARM1176JZ(F)-S core.
ARMv6K defines instructions for Symmetric Multiprocessor systems (SMP), as used in the ARM MPCore.
The RVCT v2.2 assembler enables you to write source code that can be assembled to either ARM or Thumb-2 instructions. You can use the same language to write Thumb instructions for pre-Thumb-2 processors.
However, RVCT v2.2 also supports the old assembly language syntax to enable the assembly of legacy code.
The ARM assembler supports the COMMON directive
to allocate a block of memory, of the defined size, at the specified
symbol. You can also specify how the memory is aligned:
COMMONsymbol{,size{,alignment}}
The ARM assembler provides a new option, --dwarf3,to
specify DWARF 3 standard debug tables. DWARF 2 remains the default.
The ARM assembler offers new options to give symbol visibility when building shared objects or DLLs, that is, use:
--dllexport_all to provide dynamic
visibility of all global symbols unless specified otherwise
--no_hide_all to export all extern definitions
and import all undefined references.
The ARM assembler can output ELF symbols with a
visibility set through the use of new attributes to the IMPORT and EXPORT directives:
DYNAMIC
HIDDEN
PROTECTED