The Talk

探索未知,记录生活

探索分享未知的知识,记录快乐的每一天

LLVM基础设施和Rust

LLVM基础设施和Rust

全面介绍 LLVM 编译器基础设施与 Rust 的协作原理。LLVM 是模块化的编译器工具链,采用前端-优化-后端三阶段架构。核心的 LLVM IR 使用静态单赋值形式和无限虚拟寄存器实现高效优化。Rust 编译器选择 LLVM 作为后端,可减少实现负担、获得成熟的优化能力并支持跨平台编译。本文通过 square 和 factorial 函数示例,直观展示源码到 IR 的转换过程

daviddavid

GCC为什么需要编译两次才能完成自举

深入解析 GCC 编译器自举原理。编译器自举是指用自身语言编写编译器,解决"先有鸡还是先有蛋"的经典问题。GCC 需要两次编译的核心原因在于 glibc、libgcc 与 libstdc++ 之间的循环依赖:第一次编译产生功能不完整的交叉编译器,第二次编译才能链接 完整的 glibc 构建出完整的标准库。本文通过 LFS 实践详解三阶段编译流程。

daviddavid

Erlang 是如何释放NIF的资源

深入解析 Erlang NIF 资源释放机制。通过 Lua 插件开发实践,详解如何使用 enif_alloc_resource 分配资源、enif_make_resource 与 enif_release_resource 实现引用计数管理,确保进程崩溃时自动释放 NIF 绑定的 C 资源。对比 Port 方案,NIF 是 Erlang 调用 C 代码最高效的方式,本文帮助开发者掌握其内存安全的核心原理。

daviddavid
 Linux shell的演进史

Linux shell的演进史

深入解析Linux Shell演进史:从1971年Ken Thompson开发的V6 Shell到现代Bash、Zsh的发展历程,涵盖Bourne Shell、C Shell、Korn Shell的技术特性与脚本对比。

daviddavid