This document provides a high-level overview of the ARMv8 instructions sets, being mainly the new A64 instruction set used in AArch64 state but also those new instructions added to the A32 and T32 instruction sets since ARMv7-A for use in AArch32 state. For A64 this document specifies the preferred architectural assembly. Each of the ARMv8 instruction sets provides instructions that return the result of translating an input address, supplied as an argument to the instruction, using a specified translation stage or regime. The available instructions only perform translations that are accessible from the Security state and Exception level at which the instruction. LDR loads a 32-bit constant (LDRH (halfword) 16 bit, LDRB (byte) 8 bit) from memory into the specified target register (r0 in your example). Since 32-bit constants cannot be encoded in 32-bit opcodes (or 16-bit for Thumb instructions), the assembler stores the constant in the text segment close to the referencing instruction and then references the value using (usually) PC-relative.
ARMV8Simulator ARMv8 instruction set simulator Given an ELF format binary for the ARM architecture, ARMV8Simulator simulates it. The simulator parses the ELF format binary, extracts the instructions (along with other information), decodes them and take actions accordingly. It keeps track of the state of the memory and all the registers
. The program counter (PC) Cannot be used in arithmetic and loadstore instructions Instructions that implicitly read PC PC relative address compute instructions ADR, ADRP, literal load, direct
branch Its value is the address of the instruction, there is no implied offset of 4 or 8 bytes Branch-and-link instructions BL. Therefore, the ARMv8-A ARM is the definitive source of information
about ARMv8.0. ARMv8 and A64 ISA A64.3 ARMv8 is the latest architecture Used by recent SoCs of all manufacturers Supports two execution states AArch32 to execute the T32 and A32 instruction sets 32-bit registers (151) and memory addresses 16-bit or 32.