Go to the first, previous, next, last section, table of contents.

# ARM Dependent Features

- ARM Options: Options
- ARM Syntax: Syntax
- ARM Floating Point: Floating Point
- ARM Directives: ARM Machine Directives
- ARM Opcodes: Opcodes

## Options

`-marm [2|250|3|6|60|600|610|620|7|7m|7d|7dm|7di|7dmi|70|700|700i|710|710c|7100|7500|7500fe|7tdmi|8|strongarm|strongarm110]`
  This option specifies the target processor. The assembler will issue an error message if an attempt is made to assemble an instruction which will not execute on the target processor.
`-marmv [2|2a|3|3m|4|4t]`
  This option specifies the target architecture. The assembler will issue an error message if an attempt is made to assemble an instruction which will not execute on the target architecture.
`-mthumb`
  This option specifies that only Thumb instructions should be assembled.
`-mall`
  This option specifies that any Arm or Thumb instruction should be assembled.
`-mfpa [10|11]`
  This option specifies the floating point architecture in use on the target processor.
`-mfpe-old`
  Do not allow the assemble of floating point multiple instructions.
`-mno-fpu`
  Do not allow the assembly of any floating point instructions.
`-mthumb-interwork`
  This option specifies that the output generated by the assembler should be marked as supporting interworking.
`-mapcs [26|32]`
  This option specifies that the output generated by the assembler should be marked as supporting the indicated version of the Arm Procedure. Calling Standard.
`-EB`
  This option specifies that the output generated by the assembler should be marked as being encoded for a big-endian processor.
`-EL`
  This option specifies that the output generated by the assembler should be marked as being encoded for a little-endian processor.

## Syntax

- ARM-Chars: Special Characters
- ARM-Regs: Register Names

### Special Characters

``;'` is the line comment character.

*TODO* Explain about /data modifier on symbols.

### Register Names

*TODO* Explain about ARM register naming, and the predefined names.

## Floating Point

The ARM family uses IEEE floating-point numbers.

## ARM Machine Directives

`.code [16|32]`
  This directive selects the instruction set being generated. The value 16 selects Thumb, with the value 32 selecting ARM.
`.thumb`
  This performs the same action as .code 16.
`.arm`
  This performs the same action as .code 32.
`.force_thumb`
  This directive forces the selection of Thumb instructions, even if the target processor does not support those instructions
`.thumb_func`
  This directive specifies that the following symbol is the name of a Thumb encoded function. This information is necessary in order to allow the assembler and linker to generate correct code for interworking between Arm and Thumb instructions and should be used even if interworking is not going to be performed.

## Opcodes

`as` implements all the standard ARM opcodes.

*TODO* Document the pseudo-ops (adr, nop)

For information on the ARM or Thumb instruction sets, see ARM Software Development Toolkit Reference Manual, Advanced RISC Machines Ltd.

Go to the first, previous, next, last section, table of contents.