31 std::vector<uint8_t>
mem;
36 void paddr_write(
size_t addr,
int len, uint64_t data);
40 void pmem_write(
size_t addr,
int len, uint64_t data);
42 void mmio_write(
size_t addr,
int len, uint64_t data);
49 guest_mem(
size_t base = 0x80000000,
size_t sz = 128 * 1024 * 1024);
88 void load_binary(
size_t load_addr,
const void* ext_mem,
size_t ext_size);
96 int8_t
lb(
size_t addr);
97 uint8_t
lbu(
size_t addr);
98 int16_t
lh(
size_t addr);
99 uint16_t
lhu(
size_t addr);
100 int32_t
lw(
size_t addr);
101 uint32_t
lwu(
size_t addr);
102 int64_t
ld(
size_t addr);
104 void sb(
size_t addr, uint8_t val);
105 void sh(
size_t addr, uint16_t val);
106 void sw(
size_t addr, uint32_t val);
107 void sd(
size_t addr, uint64_t val);
guest_mem(size_t base=0x80000000, size_t sz=128 *1024 *1024)
构造函数:初始化内存子系统
定义 mem.cpp:16
size_t base_addr
物理映射的架构起始地址
定义 mem.hpp:32
bool in_pmem(size_t addr) const
判断地址是否在架构物理内存 (PMEM) 范围内
定义 mem.hpp:57
bool in_mmio(size_t addr) const
判断地址是否在设备 MMIO 范围内
定义 mem.hpp:64
void pmem_write(size_t addr, int len, uint64_t data)
定义 mem.cpp:66
void mmio_write(size_t addr, int len, uint64_t data)
定义 mem.cpp:50
void sh(size_t addr, uint16_t val)
Store Half-Word
定义 mem.cpp:106
void sd(size_t addr, uint64_t val)
Store Double-Word
定义 mem.cpp:108
bool in_bounds(size_t addr) const
判断地址是否可合法访问
定义 mem.hpp:71
void mem_init()
使用硬编码测试序列初始化内存 (主要用于无参测试)
定义 mem.cpp:113
uint8_t read_byte(size_t addr)
读取单个字节的底层接口
定义 mem.cpp:110
uint16_t lhu(size_t addr)
Load Half-Word (Zero-extended)
定义 mem.cpp:100
std::vector< uint8_t > mem
底层扁平化存储空间
定义 mem.hpp:31
int64_t ld(size_t addr)
Load Double-Word
定义 mem.cpp:103
void write_byte(size_t addr, uint8_t val)
写入单个字节的底层接口
定义 mem.cpp:111
uint8_t * get_host_ptr(size_t addr)
获取指定架构地址映射的主机内存指针
定义 mem.cpp:23
int8_t lb(size_t addr)
Load Byte (Sign-extended)
定义 mem.cpp:97
void sb(size_t addr, uint8_t val)
Store Byte
定义 mem.cpp:105
void paddr_write(size_t addr, int len, uint64_t data)
定义 mem.cpp:89
int16_t lh(size_t addr)
Load Half-Word (Sign-extended)
定义 mem.cpp:99
uint64_t pmem_read(size_t addr, int len)
定义 mem.cpp:56
uint64_t mmio_read(size_t addr, int len)
定义 mem.cpp:34
void load_binary(size_t load_addr, const void *ext_mem, size_t ext_size)
加载二进制数据 (如 payload) 到指定的架构物理地址
定义 mem.cpp:28
int32_t lw(size_t addr)
Load Word (Sign-extended)
定义 mem.cpp:101
void sw(size_t addr, uint32_t val)
Store Word
定义 mem.cpp:107
size_t size
预设的内存容量上限
定义 mem.hpp:33
uint64_t paddr_read(size_t addr, int len)
定义 mem.cpp:80
uint32_t lwu(size_t addr)
Load Word (Zero-extended)
定义 mem.cpp:102
uint8_t lbu(size_t addr)
Load Byte (Zero-extended)
定义 mem.cpp:98
constexpr size_t SERIAL_PORT
定义 mem.hpp:14
constexpr size_t VGACTL_ADDR
定义 mem.hpp:17
constexpr size_t DISK_ADDR
定义 mem.hpp:19
constexpr size_t FB_ADDR
定义 mem.hpp:20
constexpr size_t DEVICE_BASE
定义 mem.hpp:11
constexpr size_t AUDIO_ADDR
定义 mem.hpp:18
constexpr size_t AUDIO_SBUF_ADDR
定义 mem.hpp:21
constexpr size_t KBD_ADDR
定义 mem.hpp:15
constexpr size_t MMIO_BASE
定义 mem.hpp:12
constexpr size_t RTC_ADDR
定义 mem.hpp:16