RISC-V 内存布局
学习目标
- 理解内存分段
- 掌握地址空间布局
- 学习内存映射
2.1 内存分段
典型的程序内存布局:
高地址
┌─────────────┐
│ 栈 │ 向下增长
├─────────────┤
│ ↓ │
│ │
│ ↑ │
├─────────────┤
│ 堆 │ 向上增长
├─────────────┤
│ .bss │ 未初始化数据
├─────────────┤
│ .data │ 已初始化数据
├─────────────┤
│ .text │ 代码段
└─────────────┘
低地址
2.2 QEMU virt 内存映射
0x00000000 - 0x00000FFF : 保留
0x00001000 - 0x0000FFFF : CLINT
0x0C000000 - 0x0FFFFFFF : PLIC
0x10000000 - 0x10000FFF : UART0
0x80000000 - 0x87FFFFFF : RAM (128MB)
2.3 程序加载地址
QEMU 将内核加载到 0x80000000,这是 RISC-V 的标准起始地址。