Fundamentals 5 min read

Understanding ARMv8‑A Execution States: AArch64 vs AArch32

This article explains the two execution states of the ARMv8‑A architecture—AArch64 (64‑bit) and AArch32 (32‑bit)—detailing their supported register widths, instruction sets, exception models, virtual memory architecture, and programmer models, and highlights the key differences and transition mechanisms between them.

Huawei Cloud Developer Alliance
Huawei Cloud Developer Alliance
Huawei Cloud Developer Alliance
Understanding ARMv8‑A Execution States: AArch64 vs AArch32

1. ARMv8‑A Execution Modes

ARMv8‑A defines two execution states: AArch64 (64‑bit) and AArch32 (32‑bit). The execution state determines the processing element’s environment, including register width, instruction set, exception model, virtual memory system architecture, and programmer model.

Supported register width

Supported instruction set

Exception model

Virtual Memory System Architecture (VMSA)

Programmer model

AArch64 (64‑bit execution state)

Provides 31 general‑purpose 64‑bit registers; X30 is the Procedure Link Register.

Provides a 64‑bit Program Counter (PC), Stack Pointer (SP) and Exception Link Registers (ELRs).

Provides 32 128‑bit registers for SIMD vector and scalar floating‑point operations.

Uses a single instruction set A64.

Defines the ARMv8 exception model with up to four exception levels (EL0‑EL3) forming a privilege hierarchy.

Supports 64‑bit virtual addressing.

Defines a set of PSTATE‑related registers; A64 instructions can directly manipulate them.

System registers are named with suffixes indicating the lowest exception level that can access them.

AArch32 (32‑bit execution state)

Provides 13 general‑purpose 32‑bit registers plus a 32‑bit PC, SP and a 32‑bit Link Register (LR) that serves as both exception and procedure link register; some registers have multiple banked versions for different processor modes.

Provides an exception link register for exceptions returning from Hyp (hypervisor) mode.

Provides 32 64‑bit registers for advanced SIMD vector and scalar floating‑point calculations.

Supports two instruction sets: A32 and T32.

Implements the ARMv7‑A exception model based on processor modes and maps it to the ARMv8 exception levels.

Uses 32‑bit virtual addresses.

Uses a single Current Program Status Register (CPSR) to hold processor state.

Transition between AArch64 and AArch32 is called inter‑processing.

2. Conclusion

This article introduced the execution states of ARMv8‑A. The next article will cover ARMv8‑A exception levels and security states.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

CPU architectureaarch64ARMv8AArch32execution state
Huawei Cloud Developer Alliance
Written by

Huawei Cloud Developer Alliance

The Huawei Cloud Developer Alliance creates a tech sharing platform for developers and partners, gathering Huawei Cloud product knowledge, event updates, expert talks, and more. Together we continuously innovate to build the cloud foundation of an intelligent world.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.