Store Byte

D-Form

  • stb RS,D(RA)

Pseudo-code:

b <- (RA|0)
EA <- b + EXTS(D)
MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]

Description:

Let the effective address (EA) be the sum (RA|0)+ D.
RS[56:63] are stored into the byte in storage addressed
by EA.

Special Registers Altered:

None

Store Byte Indexed

X-Form

  • stbx RS,RA,RB

Pseudo-code:

b <- (RA|0)
EA <- b + (RB)
MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]

Description:

Let the effective address (EA) be the sum
(RA|0)+ (RB). RS [56:63] are stored into the byte in stor-
age addressed by EA.

Special Registers Altered:

None

Store Byte with Update

D-Form

  • stbu RS,D(RA)

Pseudo-code:

EA <- (RA) + EXTS(D)
MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]
RA <- EA

Description:

Let the effective address (EA) be the sum (RA)+ D.
RS[56:63] are stored into the byte in storage addressed
by EA.

EA is placed into register RA.

If RA=0, the instruction form is invalid.

Special Registers Altered:

None

Store Byte with Update Indexed

X-Form

  • stbux RS,RA,RB

Pseudo-code:

EA <- (RA) + (RB)
MEM(EA, 1) <- (RS)[XLEN-8:XLEN-1]
RA <- EA

Description:

Let the effective address (EA) be the sum (RA)+ (RB).
RS[56:63] are stored into the byte in storage addressed
by EA.

EA is placed into register RA.

If RA=0, the instruction form is invalid.

Special Registers Altered:

None

Store Halfword

D-Form

  • sth RS,D(RA)

Pseudo-code:

b <- (RA|0)
EA <- b + EXTS(D)
MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]

Description:

Let the effective address (EA) be the sum (RA|0)+ D.
RS[48:63] are stored into the halfword in storage
addressed by EA.

Special Registers Altered:

None

Store Halfword Indexed

X-Form

  • sthx RS,RA,RB

Pseudo-code:

b <- (RA|0)
EA <- b + (RB)
MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]

Description:

Let the effective address (EA) be the sum
(RA|0)+ (RB). RS[48:63] are stored into the halfword in
storage addressed by EA.

Special Registers Altered:

None

Store Halfword with Update

D-Form

  • sthu RS,D(RA)

Pseudo-code:

EA <- (RA) + EXTS(D)
MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
RA <- EA

Description:

Let the effective address (EA) be the sum (RA)+ D.
RS[48:63] are stored into the halfword in storage
addressed by EA.

EA is placed into register RA.

If RA=0, the instruction form is invalid.

Special Registers Altered:

None

Store Halfword with Update Indexed

X-Form

  • sthux RS,RA,RB

Pseudo-code:

EA <- (RA) + (RB)
MEM(EA, 2) <- (RS)[XLEN-16:XLEN-1]
RA <- EA

Description:

Let the effective address (EA) be the sum (RA)+ (RB).
RS[48:63] are stored into the halfword in storage
addressed by EA.

EA is placed into register RA.

If RA=0, the instruction form is invalid.

Special Registers Altered:

None

Store Word

D-Form

  • stw RS,D(RA)

Pseudo-code:

b <- (RA|0)
EA <- b + EXTS(D)
MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]

Description:

Let the effective address (EA) be the sum (RA|0)+ D.
RS[32:63] are stored into the word in storage addressed
by EA.

Special Registers Altered:

None

Store Word Indexed

X-Form

  • stwx RS,RA,RB

Pseudo-code:

b <- (RA|0)
EA <- b + (RB)
MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]

Description:

Let the effective address (EA) be the sum
(RA|0)+ (RB). RS[32:63] are stored into the word in stor-
age addressed by EA.

Special Registers Altered:

None

Store Word with Update

D-Form

  • stwu RS,D(RA)

Pseudo-code:

EA <- (RA) + EXTS(D)
MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
RA <- EA

Description:

Let the effective address (EA) be the sum (RA)+ D.
RS[32:63] are stored into the word in storage addressed
by EA.

EA is placed into register RA.

If RA=0, the instruction form is invalid.

Special Registers Altered:

None

Store Word with Update Indexed

X-Form

  • stwux RS,RA,RB

Pseudo-code:

EA <- (RA) + (RB)
MEM(EA, 4) <- (RS)[XLEN-32:XLEN-1]
RA <- EA

Description:

Let the effective address (EA) be the sum (RA)+ (RB).
RS[32:63] are stored into the word in storage addressed
by EA.

EA is placed into register RA.

If RA=0, the instruction form is invalid.

Special Registers Altered:

None

Store Doubleword

DS-Form

  • std RS,DS(RA)

Pseudo-code:

b <- (RA|0)
EA <- b + EXTS(DS || 0b00)
MEM(EA, 8) <- (RS)

Description:

Let the effective address (EA) be the sum
(RA|0)+ (DS||0b00). (RS) is stored into the doubleword
in storage addressed by EA.

Special Registers Altered:

None

Store Doubleword Indexed

X-Form

  • stdx RS,RA,RB

Pseudo-code:

b <- (RA|0)
EA <- b + (RB)
MEM(EA, 8) <- (RS)

Description:

