参考博客https://www.cnblogs.com/ccxikka/p/9477530.html
目的原本AS是树状结构通过该方式将其展开成平面结构,最终得到的FlatView相当于一个内存条
最终生成的结构体间关系如下图所示
具体实现步骤分析:
//exec.c中memory_map_init函数
static void memory_map_init(void)
{
system_memory = g_malloc(sizeof(*system_memory));//动态分配system_memory这memory_region
memory_region_init(system_memory, NULL, "system", UINT64_MAX);//创建system_memory的qom
address_space_init(&address_space_memory, system_memory, "memory");//地址空间初始化
system_io = g_malloc(sizeof(*system_io));
memory_region_init_io(system_io, NULL, &unassigned_io_ops, NULL, "io",
65536);
address_space_init(&address_space_io, system_io, "I/O