STRB (unsigned offset)

Store Register Byte (unsigned offset) via alternate base determines the base register to be used, derives an address from the base register and an immediate offset, and stores a byte to the calculated address in memory. The base register used by this operation depends on PSTATE.C64: if PSTATE.C64 is 1, the base register is a 64-bit general-purpose register; if PSTATE.C64 is 0, the base register is a capability general-purpose register. For information about memory accesses, see Load/Store addressing modes.

313029282726252423222120191817161514131211109876543210
10000010010imm901RnRt
Lop

STRB <Wt>, [<Cn|CSP>{, #<imm>}] // (PSTATE.C64 == '0')

STRB <Wt>, [<Xn|SP>{, #<imm>}] // (PSTATE.C64 == '1')

integer t = UInt(Rt); integer n = UInt(Rn); bits(64) offset = ZeroExtend(imm9, 64); datasize = 8; regsize = 32;

Assembler Symbols

<Wt>

Is the 32-bit name of the general-purpose register to be transferred, encoded in the "Rt" field.

<Xn|SP>

Is the 64-bit name of the general-purpose base register or stack pointer, encoded in the "Rn" field.

<Cn|CSP>

Is the capability name of the base register or stack pointer, encoded in the "Rn" field.

<imm>

Is the optional unsigned immediate byte offset, in the range 0 to 511, defaulting to 0, encoded in the "imm9" field.

Operation

CheckCapabilitiesEnabled(); VirtualAddress base = AltBaseReg[n]; bits(64) addr = VAddress(base) + offset; VACheckAddress(base, addr, datasize DIV 8, CAP_PERM_STORE, AccType_NORMAL); bits(datasize) data = X[t]; Mem[addr, datasize DIV 8, AccType_NORMAL] = data;


Internal version only: isa v32.13, AdvSIMD v29.04, pseudocode morello-2022-01_rc2, capabilities morello-2022-01_rc2 ; Build timestamp: 2022-01-11T11:23

Copyright © 2010-2022 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.