Preface
About this Manual
xviii Copyright © 2013-2022 Arm Limited or its affiliates. All rights reserved. ARM DDI 0487I.a
Non-Confidential ID081822
About this Manual
This Manual describes the Arm
®
architecture v8, Armv8, and the Arm
®
architecture v9, Armv9. The architecture
describes the operation of an Armv8-A and an Armv9-A Processing element (PE), and this Manual includes
descriptions of:
• The two Execution states, AArch64 and AArch32.
• The instruction sets:
— In AArch32 state, the A32 and T32 instruction sets, which are compatible with earlier versions of the
Arm architecture.
— In AArch64 state, the A64 instruction set.
• The states that determine how a PE operates, including the current Exception level and Security state, and in
AArch32 state the PE mode.
• The Exception model.
• The interprocessing model, that supports transitioning between AArch64 state and AArch32 state.
• The memory model, that defines memory ordering and memory management. This Manual covers the Arm
A architecture profile, both Armv8-A and Armv9-A, that defines a Virtual Memory System Architecture
(VMSA).
• The programmers’ model, and its interfaces to System registers that control most PE and memory system
features, and provide status information.
• The Advanced SIMD and floating-point instructions, which provide high-performance:
— Single-precision, half-precision, and double-precision floating-point operations.
— Conversions between double-precision, single-precision, and half-precision floating-point values.
— Integer, single-precision floating-point, and half-precision floating-point vector operations in all
instruction sets.
— Double-precision floating-point vector operations in the A64 instruction set.
• The security model, which provides two Security states to support Secure applications.
• The virtualization model.
• The Debug architecture, which provides software access to debug features.
This Manual gives the assembler syntax for the instructions it describes, meaning that it describes instructions in
textual form. However, this Manual is not a tutorial for Arm assembler language, nor does it describe Arm assembler
language, except at a very basic level. To make effective use of Arm assembler language, read the documentation
supplied with the assembler being used.
This Manual is organized into parts:
Part A Provides an introduction to the Arm architecture, and an overview of the AArch64 and AArch32
Execution states.
Part B Describes the application level view of the AArch64 Execution state, meaning the view from EL0.
It describes the application level view of the programmers’ model and the memory model.
Part C Describes the A64 instruction set, which is available in the AArch64 Execution state. The
descriptions for each instruction also include the precise effects of each instruction when executed
at EL0, described as unprivileged execution, including any restrictions on its use, and how the
effects of the instruction differ at higher Exception levels. This information is of primary importance
to authors and users of compilers, assemblers, and other programs that generate Arm machine code.
Part D Describes the system level view of the AArch64 Execution state. It includes details of the System
registers, most of which are not accessible from EL0, and the system level view of the programmers’
model and the memory model. This part includes the description of self-hosted debug.