0% found this document useful (0 votes)
16 views7 pages

MIPS Load and Store Instructions Guide

The document describes data transfer instructions in MIPS architecture. It discusses load and store instructions that transfer data between registers and memory, including word, halfword, byte operations and loading constants. Load instructions copy data from memory to a register while store instructions copy from a register to memory. The semantics and machine code formats are also covered.

Uploaded by

Aakash Konijeti
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views7 pages

MIPS Load and Store Instructions Guide

The document describes data transfer instructions in MIPS architecture. It discusses load and store instructions that transfer data between registers and memory, including word, halfword, byte operations and loading constants. Load instructions copy data from memory to a register while store instructions copy from a register to memory. The semantics and machine code formats are also covered.

Uploaded by

Aakash Konijeti
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Instructions: Data Transfer

load and store architecture


MIPS: can access memory only to transfer data to or from registers
CISC: may allow, for example, add to memory location, store in register
load: copy the data from memory into a register.
store: copy the data from a register to memory.

lw $rt, offset($rs) Load word from memory location to register


sw $rt, offset($rs) Store word from register to memory location

Offset is a 16-bit 2C value (immediate); all are I-type


semantics of lw
Addr <-- R[s] + (IR15)16::IR15-0
R[t] <-- M4[ Addr ]
compute address
- add the contents of register s (base) to the sign-extended offset
- offset is immediate
- non-aligned address: hardware exception
get data
- copy 4 bytes located at memory address starting at Addr to register t.
- CPU fetches the four bytes based on the endianness of the machine
sw similar to lw but the 4 byte quantity is copied from the register to memory.
M4[ Addr ] <-- R[t] stored in the endianness of the machine
Instructions: Data Transfer

Byte operations
lb $rt, offset($rs) Load sign-extended byte
from memory location to register
lbu $rt, offset($rs) Load zero-extended (unsigned) byte
from memory location to register
sb $rt, offset($rs) Store the least significant byte of a
register to memory location
What about sbu?
For lb, the address is computed the same way as lw,
but the address does not have to be word aligned.
Addr <-- R[s] + (IR15)16::IR15-0
R[t] <-- (M1[ Addr ]7)24::M1[ Addr ]
Since the value is interpreted as 2C, the fetched byte is sign-extended to 32 bits.
lbu is just like lb except the byte is zero-extended in the register
sb is similar to sw:
M1[ Addr ] <-- R[t]7-0
The least significant byte of register t is copied to the address in memory.
Do we really need to have separate instructions to load, store bytes?
Instructions: Data Transfer

machine code
lw $rt, offset($rs)

100101 01000 01001 00000 00000 100000


b31-26 b25-21 b20-16 b15-0
opcode $rs $rt immediate

opcodes: 100 xxx (load)


101 xxx (store)
$rs: base address
$rt: target register
immediate: offset
Instructions: Data Transfer

Halfword operations (short int)


short int is usually 16 bits
lh $rt, offset($rs) Load halfword from memory location to register
Data is sign-extended in register
lhu $rt, offset($rs) Data is zero-extended in register
sh $rt, offset($rs) Store halfword from register to memory location

Loading constant
lui $rt, immed
Semantics:
R[t] = IR15-0 016
load the lower halfword of immed into upper halfword of $rt
lower bits of $rt are set to 0
$rs is ignored
Data transfer: summary

R-type I-type
Load Word lw
Halfword lh
Halfword unsigned lhu
Byte lb
Byte unsigned lbu
Constant lui
Store Word sw
Halfword sh
Byte sb
Instruction Types

Arithmetic

Logical

Data Transfer

Compare/Branch

Jump
This document was created with Win2PDF available at [Link]
The unregistered version of Win2PDF is for evaluation or non-commercial use only.

You might also like