本文分析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指令。
qemu user mode速记
发表于
更新于
本文是qemu user mode的一个速记,简单分析相关的代码、构建以及使用方法。 具体以riscv为例说明。
在qemu里增加指令的前端解码
发表于
更新于
本文梳理在qemu里增加一个指令的前端解码的基本逻辑。