编写 C 编译器:从头开始构建真正的编程语言
Writing a C Compiler: Build a Real Programming Language from Scratch

原始链接: https://nostarch.com/writing-c-compiler

“您是否编写过 C 代码,并且真的想知道它如何变成在处理器上运行的代码?诺拉的书不仅会帮助您了解其工作原理,还会帮助您了解如何对自己的资产进行此类翻译,例如 没有编译器博士学位的人也可以使用这种语言和代码。”——Lars Bergstrom,Google 工程总监 “这本书是对编程语言编译器主题的精彩介绍,非常全面,提供了许多进一步阅读的建议, 读起来非常愉快——对类似 C 语言的编译器编写进行了“从头到尾”的处理。”——John Reppy,芝加哥大学计算机科学教授“阅读一本关于编译器设计的书令人耳目一新 如果您厌倦了阅读该主题的教科书,则专注于实现实用的现实世界语言,而不是进行枯燥的、有趣的和令人兴奋的学术练习。” 网络组装

可以通过模式匹配来简化树操作代码的编写。 讨论差异列表算法(用 Haskell 编写)的文章中演示了一个很好的例子。 本质上,它创建了一个由嵌套列表组成的树结构。 通过将树转换为右倾格式,然后连接所有叶列表,操作变得更加高效,减少了计算时间。 模式匹配允许紧凑且简单的代码。 如果没有它,相关代码将会变得更长并且更难以理解。 值得注意的是,Rust 拥有模式匹配,但由于其强调低级问题(例如指针和内存管理)而受到阻碍。 编译器设计的趋势包括越来越多地采用静态单赋值 (SSA) 作为中间表示 (IR),以及编译器 IR 的重要性日益增强。 此外,形式语义也得到了重视,即使是较弱的记忆模型也具有复杂的功能形式描述。 从历史上看,解析器生成器被广泛用于实现多种流行的编程语言,但近年来它们变得不那么受欢迎,手工制作的解析器已成为常态。 改进的编译器优化技术涵盖了更广泛的分析,超越了传统的 use-def 链和特定于循环的优化,从而促进了整个函数级分析。 编译器技术的最新发展需要能够从更简单的底层表示中推断分析,LLVM 采用的结构化 Risc 汇编操作 (SROA) 就证明了这一点,它根据加载和存储而不是显式定义的结构属性来分析代码。 最后,对将附加工具与编程语言集成、支持源代码查询以及提供语言服务器、自动格式化和自动重构等功能的需求不断增长。 总之,编译器技术的进步带来了效率的提高、高级编译技术的利用以及与随附工具的更大兼容性,从而提高了生产力。 模式匹配在促进编码便利性方面发挥着重要作用,特别是在树操作场景中。
相关文章

原文

"Have you written C code and really wondered how this turns into code that runs on a processor? Nora's book will not only help you see how that works but will help you to understand how to do these sorts of translations for your own assets, in language and code accessible to people without a PhD in compilers."
—Lars Bergstrom, Director of Engineering at Google

"This book is a great introduction to the topic of compilers for programming languages. It is extremely thorough, with many suggestions for further reading, while being quite enjoyable to read — a 'soup-to-nuts' treatment of compiler writing for C-like languages."
—John Reppy, Professor of Computer Science, University of Chicago

"It is refreshing to read a book on compiler design with a focus on implementing a practical real-world language, rather than working through dry academic exercises . . . practical, fun, and exciting to read if you are sick of reading textbooks on the subject."
—Rick Battagline, author of The Art of WebAssembly

联系我们 contact @ memedata.com