跳转至

BLOG

二重积分

高等数学之二重积分。包括二重积分的定义、性质、计算技巧、换元法,以及在直角坐标系和极坐标系下的二重积分计算方法。

多元函数的导数与微分

高等数学之多元函数的导数与微分。包括多元函数的偏导数、高阶偏导数与混合偏导数、多元函数的全微分、复合函数的求导法(链式法则)、隐函数求导法则、场的方向导数与梯度、多元函数的泰勒公式、多元函数的极值与最值。以及连续性、可导性、可微性的关系。

多元函数的极限与连续性

多元函数的极限与连续性。包括二元函数的极限定义、存在性判断与计算方法、二重极限和累次极限的关系、以及二元函数的连续性与连续函数的相关性质。

指令选择

本文简要介绍了指令选择问题中的两种主要方法:

  1. 使用贪心策略的 Maximal Munch 算法,通过选择最大图块覆盖 IR 树节点,快速生成指令。
  2. 基于动态规划的算法,自下而上地计算最优代价,获得更精确的整体最优解。

活跃变量分析

本文介绍了编译原理中的活跃变量分析,以及其在寄存器分配和死代码删除等方面的应用。具体内容包括构建控制流图进行数据流分析、活跃变量的定义与判定算法。

常微分方程

高等数学之常微分方程。包括一阶微分方程(可分离变量的方程、齐次方程、线性方程、伯努利方程、全微分方程)、可降阶的高阶微分方程、二阶线性微分方程(常系数线性齐次和非齐次微分方程)、欧拉方程。主要探讨这些方程的求解法。

省流:

微分方程 通解/换元法
\(y' + p(x) y = 0\) \(\displaystyle y = Ce^{-\int p(x) dx}\)
\(y' + p(x) y = q (x)\) \(\displaystyle y = \left[\int q(x)e^{\int p(x) dx}dx + C \right] e^{-\int p(x) dx}\)
全微分方程 \(\displaystyle \int_{(0, 0)}^{(x, y)} P dx + Q dy = C\)
\(y'' + b y' + c = 0\) 特征方程 \(\lambda^2 + b\lambda + c = 0\)
\(k\) 重实数根 \(\lambda_i\) 对应分量 \(C x^{k-1} e^{\lambda_i}\)
共轭复根\(\lambda = a\pm bi\) 对应分量 \(e^{ax}\big(C_1 \sin bx + C_2 \cos bx\big)\)
通解为所有分量之和
\(y'' + by' + c = P_m(x)\cdot e^{\lambda x}\) 非齐次方程的一个特解为 \(\tilde{y} = Q_m(x) x^k e^{\lambda x}\)
\(\lambda\) 为特征方程的 \(k\) 重根,\(P_m(x), Q_m(x)\) 为不超过 \(m\) 次的多项式
\(y'' + py' + qy = e^{\alpha x}[P_c(x) \cos \beta x + P_s(x) \sin \beta x]\) \(\tilde{y} = x^{k} e^{\alpha x}[R_{m,1}(x)\cos \beta x + R_{m,2}(x)\sin \beta x]\)
\(\alpha \pm \beta i\) 是特征方程的根时 \(k = 1\);否则 \(k = 0\)
\(y'' = f(x, y')\) \(p = y'\),求解关于 \(p, x\) 的微分方程
\(y'' = f(y', y)\) \(p = y'\)\(\displaystyle y'' = p\frac{dp}{dy}\),求解关于 \(p, y\) 的微分方程

中间代码生成

中间代码生成

中间代码/中间表示 (Intermediate Representation, IR)

AST -> IR1 -> IR2 -> ... -> IRk -> asm

IR 是一种抽象的机器语言、旨在表达目标机器的操作而不涉及过多与指令集有关的细节。相比于直接生成目标架构的汇编语言代码,将源代码首先转为 IR 能够有效地提高编译器的模块化以及可移植性(考虑需要将高级语言转为不同目标架构的汇编语言)。

玩图寻

能够在图寻游戏中使用到的地理知识和技巧。有助于在全球积分赛中浑水摸鱼,恰到烂分。

活动记录

冯诺依曼架构中的编译器需要将所有的 CODE 转换为汇编指令,并为 DATA 分配空间。活动记录是通过编译器实现的,使得程序在运行时,存储或传递:函数或过程的局部变量、返回地址、参数等信息的数据结构,一般是栈帧。