2023 年度总结 Jun's Blog 2023年12月30日 11:49 对年度总结的一点想法 这应该是我写年度总结的第三个年头。一开始仅仅是跟风,可现在回看自己曾经写的总结,看到自己这几年的进步和对很多东西看法的转
OS 学习记 之 XV6 Jun's Blog 2023年8月15日 23:45 XV6 是 MIT6.S081 操作系统这门课中使用的实验操作系统内核。它的作者之一就是大名鼎鼎的 Robert Morris,世界上第一个蠕虫病毒 Morris 就是出自他之手。XV6 传承了 Unix
如何编译 GraalVM Jun's Blog 2023年7月27日 23:45 下面记录了我如何在 Linux (Ubuntu22.04 LTS) 上编译 GraalVM 的步骤。 1 2 3 4 5 6 7 8 9 10 11 12 mkdir lava # 创建一个工作区 git clone https://github.com/graalvm/mx.git # 下载编译用的工具 git clone https://github.com/graalvm/graal.git # 下载源代码 export PATH=$(pwd)/mx:$PATH # 将 mx 加到
LLVM 中端优化之 InstCombine Jun's Blog 2023年7月18日 16:45 InstCombine 是 LLVM 中的一个窥孔式的优化,为 LLVM 在 canonicalize IR 过程中的一个重要组成部分。这个 Pass 的主要目的就是尽可能地根据数学规则合并优化 IR,同时将 IR 归一化。 代码实
C++ 中 inline 关键字的语义 Jun's Blog 2023年7月11日 23:45 C++ 真的是非常地混乱和难学,本文中我会简单谈谈 inline 在 C++ 中的含义和作用。 优化器眼里的 inline 在这一层语境下,inline 是指将在函数调用处将函数体展开,
链接与库 Jun's Blog 2023年3月3日 16:32 虚拟内存 我们首先要对平时所说的内存要有一个清楚的认知,那就是我们所谈的实际上都是虚拟内存,不是操纵真实的物理内存。在没有安装操作系统的裸机上
如何优化矩阵相乘 Jun's Blog 2023年2月16日 23:50 本文中所有的优化策略源自 How To Optimize Gemm,感谢 Prof. Robert van de Geijn 教授及其团队的付出!❤ 我对原有的代码进行了一些改动,并放在了 junaire/HowToOptimizeGEMM 中。 矩阵相乘的定义 假设给
2022年度总结 Jun's Blog 2022年12月31日 11:53 对过去的回顾 回看下我一年前年度总结中的对今年的愿景,大多是达到了,这是我比较满意的一方面。在过去的一年中我做的最重要的一件事,可能也是会将改
CUDA初学笔记 Jun's Blog 2022年11月22日 17:03 1 2 3 4 5 6 7 8 9 __global__ void Kernel(float* A, int N) { int x = blockIdx.x * blockDim.x + threadIdx.x; if (x < N) A[x] = 1; } int main() { // ... Kernel<<<2,32>>>(A, 64); } 上面是一个简单的 CUDA 例子,其中初始化了一个长度为64的单精度浮
汇编语言之实模式 Jun's Blog 2022年11月6日 23:45 基础知识 在进入主题前,先总结下关于二进制的一些知识点,我个人认为这非常的令人困惑: 1 bit, 指1位,0或者1 1 byte, 指1个字节,有8位 1 word, 指1个字,有
浅析 libc++ 中的 string 实现 Jun's Blog 2022年8月13日 13:33 std::string 也许是 C++ 程序员最常用的标准库数据结构之一了,用了这么久的 std::string,它内部究竟是如何实现的?究竟什么是SSO (Small String Optimiz
std::expected 基本使用 Jun's Blog 2022年5月9日 23:52 最近看cppreference的编译器支持的时候发现libstdc++已经实现<expected>了,可惜的是在网上看了一下发现
C++模板基础 Jun's Blog 2022年2月27日 20:39 函数模板 先看几个简单的例子了解下函数模板是如何使用的: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 template<typename T> T max(T a, T b) { return b < a ? a : b; } max(1,2); // 隐式指定了模板实参
CSAPP第九章笔记之虚拟内存 Jun's Blog 2022年2月15日 20:09 虚拟内存 一个系统有很多进程,本质上每个进程都与其它进程共享主存。但是如果直接让每个进程自由访问整个物理内存,将非常危险且麻烦: 一个进程可能有
CSAPP第八章笔记之异常控制流 Jun's Blog 2022年1月27日 22:21 异常控制流 硬件层上,硬件检测到的事件会触发控制突然转移到异常控制程序。 操作系统层面上,内核通过上下文切换将控制从一个用户进程转移到另一个用户
编译安装GCC12 Jun's Blog 2022年1月1日 12:32 因为想用C++20标准的原因,所以要求使用GCC12。可是Ubuntu20默认的编译器是GCC9,于是只好自己编译安装一个 GCC trunk。 没想
CSAPP第三章笔记Part 2 Jun's Blog 2021年10月22日 15:34 在前面简单介绍了一些常见的汇编指令,接下来我们谈一下在程序执行中一个非常重要的概念:过程 过程是软件工程中一种重要的抽象。它使得我们可以复用之
CSAPP第三章笔记Part 1 Jun's Blog 2021年10月10日 17:11 程序的执行 虽然我们日常使用的编程语言多种多样,但对于计算机来说,其唯一能理解的无非就是二进制,即0和1而已。 CPU的工作流程基本可以看作为控
浅谈C++中的类 Jun's Blog 2021年3月20日 01:00 类的基本思想 数据抽象 封装 接口 实现 类的性质 构造 当一个对象被创造出来,就称之为构造.构造的过程实际上是调用了类定义的构造函数 构造函数不能被声明为