StormQ's Blog
代码调试
性能优化
计算机系统
自制编译器
LLVM 编译器
TVM 编译器
代码调试篇(5):如何调试动态链接器
代码调试篇(4):如何调试 glibc 源码——准备篇
代码调试篇(3):利用 gdb 自动化测试复杂条件逻辑——以 behaviac 行为树为例
代码调试篇(2):如何编写 gdb 自定义命令
代码调试篇(1):零基础快速掌握 gdb 常用命令
性能优化篇(6):NEON 优化案例——低阶矩阵乘法(aarch64版)
性能优化篇(5):NEON 优化案例——图像转换之 RGBA 到 RGB(aarch64版)
性能优化篇(4):NEON 优化案例——图像转换之 RGB 到 BGR(aarch64版)
性能优化篇(3):零基础快速入门 NEON
性能优化篇(2):小心“STL 低效率用法”所带来的性能开销
性能优化篇(1):几种简单的访存优化手段
计算机系统篇之虚拟内存(9):理解 glibc malloc 的工作原理(中)
计算机系统篇之虚拟内存(8):理解 glibc malloc 的工作原理(上)
计算机系统篇之虚拟内存(4):再探 mmap
计算机系统篇之虚拟内存(3):如何使用内存映射文件在进程之间实现数据共享
计算机系统篇之异常控制流(10):Chapter 8 Exceptional Control Flow 章节习题与解答
计算机系统篇之异常控制流(9):异常控制流 FAQ
计算机系统篇之异常控制流(7):利用 fork 和 execve 实现一个简易的 shell 程序
计算机系统篇之异常控制流(6):如何正确地回收子进程
计算机系统篇之异常控制流(4):如何正确地让调用线程休眠一段时间
计算机系统篇之链接(18):如何避免未使用的且直接依赖的共享库
计算机系统篇之链接(17):"ldd: Unused direct dependencies" 意味着什么?
计算机系统篇之链接(16):真正理解 RTLD_NEXT 的作用
计算机系统篇之链接(15):共享库拦截技术之运行时库打桩
计算机系统篇之链接(14):.plt、.plt.got、.got 和 .got.plt sections 之间的区别
计算机系统篇之链接(13):升级共享库导致程序运行时错误的惨痛经历
计算机系统篇之链接(12):Chapter 7 Linking 章节习题与解答
计算机系统篇之链接(11):为什么要避免在 C 和 C++ 中使用全局变量
计算机系统篇之链接(10):.bss、.data 和 .rodata sections 之间的区别
计算机系统篇之链接(9):位置无关代码(下)——真正理解 PIC 函数调用的工作原理(Linux X86-64 示例)
计算机系统篇之链接(8):位置无关代码(中)——真正理解 PIC 数据引用的工作原理(Linux X86-64 示例)
计算机系统篇之链接(7):位置无关代码(上)
计算机系统篇之链接(6):动态链接
计算机系统篇之链接(5):静态链接(下)——重定位
计算机系统篇之链接(4):静态链接(中)——符号解析
计算机系统篇之链接(3):静态链接(上)
计算机系统篇之链接(2):目标文件
计算机系统篇之链接(1):gcc/g++的编译流程
解析器生成器之 JavaCC(4):如何基于 JavaCC 生成抽象语法树
解析器生成器之 JavaCC(3):如何基于 JavaCC 描述解析器
解析器生成器之 JavaCC(2):如何基于 JavaCC 描述扫描器
解析器生成器之 JavaCC(1): JavaCC 准备篇
自制编译器篇(2):JavaCC 应用案例——解析正整数加法运算
自制编译器篇(1):Cb 编译器的安装和使用
LLVM 之后端篇(6):如何基于 Pattern 实现指令选择
LLVM 之后端篇(5):理解 SelectionDAG 合法化
LLVM 之后端篇(4):理解指令选择的 dump 输出
LLVM 之后端篇(3):如何添加 MyRISCV 目标后端的第一条指令
LLVM 之后端篇(2):如何扩展 llc 的目标后端
LLVM 之后端篇(1):零基础快速入门 TableGen
LLVM 之 IR 篇(8):如何编写别名分析 Pass
LLVM 之 IR 篇(7):如何编写内联 Pass
LLVM 之 IR 篇(6):如何编写消除死代码 Pass
LLVM 之 IR 篇(5):如何基于新 Pass 框架扩展 LLVM IR 优化器
LLVM 之 IR 篇(4):如何基于传统 Pass 框架扩展 LLVM IR 优化器
LLVM 之 IR 篇(3):如何使用 LLVM IR 优化器
LLVM 之 IR 篇(2):如何编写生成 LLVM IR 的工具
LLVM 之 IR 篇(1):零基础快速入门 LLVM IR
LLVM 之 Clang 源码分析篇(6):clang::ento::CheckerContext 类
LLVM 之 Clang 源码分析篇(5):clang::ento::Checker< CHECK1, CHECKs > 类模板
LLVM 之 Clang 源码分析篇(4):clang::ento::CheckerManager 类
LLVM 之 Clang 源码分析篇(3):clang::ento::CheckerRegistry 类
LLVM 之 Clang 源码分析篇(2):clang::ento::CheckerRegistryData 结构体
LLVM 之 Clang 源码分析篇(1):clang::ento::CheckerInfo 结构体
LLVM 之 Clang 静态分析器篇(8):程序缺陷诊断——非法读写已释放的内存
LLVM 之 Clang 静态分析器篇(7):程序缺陷诊断——内存泄露
LLVM 之 Clang 静态分析器篇(6):程序缺陷诊断——内存重复释放
LLVM 之 Clang 静态分析器篇(5):程序缺陷诊断——fopen 和 fclose API 误用
LLVM 之 Clang 静态分析器篇(4):程序缺陷诊断——除零错误
LLVM 之 Clang 静态分析器篇(3):检查器的整体工作机制
LLVM 之 Clang 静态分析器篇(2):如何扩展 Clang 静态分析器
LLVM 之 Clang 静态分析器篇(1):如何使用 Clang 静态分析器
LLVM 之 Clang 篇(1):如何从源码构建并安装 Clang
TVM 篇(2):如何使用 TVMC 编译和优化模型
TVM 篇(1):如何从源码构建并安装 TVM