Load String Word Immediate

X-Form

  • lswi RT,RA,NB

Pseudo-code:

EA <- (RA|0)
if NB = 0 then n <-  32
else           n <-  NB
r <- RT - 1
i <- 32
do while n > 0
    if i = 32 then
        r <- (r + 1) % 32
        GPR(r) <- 0
    GPR(r)[i:i+7] <- MEM(EA, 1)
    i <- i + 8
    if i = 64 then i <- 32
    EA <- EA + 1
    n <- n - 1

Special Registers Altered:

None

Load String Word Indexed

X-Form

  • lswx RT,RA,RB

Pseudo-code:

b <- (RA|0)
EA <- b + (RB)
n <- XER[57:63]
r <- RT - 1
i <- 32
RT <- undefined([0]*64)
do while n > 0
    if i = 32 then
        r <-  (r + 1) % 32
        GPR(r) <- 0
    GPR(r)[i:i+7] <- MEM(EA, 1)
    i <-  i + 8
    if i = 64 then i <- 32
    EA <-  EA + 1
    n <- n - 1

Special Registers Altered:

None

Store String Word Immediate

X-Form

  • stswi RS,RA,NB

Pseudo-code:

EA <- (RA|0)
if NB = 0 then n <-  32
else           n <-  NB
r <- RS - 1
i <- 32
do while n > 0
  if i = 32 then r <-  (r + 1) % 32
  MEM(EA, 1) <-  GPR(r)[i:i+7]
  i <-  i + 8
  if i = 64 then i <-  32
  EA <-  EA + 1
  n <- n - 1

Special Registers Altered:

None

Store String Word Indexed

X-Form

  • stswx RS,RA,RB

Pseudo-code:

b <- (RA|0)
EA <- b + (RB)
n <- XER[57:63]
r <- RS - 1
i <- 32
do while n > 0
  if i = 32 then r <- (r + 1) % 32
  MEM(EA, 1) <- GPR(r)[i:i+7]
  i <-  i + 8
  if i = 64 then i <- 32
  EA <-  EA + 1
  n <- n - 1

Special Registers Altered:

None