Visão geral da arquitetura RISC-V

1. Ideias centrais

RV32I é a ISA base inteira de 32 bits. Ela usa 32 registradores de propósito geral (x0..x31) e um modelo load/store. Apenas loads e stores tocam a memória; a aritmética fica nos registradores.

2. Registradores em um relance

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
x0  = zero (sempre 0)
x1  = ra   (return address)
x2  = sp   (stack pointer)
x3  = gp   (global pointer)
x4  = tp   (thread pointer)
x5..x7    = temporários (t0..t2)
x8..x9    = salvos (s0/fp, s1)
x10..x17  = args/return (a0..a7)
x18..x27  = salvos (s2..s11)
x28..x31  = temporários (t3..t6)

3. Formatos de instrução

flowchart LR
  I["Immediate"] -->|addi/lw/jalr| I1["imm[11:0] rs1 funct3 rd opcode"]
  R["Register"] -->|add/sub| R1["funct7 rs2 rs1 funct3 rd opcode"]
  S["Store"] -->|sw/sb| S1["imm[11:5] rs2 rs1 funct3 imm[4:0] opcode"]
  B["Branch"] -->|beq/bne| B1["imm rs2 rs1 funct3 imm opcode"]

4. Recursos adicionais

5. Mapa de memória no QEMU virt

1
2
0x8000_0000  RAM (colocamos código + dados aqui)
0x1000_0000  UART0 (MMIO)

6. Exercícios

  1. Identifique quais registradores são caller-saved vs callee-saved.
  2. Procure um formato de instrução na spec do RISC-V Card e mapeie cada campo pelo nome.

7. Resumo