技术栈
编译器
YangWeiminPHD
5 天前
c语言
·
汇编
·
51单片机
·
编译器
金水32051编译器下的AI8051U单片机入门:从点亮LED到“你好,世界,我来了!”
在嵌入式系统学习的漫漫长路上,点亮第一颗LED与向世界说出“Hello, World!”,是每一位开发者最具仪式感的第一步。然而,在8051单片机的世界里,这一小步往往伴随着复杂的寄存器配置、神秘的汇编指令和海量的芯片手册。许多初学者满怀热情打开一个工程,却被那些陌生的头文件、特殊功能寄存器和内嵌汇编吓得望而却步。
用户7538975528175
9 天前
编译原理
·
编译器
《手写解释器》第10章 函数
这也是人类思维的运作方式——将旧的想法复合成为新结构,成为新的想法,而这些想法本身又可以被用于复合,循环往复,无休无止,日益远离每种语言赖以立足的、植根于现实世界的基本意象。
jump_jump
11 天前
前端框架
·
代码规范
·
编译器
TSRX:一份源码,编译到 React / Solid / Vue / Preact / Ripple
JSX 这十几年承载了海量的生产代码——如果让 if / for / try 回到它们本来的样子,代码会变成什么样?
YangWeiminPHD
11 天前
c语言
·
单片机
·
编译器
金水32051编译器:人与单片机CPU之间的桥梁
本文深入剖析了单片机编译器的工作原理,以金水32051编译器为例,阐述了计算机语言的三层体系:高级语言(C语言)、低级语言(汇编语言)和二进制机器码。编译器通过词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成六个阶段,将人类可读的C程序转换为单片机可执行的机器码。同时,编译器还提供错误诊断、系统引导程序等辅助功能,确保代码质量和硬件初始化。在资源受限的单片机环境下,编译器的优化功能尤为关键,能显著提升代码执行效率和空间利用率。作为连接人类思维与机器执行的关键桥梁,编译器在嵌入式系统开发中发挥
shada
14 天前
c语言
·
编译器
mini-dog-c编译器开发 - 04 递归下降解析器
本篇为 mini-dog-c 编译器开发系列第四篇,介绍递归下降解析器的原理与实现。递归下降(Recursive Descent Parsing) 是最简单直观的语法分析方法。它的核心思想是:每个语法规则对应一个函数,函数负责消费(匹配)该规则对应的 Token 序列,并构建相应的 AST 节点。
shada
15 天前
编译器
mini-dog-c编译器开发 - 01 功能需求与设计
本篇为 mini-dog-c 编译器开发系列第一篇,介绍编译器的功能需求和总体设计。编译器是一种将高级语言翻译成低级语言(如机器码或汇编)的程序。它的核心工作分为三个阶段:
shada
15 天前
编译器
mini-dog-c编译器开发 - 03 抽象语法树(AST)
本篇为 mini-dog-c 编译器开发系列第三篇,介绍 AST 的设计思路与节点实现。Token 序列是扁平的、线性的信息,而代码本身是有层次结构的。比如 let x = a + b * 2; 这行代码,Token 流只告诉我们"这里有个加号,那里有个乘号",但没有告诉我们谁先算、谁后算。
众少成多积小致巨
25 天前
android
·
go
·
编译器
Soong构建入门
Soong 是 Android 7.0 后引入的构建系统,旨在取代基于 Make 的旧系统(Android.mk)。它将声明式的 Android.bp 文件解析为 Ninja 构建规范,从而实现更快的编译速度和更严谨的依赖管理。
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第11章 闭包:匿名函数的编译器实现
《Rust 编译器原理》完整目录"闭包不是魔法——它们是编译器帮你写的结构体。" —— 这是理解 Rust 闭包最核心的一句话。
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第15章 MIR 优化:编译器的中间表示与优化管线
《Rust 编译器原理》完整目录"编译器的艺术在于将程序员的意图精确地转化为机器指令,同时消除一切不必要的开销。MIR 就是 Rust 编译器完成这一使命的核心战场。"
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第6章 单态化:泛型的编译期展开
《Rust 编译器原理》完整目录"零成本抽象不是没有成本,而是把成本从运行时搬到了编译时。单态化就是这笔账单的具体明细。"
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第14章 宏系统:编译期的元编程引擎
《Rust 编译器原理》完整目录"宏不是文本替换——它是 AST 到 AST 的变换。理解这一点,你才能理解 Rust 宏系统的全部设计决策。"
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第16章 LLVM 代码生成:从 MIR 到机器码
《Rust 编译器原理》完整目录"当代码到达 LLVM 时,Rust 的安全保证已经完成了它的使命——剩下的只是把正确的代码变快。"
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第5章 内存布局:编译器如何排列数据
《Rust 编译器原理》完整目录"如果你不理解数据在内存中的样子,你就不理解你的程序。" —— Mike Acton
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第3章 借用检查器:编译器如何证明内存安全
《Rust 编译器原理》完整目录"借用检查器不是你的敌人,它是唯一一个在编译期就替你找出数据竞争的队友。"
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第9章 async/await:状态机的编译器变换
《Rust 编译器原理》完整目录"async fn 不是语法糖——它是编译器替你写了一个你永远不想手写的状态机。这个状态机的每一个字节都经过精确计算,不多也不少。"
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第8章 Trait Object 与虚表:运行时多态的内存布局
《Rust 编译器原理》完整目录"在 C++ 中,你需要猜测虚函数调用的代价;在 Rust 中,每一次 dyn Trait 调用的内存成本是完全透明的——两次指针加载,一次间接跳转,不多不少。"
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第13章 FFI:与 C 世界的桥梁
《Rust 编译器原理》完整目录"ABI 是两种语言之间的握手协议——参数怎么传、返回值放哪里、谁来清理栈、谁来释放内存。" —— 系统编程格言
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第4章 生命周期:编译器如何推断引用的有效范围
《Rust 编译器原理》完整目录"Lifetime is the compiler's proof that your references will never dangle."
杨艺韬
1 个月前
rust
·
编译器
Rust编译器原理-第7章 Trait 静态分发:零成本抽象的编译器实现
《Rust 编译器原理》完整目录"零成本抽象不是没有代价——代价在编译期全部付清。理解编译器如何在编译期解析每一个 trait 方法调用,你就理解了 Rust 性能承诺的底层机制。"