2.3.4. Changes to the assembler

This section describes:

New instructions and directives

The assembler provides support for new ARM architecture v5TE processors, including the Intel XScale. The instruction set is now documented in the new ADS Assembler Guide.

The ADS 1.1 assembler provides the following new directives:

PRESERVE8

Use this directive to mark assembly files that contain only functions that preserve 8-byte alignment of the stack.

REQUIRE8

Use this directive to mark assembly files that contain at least one function that requires 8-byte alignment of the stack

The assembler also supports the XScale coprocessor instructions MAR, MRA, MIA, MIAPH, and MIAxy

New assembler options

This section gives a brief summary of new assembler options for ADS 1.1. Refer to the ADS Assembler Guide for detailed information. The following assembler options are new for ADS 1.1:

-fpu softvfp+vfp

This option selects software floating-point library with pure-endian doubles, software floating-point linkage, and requiring a VFP unit. Select this option if you are interworking Thumb code with ARM code on a system that implements a VFP unit.

-fpu vfpv1

Selects hardware Vector Floating Point unit conforming to architecture VFPv1. This option is a synonym for -fpu vfp. It is not available for Thumb.

-fpu vfpv2

Selects hardware Vector Floating Point unit conforming to architecture VFPv2. This option is not available for Thumb.

-split_ldm

This option instructs the assembler to fault LDM and STM instructions if the maximum number of registers transferred exceeds:

  • five, for all STMs, and for LDMs that do not load the PC

  • four, for LDMs that load the PC.

New predefined register names

ADS 1.1 predefines the following floating-point register names:

  • s0-s31

  • S0-S31

  • d0-d15

  • D0-D15.

Impact

You cannot use these names as user-defined label or symbol names in your assembly language code.

Obsolete assembler options

The following assembler options, deprecated in ADS 1.0, are not supported in ADS 1.1:

-dwarf1, and -dwarf

This option specifies DWARF1 debug table format. Specify -dwarf2 instead of -dwarf1. -dwarf was a synonym for -dwarf1.

Impact

You must modify existing makefiles that use these options.

Changed behavior

ADS 1.1 introduces the following changes to the behavior of the assembler:

  • The assembler now faults a call to a GET directive from within a macro.

  • The assembler now faults the use of built-in variable names or predefined symbol names as a user symbol, such as a macro name. In ADS 1.0 the assembler silently ignored such usage.

  • The assembler is now much stricter and more consistent in faulting usage that does not conform to the ARM Architecture Reference manual. For example:


        CMP     ip,a3,ASL #0
    ; Generates Warning: A1484E: Obsolete shift name ‘ASL’, use LSL instead

    and:


        SWP r0,r1,[r0]
    ; Generates Warning: A1477W: This register combination results 
    ; in UNPREDICTABLE behavior

Copyright © 1999-2001 ARM Limited. All rights reserved.ARM DUI 0064D
Non-Confidential