Architecture: Operands & Registers

0.0(0)
studied byStudied by 0 people
0.0(0)
full-widthCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/16

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

17 Terms

1
New cards

Operand

2
New cards

Operand Location

Physical location in computer

  • Registers

  • Memory

  • Constants (also called immediates)

3
New cards

Registers

It is faster than memory and RISC-V has 32 32-bit registers. Can use either name (i.e., ra, zero) or x0, x1, etc. Using name is preferred. Registers used for specific purposes:

  • zero always holds the constant value 0.

  • the saved registers, s0-s11, used to hold variables

  • the temporary registers, t0-t6, used to hold intermediate values during a larger computation

4
New cards

Why 12-bit Constant (Immediate)?

  1. Instruction size constraint

  • RISC-V uses fixed 32-bit instruction encoding (for the base ISA).

  • The I-type format (used by addi) allocates:

  • 7 bits → opcode

  • 5 bits → destination register

  • 5 bits → source register

  • 3 bits → funct3

  • 12 bits → immediate

  • 2. Balance between compactness and usefulness • 12 bits signed immediate is enough for: • small constants • stack pointer/frame pointer adjustments • offset addressing for loads/stores • For larger constants, RISC-V provides lui (load upper immediate) and auipc (add upper immediate to PC). Combining these with addi lets you construct 32-bit constants efficiently

5
New cards

Why 12-bit Constant (Immediate)?

  1. Instruction size constraint: RISC-V uses fixed 32-bit instruction encoding (for the base ISA).

  2. Balance between compactness and usefulness: 12 bits signed immediate is enough for small constants, stack pointer/frame pointer adjustments and offset addressing for loads/stores.

    For larger constants, RISC-V provides lui (load upper immediate) and auipc (add upper immediate to PC). Combining these with addi lets you construct 32-bit constants efficiently

6
New cards

zero

Register Number: x0

Usage: Hardwired to Constant value 0

7
New cards

ra

Register Number: x1

Usage: Return address

8
New cards

sp

Register Number: x2

Usage: Stack Pointer

9
New cards

gp

Register Number: x3

Usage: Global Pointer

10
New cards

tp

Register Number: x4

Usage: Thread Pointer

11
New cards

t0-2

Register Number: x5-7

Usage: Temporaries

12
New cards

s0/fp

Register Number: x8

Usage: Saved register / Frame pointer

13
New cards

s1

Register Number: x9

Usage: Stack Pointer

14
New cards

a0-1

Register Number: x10-11

Usage: Function arguments / return values

15
New cards

a2-7

Register Number: x12-17

Usage: Function arguments

16
New cards

s2-11

Register Number: x18-27

Usage: Saved registers (to hold variables)

17
New cards

t3-6

Register Number: x28-31

Usage: Temporaries