Actions
Instruction Set Architecture¶
Section | Subsection | Specified instruction |
Data processing - immediate | Arithmetic (immediate) | 12 |
Logical (immediate) | 10 | |
Move (wide immediate) | 6 | |
Move (immediate) | 6 | |
PC-relative address calculation | 2 | |
Extract register | 2 | |
In total: | 38 | |
Data processing - register | Arithmetic (shifted register) | 12 |
Arithmetic (extending register) | 12 | |
Logical (shifted register) | 20 | |
Move (register) | 4 | |
Multiply and divide | 18 | |
Divide | 4 | |
In total: | 70 | |
Branches, Exception generation, and System instructions | Conditional branch | 7 |
Unconditional branch (immediate) | 2 | |
Unconditional branch (register) | 3 | |
Exception generation and return | 10 | |
System register instructions | 6 | |
System instructions | 8 | |
Hint instructions | 7 | |
Barriers and CLREX instructions | 4 | |
In total: | 47 | |
Loads and stores | Load/store register | 2 |
Load-Exclusive/Store-Exclusive | 12 | |
Load-Acquire/Store-Release | 20 | |
In total: | 34 |
Data processing - immediate¶
Arithmetic (immediate)¶
- ADD (immediate). Add.
Specifications: add, add_32 - SUB (immediate). Subtract.
Specifications: sub, sub_32 - ADDS (immediate). Add and set flags.
Specifications: adds, adds_32 - SUBS (immediate). Subtract and set flags.
Specifications: subs, subs_32 - CMP (immediate). Compare.
Specifications: cmp, cmp_32 - CMN (immediate). Compare negative.
Specifications: cmn, cmn_32
In total: 12.
Logical (immediate)¶
- AND (immediate). Bitwise AND
Specifications: and_bitmask, and_bitmask_32 - ANDS (immediate). Bitwise AND and set flags
Specifications: ands_bitmask, ands_bitmask_32 - EOR (immediate). Bitwise exclusive OR
Specifications: eor_bitmask, eor_bitmask_32 - ORR (immediate). Bitwise inclusive OR
Specifications: orr_bitmask, orr_bitmask_32 - TST (immediate). TST Test bits
Specifications: tst_bitmask, tst_bitmask_32
In total: 10.
Move (wide immediate)¶
- MOVZ. Move wide with zero
Specifications: movz, movz_32 - MOVN. Move wide with NOT
Specifications: movn, movn_32 - MOVK. Move wide with keep
Specifications: movk, movk_32
In total: 6.
Move (immediate)¶
- MOV (wide immediate). Move (wide immediate)
Specifications: mov_wide_imm, mov_wide_imm_32 - MOV (inverted wide immediate). Move (inverted wide immediate)
Specifications: mov_inv_wide_imm, mov_inv_wide_imm_32 - MOV (bitmask immediate). Move (bitmask immediate)
Specifications: mov_bitmask, mov_bitmask_32
In total: 6.
PC-relative address calculation¶
- ADRP. Compute address of 4KB page at a PC-relative offset
Specifications: adrp - ADR. Compute address of label at a PC-relative offset.
Specifications: adr
In total: 2.
Extract register¶
- EXTR. Extract register from pair
Specifications: extr, extr_32
In total: 2.
Data processing - register¶
Arithmetic (shifted register)¶
- ADD (shifted register). Add
Specifications: add_sh_reg, add_sh_reg_32 - ADDS (shifted register). Add and set flags
Specifications: adds_sh_reg, adds_sh_reg_32 - SUB (shifted register). Subtract
Specifications: sub_sh_reg, sub_sh_reg_32 - SUBS (shifted register). Subtract and set flags
Specifications: subs_sh_reg, subs_sh_reg_32 - CMN (shifted register). Compare negative
Specifications: cmn_sh_reg, cmn_sh_reg_32 - CMP (shifted register). Compare
Specifications: cmp_sh_reg, cmp_sh_reg_32
In total: 12.
Arithmetic (extending register)¶
- ADD (extended register). Add
Specifications: add_ex_reg, add_ex_reg_32 - ADDS (extended register). Add and set flags
Specifications: adds_ex_reg, adds_ex_reg_32 - SUB (extended register). Subtract
Specifications: sub_ex_reg, sub_ex_reg_32 - SUBS (extended register). Subtract and set flags
Specifications: subs_ex_reg, subs_ex_reg_32 - CMN (extended register). Compare negative
Specifications: cmn_ex_reg, cmn_ex_reg_32 - CMP (extended register). Compare
Specifications: cmp_ex_reg, cmp_ex_reg_32
In total: 12.
Logical (shifted register)¶
- AND (shifted register). Bitwise AND
Specifications: and_bitwise, and_bitwise_32 - ANDS (shifted register). Bitwise AND and set flags
Specifications: ands_bitwise, ands_bitwise_32 - BIC (shifted register). Bitwise bit clear
Specifications: bic_bitwise, bic_bitwise_32 - BICS (shifted register). Bitwise bit clear and set flags
Specifications: bics_bitwise, bics_bitwise_32 - EON (shifted register). Bitwise exclusive OR NOT
Specifications: eon_bitwise, eon_bitwise_32 - EOR (shifted register). Bitwise exclusive OR
Specifications: eor_bitwise, eor_bitwise_32 - ORR (shifted register). Bitwise inclusive OR
Specifications: orr_bitwise, orr_bitwise_32 - MVN. Bitwise NOT
Specifications: mvn_bitwise, mvn_bitwise_32 - ORN (shifted register). Bitwise inclusive OR NOT
Specifications: orn_bitwise, orn_bitwise_32 - TST (shifted register). Test bits
Specifications: tst_bitwise, tst_bitwise_32
In total: 20.
Move (register)¶
- MOV (register). Move register
Specifications: mov_reg, mov_reg_32 - MOV (to/from SP). Move register to SP or move SP to register
Specifications: mov_sp, mov_sp_32
In total: 4.
Multiply and divide¶
- MADD. Multiply-add
Specifications: madd, madd_32 - MSUB. Multiply-subtract
Specifications: msub, msub_32 - MNEG. Multiply-negate
Specifications: mneg, mneg_32 - MUL. Multiply
Specifications: mul, mul_32 - SMADDL. Signed multiply-add long
Specifications: smaddl - SMSUBL. Signed multiply-subtract long
Specifications: smsubl - SMNEGL. Signed multiply-negate long
Specifications: smnegl - SMULL. Signed multiply long
Specifications: smull - SMULH. Signed multiply high
Specifications: smulh - UMADDL. Unsigned multiply-add long
Specifications: umaddl - UMSUBL. Unsigned multiply-subtract long
Specifications: umsubl - UMNEGL. Unsigned multiply-negate long
Specifications: umnegl - UMULL. Unsigned multiply long
Specifications: umull - UMULH. Unsigned multiply high
Specifications: umulh
In total: 18.
Divide¶
- SDIV. Signed divide
Specifications: sdiv, sdiv_32 - UDIV. Unsigned divide
Specifications: udiv, udiv_32
In total: 4.
Branches, Exception generation, and System instructions¶
Conditional Branch¶
- B.cond. Branch conditionally
Specifications: b - CBNZ. Compare and branch if nonzero
Specifications: cbnz, cbnz_32 - CBZ. Compare and branch if zero
Specifications: cbz, cbz_32 - TBNZ. Test bit and branch if nonzero
Specifications: tbnz - TBZ. Test bit and branch if zero
Specifications: tbz
In total: 7.
Unconditional branch (immediate)¶
- B. Branch unconditionally
Specifications: b_imm - BL. Branch with link
Specifications: bl
In total: 2.
Unconditional branch (register)¶
- BLR. Branch with link to register
Specifications: blr - BR. Branch to register
Specifications: br - RET. Return from subroutine
Specifications: ret
In total: 3.
Exception generation and return¶
Exception generation
- BRK. Breakpoint Instruction
Specifications: brk - HLT. Halt Instruction HLT
Specifications: hlt - HVC. Generate exception targeting Exception level 2 HVC
Specifications: hvc - SMC. Generate exception targeting Exception level 3 SMC
Specifications: smc - SVC. Generate exception targeting Exception level 1
Specifications: svc
In total: 5.
Exception return
- ERET. Exception return using current ELR and SPSR
Specifications: eret
In total: 1.
Debug state
- DCPS1. Debug switch to Exception level 1 DCPS1
Specifications: dcps1 - DCPS2. Debug switch to Exception level 2 DCPS2
Specifications: dcps2 - DCPS3. Debug switch to Exception level 3 DCPS3
Specifications: dcps3 - DRPS. Debug restore PE state
Specifications: drps
In total: 4.
System register instructions¶
- MRS. Move System register to general-purpose register MRS
Specifications: msr - MSR. Move general-purpose register to System register MSR (register)
Specifications: mrs - MSR. Move immediate to PE state field MSR (immediate)
Specifications: msr_dc, msr_ds, msr_ss, msr_uao
In total: 6.
System instructions¶
- SYS. System instruction
Specifications: sys - SYSL. System instruction with result
Specifications: sysl - IC. Instruction cache maintenance
Specifications: ic, ic_reg - DC. Data cache maintenance
Specifications: dc - AT. Address translation
Specifications: at - TLBI. TLB Invalidate
Specifications: tlbi, tlbi_reg
In total: 8.
Hint instructions¶
- NOP. No operation
Specifications: nop - YIELD. Yield hint
Specifications: yield_op - WFE. Wait for event
Specifications: wfe - WFI. Wait for interrupt
Specifications: wfi - SEV. Send event
Specifications: sev - SEVL. Send event local
Specifications: sevl - HINT. Unallocated hint
Specifications: hint
In total: 7.
Barriers and CLREX instructions¶
- CLREX. Clear Exclusives monitor
Specifications: clrex - DMB. Data memory barrier
Specifications: dmb - DSB. Data synchronization barrier
Specifications: dsb - ISB. Instruction synchronization barrier
Specifications: isb
In total: 4.
Loads and stores¶
Load/store register¶
- LDR. Load register (immediate offset)
Specifications: ldr_postindex - STR. Store register (immediate offset)
Specifications: str_postindex
In total: 2.
Load-Exclusive/Store-Exclusive¶
- LDXR. Load Exclusive register
Specifications: ldxr, ldxr_32 - LDXRB. Load Exclusive byte
Specifications: ldxrb_32 - LDXRH. Load Exclusive halfword
Specifications: ldxrh_32 - LDXP. Load Exclusive pair
Specifications: ldxp, ldxp_32 - STXR. Store Exclusive register
Specifications: stxr, stxr_32 - STXRB. Store Exclusive byte
Specifications: stxrb_32 - STXRH. Store Exclusive halfword
Specifications: stxrh_32 - STXP. Store Exclusive pair
Specifications: stxp, stxp_32
In total: 12.
Load-Acquire/Store-Release¶
Non-exclusive Load-Acquire and Store-Release instructions
- LDAR. Load-Acquire Register
Specifications: ldar, ldar_32 - LDARB. Load-Acquire Byte
Specifications: ldarb - LDARH. Load-Acquire Halfword
Specifications: ldarh - STLR. Store-Release Register
Specifications: stlr, stlr_32 - STLRB. Store-Release Byte
Specifications: stlrb - STLRH. Store-Release Halfword
Specifications: stlrh
In total: 8.
Exclusive Load-Acquire and Store-Release instructions
- LDAXR. Load-Acquire Exclusive register
Specifications: ldaxr, ldaxr_32 - LDAXRB. Load-Acquire Exclusive byte
Specifications: ldaxrb_32 - LDAXRH. Load-Acquire Exclusive halfword
Specifications: ldaxrh_32 - LDAXP. Load-Acquire Exclusive pair
Specifications: ldaxp, ldaxp_32 - STLXR. Store-Release Exclusive register
Specifications: stlxr, stlxr_32 - STLXRB. Store-Release Exclusive byte
Specifications: stlxrb_32 - STLXRH. Store-Release Exclusive halfword
Specifications: stlxrh_32 - STLXP. Store-Release Exclusive pair
Specifications: stlxp, stlxp_32
In total: 12.
Pseudo instructions¶
psldr, psldr32
In total: 2.
Updated by Alexander Kamkin almost 2 years ago · 17 revisions