0%

本文是使用meson构建程序的一个笔记,现在很多程序都是使用meson构建的,比如qemu、 glib库等,了解下meson的基本逻辑在使用用meson构建的程序时逻辑会更加清晰。 本文中的测试程序运行环境是ARM版本的ubuntu 20.04,示例使用的glib的版本是2.76.1。

阅读全文 »

本文介绍qemu tcg下中间码翻译和后端翻译的基本逻辑,代码分析基于qemu v7.1.50, 文中涉及的测试场景,我们选择riscv作为guest、arm64作为host。

阅读全文 »

本文分析riscv AIA的基本逻辑。目前,相关的代码还在社区review,分析使用的代码为, qemu使用v7.1.50主线代码,内核使用https://github.com/avpatel/linux riscv_aia_v2分支。

阅读全文 »

本文整理riscv的内存模型,基于riscv unprivileged ISA 20191213这个版本。其实 对于使用弱内存序的构架,它们的内存模型都是比较相似的,无非是细节上有可能有 一点不一样,本文也可以做为弱内存序相关的一个基础介绍。

阅读全文 »

本文分析riscv上page table walk的逻辑,这部分逻辑一般是硬件完成了,我们这里 分析qemu tcg对page table walk的模拟实现,从模拟中我们也可以看到其中的基本逻辑, 本文会分析整个page table walk的细节,并且分析整个两级地址翻译的流程,只有这样 才能彻底看清整个地址翻译流程。分析基于的qemu版本是v7.1.50。

阅读全文 »

本文分析qemu模拟ARM平台的方式,我们并不会深入分析相关的技术细节,只是大概 看下整体构架,点出各个模拟的关键点,保证我们在随后的深入分析中可以迅速找见 相关代码。

阅读全文 »