基于 Rust 编写最小 JIT
即时编译(Just In Time Compilation,简称 JIT 编译)是一种动态编译技术,在程序运行期间将高级语言的源代码或者中间表示形式(如字节码)转换为机器代码。与传统的静态编译不同,JIT 编译器在程序运行时选择性地编译代码片段,并且可以根据运行时的具体情况优化这些代码。 下面使用 Rust 构建一个最小 JIT 案例,参考 rustyjit
即时编译(Just In Time Compilation,简称 JIT 编译)是一种动态编译技术,在程序运行期间将高级语言的源代码或者中间表示形式(如字节码)转换为机器代码。与传统的静态编译不同,JIT 编译器在程序运行时选择性地编译代码片段,并且可以根据运行时的具体情况优化这些代码。 下面使用 Rust 构建一个最小 JIT 案例,参考 rustyjit
构建最小虚拟机 前言 ARM 架构上的 KVM(Kernel based Virtual Machine)是一种基于 Linux 内核的虚拟化技术,它允许用户空间程序通过系统调用来直接控制硬件,从而实现对虚拟机的管理。KVM 在 x86 平台上已经非常成熟,而在 ARM 架构上,KVM 也得到了广泛的支持和发展。 PS: 本文首发在幽兰 Wiki 构建最小虚
什么是所有权 所有权(ownership)是 Rust 用于管理内存的一组规则,通过在编译阶段检查程序内存使用的合法性,来避免运行时的内存安全问题。 所有权的优势: 1. 运行时零开销,不会影响性能; 个人认为的缺点: 1. 开发者的学习成本稍高,并随着程序的复杂度上升,需要付出更多的心智成本。 所有权原则 所有权的基本规则: 1. Rust 中每一个值都被
前言 这篇 blog 记录我的 QEMU 贡献情况,你可以通过这里 查询所有邮件 10 。 下面按照日期倒序排版。 讨论如何更方便的打印调试 IR 变量 RFC PATCH v1 0/1 Add helper print functions for printing intermediate results of complex instructions i
前言 从 2021 年开始,我一直从事体系架构模拟和动态二进制翻译工作,由于工作需要,我经常要调试各种操作系统,比如 Linux、VxWork、FreeRTOS 、RT Thread、SylixOS、AcoreOS、ReWorks 等等,这让我对操作系统的原理和业务应用场景有了一个宏观的认识。随着嵌入式系统的复杂化和规模化(多系统的同步与交互),对于数字嵌入
前言 本篇文章,主要记录对 Intel x86 架构 CPU 的 VMX 硬件虚拟化技术的学习和研究情况。 参考资料清单如下: 深度探索 Linux 系统虚拟化 1 QEMU/KVM源码解析与应用 2 1 : https://read.douban.com/ebook/162815582/ 2 : https://book.douban.com/subjec
AliasAnalysis.html 中对别名分析进行了基本的介绍: Alias Analysis (又名 Pointer Analysis),用于确定两个指针是否指向内存中的同一对象,这里有很多不同的别名分析算法,可分为:流敏感 vs 流非敏感、上下文敏感 vs 上下文非敏感、域敏感 vs 域非敏感、基于一致性的 vs 基于子集的。 传统的别名分析用于给出
QEMU 启动以后,并没有立刻执行客户机程序的第一条指令,而是先执行 Machine 在初始化阶段设置的 reset vector 程序段,然后再跳转到客户机程序的第一条指令。 因此第一条指令的PC地址为 memmap GD32VF103 MFOL .base + 0x1000,通过以上代码得知,memmap GD32VF103 MFOL .base 为0,
当前成果: 下面记录关键 patch 解决的问题: patch 修复 dts 编译警告问题 这个 patch 主要解决了编译过程中遇到的 dts 编译警告,后续主线应该会修复该问题。 patch 添加 nuclei n205 核心 初始化 N205 核心的时候,用的 DEFINE VENDOR CPU(),可扩展厂商自定义指令集。 patch 添加 gd32
为了方便学习 QEMU 的 tcg 模块,尝试从零裁剪 QEMU 源代码,仅保留和 TCG 相关的模块。通过裁剪源代码,可以深入了解 QEMU 的代码组织结构,为学习 QEMU 打造一个坚实的基础。 base QEMU version: 8.2.0 QEMU 构建系统 QEMU 使用 meson + ninja 构建(make 也支持),脚本语言风格类似 p
uops 词义解析 μops 代指 uop ,全称是 Micro operation ,中文直译为“微操作”,micro 可以希腊字母 μ 代替,然后 operation 可以缩写为 op ,连一起即 μop。为方便书写,使用 u 代替 μ 。用 uops 来统称所有的 uop ,即 Micro operations (为了方便,下文统一称为 uops )。
用例和先决条件 本篇文章将展示,在 Windows 平台如何通过 Intel® VTune™ Profiler (下文简称 VTune)来识别和分析串行/并行应用程序中的性能瓶颈。使用 VTune 自带的 matrix 示例矩阵乘法应用程序作为分析和优化对象(备注:由于采用 Github 作为文章图床,部分图片加载速度稍慢)。 本文章要求安装多个英特尔软件工