我是 Yile Liu,ZJU-UIUC 联合学院电子与计算机工程本科生,现在在海宁。2027 年秋季到 Urbana-Champaign 校区,预计 2029 年毕业。
我的兴趣是编译器和底层系统——我喜欢那种输出必须真的能跑起来、而且“对不对”是可以量的题目。
工作
LLVMIRToLC3Pass —— 一个用 C++ 写的 out-of-tree LLVM pass,把 C 生成的 LLVM IR 降到 LC-3 汇编:一种只有八个寄存器的 16 位指令集。
其中四个寄存器被调用约定钉死(全局基址、帧指针、栈指针、返回地址),只剩三个能做计算——所以溢出不是补丁,是设计的起点。返回地址寄存器同时兼任 phi 的 predecessor selector,因此不需要做 edge splitting;而 LDR/STR 的六位立即数偏移把单个函数的局部变量压到 32 个以内,这个限制又反过来决定了栈帧布局,最后传导到了调用约定本身。
支持 phi、select、switch、getelementptr、变参调用,以及一个小 libc(printf、scanf、sprintf、sscanf)。测试共 35 个、分三层;其中 16 个会把生成的代码汇编后在 LC-3 模拟器上运行,比对 stdout。
更早
2019–2023 年做信息学竞赛(OI)。留下来的习惯是量常数因子,而不是相信渐进复杂度。