记录qemu irq相关的代码逻辑,以riscv为例。分析使用的qemu代码的版本是7.1.50。
Linux内核riscv entry.S分析
本文分析Linux内核里riscv构架下的entry.S这个文件,内核代码使用的版本是5.12-rc8。 采用直接在代码里加注释的方式写分析的内容,注释用“n:”开头。目前只分析主流程, 一些相关的细节还需要持续更新。
riscv原子指令分析
本文分析risvc中原子指令的定义,以及qemu里的实现方式,qemu的代码是6.2.50,riscv spec的版本是20191213
重读《程序员的自我修养》
本文是《程序员的自我修养》这本书的笔记,N年前上学的时候看过,如今再回来重新 看下。这本书从操作层面介绍了编译链接和库相关的知识,可以把它当作是深入学习 编译原理的一个导读。本文只是摘出其中的要点,必要的演示我们重新基于riscv搞下。
Linux内核riscv head.S分析
head.S是Linux内核最初阶段对机器初始化的代码,和体系构架相关,其中定义 了三个符号:_start, _start_kernel, reset_regs。主要问题集中在:1. 内存初始化? 2. 怎么起多核? 目前只看了单核启动相关的东西,而且所有不常用的内核配置先跳过不看。笔记在注释里,以n:开始。 分析基于Linux 5.17-rc3
qemu调试方法
qemu自己提供了debug接口,可以观察到机器自身的状态,比如,可以查看程序运行 时CPU各个寄存器的变化。本文分析相关的使用方法和qemu代码逻辑。本文以一个简单的例子说明使用方式,以riscv平台为基础。以qemu user mode为例 说明,system mode是一样的。分析中使用的qemu的版本是5.1.50
gdb用法收集
一直没有系统的看看gdb的使用方法,用这个文档持续记录下gdb的使用技巧。
qemu tcg跳转的处理
本文分析qemu tcg中跳转指令模拟,以riscv平台作为例子。
qemu tcg模拟原子指令
qemu tcg中原子指令学习的一个速记,以riscv为平台。
qemu模拟系统指令
本文分析qemu tcg里模拟系统指令的思路,比如模拟一个riscv的ecall指令。