0%

之前写了一个《qemu tcg中间码优化和后端翻译》的分析文章,这个文章涉及的细节 太多,本篇想要描述的是一个东西,但是我们不提代码,着重分析qemu tcg后端翻译 的基本模型。分析中的guest构架使用riscv,host构架使用arm64。

阅读全文 »

本文分析qemu tcg中set_label这个中间码的qemu后端支持,分析基于的qemu版本是 v7.1.50,分析涉及到具体的guest/host CPU构架时,我们均采用riscv。

阅读全文 »

之前没有意识到insn_start这个中间码尽然是每个guest指令之间都要插入一个,本文分析下 qemu insn_start这个中间码的逻辑,分析依赖qemu v7.1.50版本。

阅读全文 »

qemu的编译系统是个大杂烩,它没有用Linux传统的autoconfig,确有一个configure文件, 而且每次还是通过这个configure文件做配置,它核心是使用meson描述依赖关系,但是转而 使用make做构建,它使用类似Linux内核的Kconfig文件,但是没有图形化的配置接口,除此 之外,它还有很多CONFIG项,你想hack一下都不知道它在哪里配置。本文分析qemu编译系统, 梳理其中的基础逻辑,分析基于qemu v7.1.50代码。

阅读全文 »

本文是使用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这个版本。其实 对于使用弱内存序的构架,它们的内存模型都是比较相似的,无非是细节上有可能有 一点不一样,本文也可以做为弱内存序相关的一个基础介绍。

阅读全文 »