TASKING VX-toolset for ARM



TASKING ARM Product Page, TASKING ARM Support Page, TASKING Developers' Forum, TASKING Home Page


These release notes describes ABI issues, important notes and changes and new features since version v1.2r1, v2.0r1 & v2.0r2 of the TASKING VX-toolset for ARM.

The following parts are described:

The tools support architectures ARMv4, ARMv4T, ARMv5T, ARMv5TE and XScale. The Jazelle extension of the ARMv5TE architecture (ARMv5TEJ) is supported only by the assembler, i.e. the bxj instruction is supported.

With version v2.0r1 support is added for ARMv6-M, ARMv7-M and for Vector Floating Point (VFP).

With version v2.0r2 support is added for Windows Vista.

With version v2.0r2 a Cortex only version of the tools is available. The Cortex only products support the ARMv6-M and ARMv7-M architectures.

With version v2.0r3 all reported compiler bugs were fixed


Thumb-2 Instruction Set

The ARMv7-M architecture profile implements the Thumb-2 instruction set. Besides some new 16-bit Thumb instructions it introduces 32-bit Thumb instructions and an IT instruction for conditional execution. This makes the Thumb-2 instruction set almost as powerful as the 32-bit ARM instruction set. The 32-bit Thumb-2 instructions can be executed in Thumb state and need only be half-word aligned in memory. The IT instruction (If/Then) sets the conditions for up to four instructions following the IT instruction. For a number of Thumb-2 instructions both 16-bit encodings as well as 32-bit encodings exists. The assembler selects the proper encoding for such an instruction, although in some situations the user/compiler can force the selection of a specific encoding.

Unified Assembly Language (UAL)

With the Thumb-2 instruction set ARM Ltd introduced the Unified Assembly Language (UAL) which provides a canonical form for all ARM and Thumb instructions. The UAL allows you to write assembly code which can be assembled using 32-bit ARM instructions or using 16-bit and 32-bit Thumb-2 instructions. This means that you can use IT instructions followed by a block of up to four conditional instructions in both ARM and Thumb-2 code. The assembler checks for consistency between the two, and assembles the appropriate code depending on the current instruction set.

With version v2.0r1 the C compiler generates UAL code for all architectures.

Windows Vista (since version 2.0r2)

In Windows Vista, the User Account Control (UAC) introduces fundamental changes to enhance the experience for the non-administrative user. Registry and file virtualization in Windows Vista redirects per-machine file and registry writes to per-user locations if the user doesn't have administrative privileges. The TASKING VX-toolset for ARM will be installed in the C:\Program Files directory by default. For all executables, this is the preferred location. But for configuration files, the example working directory and the library rebuild environment, this can cause weird behavior, because generated/updated files are put physical elsewhere. These files should be moved (or copied) to a location within the C:\Documents and Settings\user\My Documents directory. For the example directory this will be handled by EDE. The first time EDE is started, a dialog box appears and a destination location for all examples can be entered. Examples will be copied only once. For the the library rebuild environment, you have to copy the contents of the lib directory to another location yourself.


The TASKING VX-toolset for ARM optionally includes a C++ compiler.

The C++ compiler accepts the C++ language of the ISO/IEC 14882:1998 C++ standard (with some minor exceptions) and can be seen as a preprocessor or front end which accepts C++ source files or sources using C++ language features. The output generated by the C++ compiler is C, which can be translated by the C compiler. The C++ compiler also accepts embedded C++ language extensions.

With version v2.0r2 the C++ compiler option --instantiate=none became obsolete. This lacks the need of a Prelinker, so this utility is no longer part of the tools.


With version v2.0r1 the C compiler generates Unified Assembly Language (UAL) code.

New compiler options (since version 2.0r1)

 Option Description
--fpu=fpu With this option you define the kind of FPU support with which you create your application.
--unaligned-access With this option you tell the compiler to generate more efficient instructions to access unaligned 16-bit or larger data. Halfword or word load and store instructions are used instead of byte instructions. This option is only useful for cores that have support for unaligned access.
To address the memory of the ARM, you can use far 32-bit indirect calls or near 26-bit PC-relative calls.
This option is especially relevant for ARMv6-M. For other architectures near calls (the default) are preferred and the linker will generate veneers if necessary.

New function qualifiers (since version 2.0r1)

Keyword Description
__interrupt_svc Software interrupt (replaces old function qualifier __interrupt_swi).