The A32 instruction set is a set of 32-bit instructions providing a comprehensive range of operations.
ARMv4T and later define a 16-bit instruction set called Thumb, or T32. Most of the functionality of the 32-bit A32 instruction set is available, but some operations require more instructions. The T32 instruction set provides better code density, at the expense of performance.
ARMv6T2 introduces Thumb-2 technology. This is a major enhancement to the T32 instruction set by providing 32-bit T32 instructions. The 32-bit and 16-bit T32 instructions together provide almost exactly the same functionality as the A32 instruction set. This version of the T32 instruction set achieves the high performance of A32 code along with the benefits of better code density.
ARMv7 includes Thumb-2 technology. ARMv7-M only supports the T32 instruction set. Therefore, interworking instructions in ARMv7-M must not attempt to change to A32 state. ARMv7-A and ARMv7-R support both A32 and T32 instruction sets.
You cannot assemble code for architectures earlier than ARMv7, and for ARMv7-M and ARMv7-R profiles in this release.
ARMv8 introduces a new set of 32-bit instructions called A64, with new encodings and assembly language. A64 is only available when the processor is in AArch64 state. It provides similar functionality to the A32 and T32 instruction sets, but gives access to a larger virtual address space, and has some other changes, including less conditionality.
In ARMv8, the A32 and T32 instruction sets are largely unchanged
from ARMv7. They are only available when the processor is in AArch32
state. The main changes in ARMv8 are the addition of a few new instructions
and the deprecation of some behavior, including many uses of the
ARMv8 also defines an optional Crypto Extension, which provides cryptographic and hash instructions in both the A32 and A64 instruction sets.
The term A32 is an alias for the ARM instruction set.
The term T32 is an alias for the Thumb instruction set.