pacdb

Pointer Authentication Code (Data B)

PACDB <Xd>, <Xn|SP>

Signs a data pointer using Key B.

Details

Signs the data pointer in Xd using the Data key B and a modifier from Xn or SP, storing the Pointer Authentication Code (PAC) in the high bits of Xd. The instruction does not modify the condition flags and operates only in AArch64 execution state with PAC support. The operation is implementation-defined and typically used for signing data pointers rather than instruction pointers.

Pseudocode Operation

modifier ← Xn | SP
Xd ← AddPAC(Xd, modifier, key_b, data_key)

Example

PACDB x0, x1

Encoding

Binary Layout
1
1
0
11010110
00001
00
0
011
Rn
Rd
 
Format Data Processing
Opcode 0xDAC10C00
Extension PAC (Security)

Operands

  • Xd
    Ptr
  • Xn
    Modifier

Reference (Arm A64 ISA)

Instruction Forms

Encoding Instruction ISA Bit pattern
0xDAC10C00 PACDB <Xd>, <Xn|SP> A64 1 | 1 | 0 | 11010110 | 00001 | 00 | 0 | 011 | Rn | Rd

Description

Pointer Authentication Code for Data address, using key B. This instruction computes and inserts a pointer authentication code for a data address, using a modifier and key B. The address is in the general-purpose register that is specified by <Xd>. The modifier is:

Operation

if source_is_sp then
    X[d, 64] = AddPACDB(X[d, 64], SP[]);
else
    X[d, 64] = AddPACDB(X[d, 64], X[n, 64]);