compile
Transformed from Logseq page
compile
-
Intro
-
Syntax
-
context-free syntax -> readability
-
-
semantics -> ambigurous
-
Fortran -> COBOL -> lisp
-
Linked References (31)
OSDT #compile
-
进的时候有位大佬在介绍GPU调度
-

-

clang standalone编译 #tips #compile
-
Standalone build for clang & lld, fix or remove? - #9 by kwk - LLVM Project - LLVM Discussion Forums ↗
Advanced Compile Intro #compile
-
中端
-
控制流
-
SSA与LLVM IR
-
single static assignment
-
-
数据流分析
-
指针分析
-
P -> {O}
-
flow sensitive
-
context sensitive
-
path sensitive
-
-
-
过程间控制流
-
-
后端?
-
codegen
-
指令选择
-
寄存器分配
-
指令调度
-
-
-
else
-
实验用Clang与LLVM
-
本身的编译速度
-
use C++20 module in LLVM?
-
-
commands
-
llvm-dis test.bc -
opt -view-cfg test.bc -
opt -mem2reg test.bc -o test.opt=> SSA code -
llc test.c=> asm -
clang/gcc as linker
-
-
缺陷表述语言 APISpell
-
SmPL: semantic patch lang
-
pattern based code matching & transforming
-
-
-
-
马云离开的第四年,19000多人被阿里裁掉,释放出什么信号? - 知乎 ↗ #PL #compile
-
关于PL人是怎么看编译器业界的人的
-
这才是正确的教育方法,因为它给予学生合理的反馈,让他们清晰的知道自己的表现是否符合预期,主动进步,而不是拿一些学生事先不知道的标准在那里瞎坑人,光是给人打分。
-
ACM赛制好!OI赛制什么坑货,不敢给人hack只能说测例本身水的一批
-
-
编译器领域最重要的教材,龙书和虎书,在我看来也有很多一知半解,作者自己都稀里糊涂的内容。而且花了大量篇幅讲parser这种看似高深,实则肤浅的话题,浪费读者太多时间,误导他们认为 parser 是至关重要的技术。以至于很多人上完编译器课程,只学会了写 parser,对真正关键的部分没能理解。
-
回想起来确实如此,主要的focus还是太关注parser了,虽然parser很重要但它只是编译器前中后端里的一部分,而且是非常模块化的一部分,不从事该领域研究的人可以直接当做黑盒调用
-
相比起来,更generic的是parser的复杂度、能力与语言设计之间的制约关系
-
最后一次课了 #compile
-
json2xml
plaintextS'-> {I} I->I,I $$=$1+$2 I->C $$=$1 C->i:E $$=<i><E></i> E->i $$=$1 |S $$=$1 -
plaintextE->L $$=$1 |a $$=a.lexval L->(S) $$=S.head(S.others) S->SS $$.head=$1.head,$$.others=$1.others+$2.all |E (a(b(c)))(d,e(f,g(h)))
课堂小计 #compile
-
为什么反向压栈
-
callee只具有当前栈顶指针而不具有关于caller栈帧的其他假定,为了实现可变参数,ABI就规定把前面那些固定的参数保存在栈顶,从而能据此对变长参数进行处理
-
-
代码优化!好东西
-
size and speed tradeoff
-
一系列heuristic rules
-
-
还准备讲点构建工具,好东西
-
一些题,都是C+x86的奇葩
-
C竟然可以定义
int foo(int)调用foo(x,y,z)
-
课堂小记 #compile
-
栈和堆空间的运行时动态调整?
-
用类似sbrk的syscall应该能动态加分页映射呀,虽然不知为啥栈那端确实没有
-
哦,只要使用mmap出来的空间就行
-
-
反复提及Ruby,是粉丝罢
今日小记 #compile
-
quiz力
plaintextnot(a<b and(c<d or not (e<f))) = not ab or not(cd or not ef)=not ab or not cd and ef ifnot(ab) goto L2 if(cd) goto L3 ifnot(ef) goto L3 x=x+1 if(x=0)goto L0 ifnot(x=2)goto L1 -
quiz2
plaintextef and (not gh or not ik) if(a>b)goto L0 if(c>d)goto L1 #if(e>f)goto L1 ifnot(e>f)goto L0 ifnot(g>h)goto L1 if(i>k)goto L0
继续 {{embed (((64417248-0c7a-45a3-9d61-8a309e6e0ea0)) }} #compile
-
都能通过传值实现?
-
编译器常量优化,通过传值实现?
-
泛型参数可能无法编译期确定
-
涉及linker,off-the-shelf object
-
-
-
杂谈
-
synthesis是拉丁语,etc./et al.这一对也是
-
楽,enumeration到底读啥哈,[əˌno͞oməˈrāSHən]还是i-ˌn(y)ü-mə-ˈrā-shən
-
IDE真不是相当程度的调用编译器、保持一致性吗,例:编译器会识别
1/(1-3+2),IDE可能不会,因为IDE识别的规则不完善?
-
-
综合属性
-
继承属性
-
适合处理上下文信息
-
例:
int a,b,c如何传递类型-
plaintextD->TL : L.type=T.type T->int|real : T.type=x L->L1,id|id : id.type=L.type|addtype(id.entry,L.type)//可能顺便检查是否冲突,L1.type=L.type -
若为自上而下则可直接赋值,若为自下而上顺序不一致?
-
输入串->语法树->依赖图->计算属性
-
以语法树节点作为element,要是有环路怎么办?以值为element
-
真有值环路就不是良定义的(well-defined/ill-defined),检测或者超时报错
-
例:
#include循环依赖(好像也不太恰当)
-
-
-
讲到语义分析了 #compile
-
Syntax-Directed Definition/Translation
-
杂谈 出书的图灵奖得主
-
人月神话 Peopleware
-
陷坑,加钱只会打水漂
-
-
-
属性文法
继续 (((643215ec-059d-4848-ad39-a00a7b8f8dd1)) #compile
-
handle -> O(n) to O(1)
-
stack 和queue都行
-
stack实现上开销的常数更小
-
-
拓广文法 增加
-
因为S可能在产生式中作为叶节点,则自底向上过程中无法知道是否到了根
-
-
求闭包的时候,经常会碰到已求解过的集合
整一下作业 #compile
-
消除左递归怎么推的来着?
-
真nm离谱啊,手动消CFG里的左递归、左公因子还得递归进行,全写废了 这么复杂的玩意根本没讲过好吧,到底是先消左递归还是先消左公因子?
-

-

-

自底向上解析 #compile
-
自顶向下问题:无法准确定位错位置
-
derivation reduction
-
LR: l2r reduction and rightmost derivation?
课堂笔记 #compile
-
继续 (((6419566f-0e91-4462-8da6-f651821ad9bf))
-
左句型、右句型
-
a=b=c计算顺序?=assignment operator 是right-associative滴 -
二义性:推导过程,i.e.语法树
-
ab数量相同的串
-
由子串构建
-
考虑aabbbbaa?若有就可以。第一个例子枚举的组合,不行
-
-
少的不一定好,考虑可读性
-
-
CFG=
-
-
Top-Down Approach 自顶向下
-
Left-Recursion:
-
消除左递归:
-
e.g.
plaintextexpr->expr+term|term expr->term expr' expr'->+term expr'|epsilon -
pram?首领?“ ’ ”?
-
-
间接左递归
-
Left-Factoring:
-
等价变换为
-
-
-
发作业了,他批作业竟然还给我举反例😭
谈正事儿了 #compile
-
-
又杂谈了:大型程序编译中间卡住,提前判断?
-
CFG(Context Free Grammar): rewriting
DONE Compile HW1 ↗ #compile #homework DEADLINE: <2023-03-21 Tue> :LOGBOOK: CLOCK: [2023-03-17 Fri 08:31:17] CLOCK: [2023-03-17 Fri 08:31:29]—[2023-03-21 Tue 14:12:26] => 101:40:57 :END:
NFA2DFA #compile
-
任意状态从s0抵达的路径都是等价的?即是否满足无记忆性?
-
NFA不满足
-
-
枚举可达状态?有穷?
-
至可达状态不再增长终止
-
由于任意s的有穷,而有限
-
-
DFA简化
-
a,b可区别 iff 从a,b出发的可达路径集不同
-
PPT写的是且CD中只有一个可达。。
-
-
则AB状态相同(?)
-
奇怪的杂谈 #compile
-
runtime environment
-
var, mem loc
-
-
黑龙江,20年前,高中应该人均学过映射吧?
-
问:如何从regex串转化为NFA状转表?
-
这不就是编译吗。。
-
好家伙藏这儿呢,跳到算术式优先级了
-
May 30th, 2023现在看不懂力(悲)
-
-
正则表达式的局限性 #compile
-
-
常见场景,如括号匹配
怎么串到离散数学的 #compile
-
幺半群、代数系统
-
建立在图的幺半群上,数据结构的原理?
compile course 杂谈
-
99 bottles of bears
-
Java GC refinement
-
GCD的更相减损、辗转相除、欧几里得算法
-
perl其实现在还有很多历史悠久的项目在用,比如postgresql里脚本生成对象化的C代码😋
-
shell类语言会guess缺失引号,潜在风险
-
imperative vs. declarative
https://github.com/dtcxzyw/cmmc/blob/main/docs/Compilers%20Three%20Easy%20Pieces.pdf ↗ #compile
-
强烈推荐,绝佳教材,应该达到了研究生课程水平
MLIR as a Rewritable Graph Database ↗ 作者总结了为什么mlir当前无法直接用于db #DB #compile




很有意思,似乎是根据左结合规定了冲突的情况优先reduce?