Let the effective address (EA) be the sum
(RA|0)+ (RB). (RS) is stored into the doubleword in
storage addressed by EA.

Special Registers Altered:

None

Store Doubleword with Update

DS-Form

  • stdu RS,DS(RA)

Pseudo-code:

EA <- (RA) + EXTS(DS || 0b00)
MEM(EA, 8) <- (RS)
RA <- EA

Description:

Let the effective address (EA) be the sum
(RA)+ (DS||0b00). (RS) is stored into the doubleword in
storage addressed by EA.

EA is placed into register RA.

If RA=0, the instruction form is invalid.

Special Registers Altered:

None

Store Doubleword with Update Indexed

X-Form

  • stdux RS,RA,RB

Pseudo-code:

EA <- (RA) + (RB)
MEM(EA, 8) <- (RS)
RA <- EA

Description:

Let the effective address (EA) be the sum (RA)+ (RB).
(RS) is stored into the doubleword in storage
addressed by EA.

EA is placed into register RA.

If RA=0, the instruction form is invalid.

Special Registers Altered:

None

Store Quadword

DS-Form

  • stq RSp,DS(RA)

Pseudo-code:

b <- (RA|0)
EA <- b + EXTS(DS || 0b00)
MEM(EA, 16) <- RSp

Description:

Let the effective address (EA) be the sum (RA|0)+
(DS||0b00). The contents of register pair RSp are
stored into the quadword in storage addressed by EA.

If RSp is odd, the instruction form is invalid.

The contents of an even-odd pair of GPRs is stored into
the quadword in storage addressed by EA as follows.
In Big-Endian mode, the even-numbered GPR is stored
into the doubleword in storage addressed by EA and
the odd-numbered GPR is stored into the doubleword
addressed by EA+8. In Little-Endian mode, the
even-numbered GPR is stored byte-reversed into the
doubleword in storage addressed by EA+8 and the
odd-numbered GPR is stored byte-reversed into the
doubleword addressed by EA.

Special Registers Altered:

None

Store Halfword Byte-Reverse Indexed

X-Form

  • sthbrx RS,RA,RB

Pseudo-code:

b <- (RA|0)
EA <- b + (RB)
MEM(EA, 2) <- (RS) [56:63] || (RS)[48:55]

Description:

Let the effective address (EA) be the sum
(RA|0)+ (RB). (RS)56:63 are stored into bits 0:7 of the
halfword in storage addressed by EA. (RS) 48:55 are
stored into bits 8:15 of the halfword in storage
addressed by EA.

Special Registers Altered:

None

Store Word Byte-Reverse Indexed

X-Form

  • stwbrx RS,RA,RB

Pseudo-code:

b <- (RA|0)
EA <- b + (RB)
MEM(EA, 4) <- ((RS)[56:63] || (RS)[48:55] || (RS)[40:47]
               ||(RS)[32:39])

Description:

Let the effective address (EA) be the sum
(RA|0)+ (RB). (RS)[56:63] are stored into bits 0:7 of the
word in storage addressed by EA. (RS) [48:55] are stored
into bits 8:15 of the word in storage addressed by EA.
(RS)[40:47] are stored into bits 16:23 of the word in stor-
age addressed by EA. (RS) [32:39] are stored into bits
24:31 of the word in storage addressed by EA.

Special Registers Altered:

None

Store Doubleword Byte-Reverse Indexed

X-Form

  • stdbrx RS,RA,RB

Pseudo-code:

b <- (RA|0)
EA <- b + (RB)
MEM(EA, 8) <- ((RS) [56:63] || (RS)[48:55]
                || (RS)[40:47] || (RS)[32:39]
                || (RS)[24:31] || (RS)[16:23]
                || (RS)[8:15]  || (RS)[0:7])

Description:

Let the effective address (EA) be the sum
(RA|0)+ (RB). (RS)[56:63] are stored into bits 0:7 of the
doubleword in storage addressed by EA. (RS) [48:55] are
stored into bits 8:15 of the doubleword in storage
addressed by EA. (RS) [40:47] are stored into bits 16:23 of
the doubleword in storage addressed by EA. (RS) [32:39]
are stored into bits 23:31 of the doubleword in storage
addressed by EA. (RS) [24:31] are stored into bits 32:39 of
the doubleword in storage addressed by EA. (RS) [16:23]
are stored into bits 40:47 of the doubleword in storage
addressed by EA. (RS)[8:15] are stored into bits 48:55 of
the doubleword in storage addressed by EA. (RS) [0:7]
are stored into bits 56:63 of the doubleword in storage
addressed by EA.

Special Registers Altered:

None

Store Multiple Word

D-Form

  • stmw RS,D(RA)

Pseudo-code:

b <- (RA|0)
EA <- b + EXTS(D)
r <- RS[0:63]
do while r <= 31
    MEM(EA, 4) <- GPR(r)[32:63]
    r <-  r + 1
    EA <-  EA + 4

Description:

Let n = (32-RS). Let the effective address (EA) be the
sum (RA|0)+ D.

n consecutive words starting at EA are stored from the
low-order 32 bits of GPRs RS through 31.

This instruction is not supported in Little-Endian mode.
If it is executed in Little-Endian mode, the system align-
ment error handler is invoked.

Special Registers Altered:

None