链滴
社区愿景和功能特性
优雅的 Markdown 所见即所得编辑
快捷键交互
随时自由编辑分享内容
支持注销账号来去自由
分布式社区网络
开放 API
产品
Symphony 社区系统(Java)
Solo 博客系统(Java)
Vditor 编辑器(TypeScript)
思源笔记(Electron、Go)
Pipe 博客平台(Vue、Go)
发展计划表
发展简史
榜单
GitHub 仓库排行
帖子打赏排行
Solo 博客端排行
积分排行
活跃度排行
贡献排行
本站基于开源项目 Sym
编程代码问答
登录
注册
首页
>
标签
Kaleidoscope
11
引用 •
3
回帖 •
393
浏览
参与讨论
关注
关注
分享
编译原理
21
引用 •
39
回帖 •
2
关注
LLVM
20
引用 •
3
回帖 •
1
关注
教程
143
引用 •
602
回帖 •
8
关注
默认
热议
好评
优选
最近回帖
关注者
查看所有标签
关于 SiYuan v3.1.12 后默认自动清理超过 180 天快照的调查
目前思源加入了自动的快照清理功能,触发时机如下: 手动触发同步 每 24 小时执行一次 默认的配置是保留 180 天内的快照,每天保留两份。 在启动、退出时的同步不会触发,但是 30s 的自动同步会触发。 我个人不喜欢这个设计,因此以下的描述可能会有偏颇。不喜欢的原因如下: 清理功能是自动的且没有开关默认开启,这导致假 ..
401
11 小时前
使用 LLVM 开发新语言 Kaleidoscope 教程
原文链接: [链接] 前言: 本系列是 [链接] 译文,诣在熟悉 LLVM 的开发流程,网上有一些翻译只有前三个部分,没有翻译全,并且都是四五年前的没有更新过。由于对于编译器的概念只停留在理论上,想从代码的角度深入理解一下编译器,希望通过这部分的练习可以帮助到我。利用国庆假期这几天,我会仔细阅读此系列文档及源码并尝试翻 ..
1.7K
2 年前
Kaleidoscope 系列第一章:新语言特性和 Lexer
原文链接 [链接] 本文是 [使用 LLVM 开发新语言 Kaleidoscope 教程] ([链接]) 系列第一章,主要介绍 Kaleidoscope 语言特性和词法分析器的构建。 Kaleidoscope 语言特性 本教程以一种名为“[链接]”(google 翻译为万花筒,源自“美丽,形式和视野”)的玩具语言进行开 ..
383
5 年前
Kaleidoscope 系列第二章:实现解析器和 AST
原文链接: [链接] 本文是[链接]系列第二章,主要实现 Kaleidoscope 语言的语法解析并生成 AST 的功能。 第二章简介 欢迎来到“[链接]”教程的第二章。本章向我们展示如何使用[链接]中构建的词法[链接]为我们的 Kaleidoscope 语言构建完整的[链接]。有了解析器后,我们将定义并构建一个[链接 ..
254
5 年前
Kaleidoscope 系列第三章:生成 LLVM 中间代码 IR
原文链接:[链接] 本文是[链接]系列第三章,主要实现将 AST 转化为 LLVM IR 的功能。 第三章简介 欢迎来到“[链接]”教程的第三章。本章介绍如何将第二章中构建的[链接]转换为 LLVM IR。本章将告诉我们一些有关 LLVM 如何工作的知识,并演示它的易用性。构建词法分析器和解析器要比生成 LLVM IR ..
624
5 年前
Kaleidoscope 系列第四章:添加 JIT 和 Optimizer 支持
原文链接: [链接] 本文是[链接]系列第四章,主要添加 JIT 编译器及 LLVM 中部分优化功能。 第四章简介 欢迎来到“[链接]”教程的第四章。前一至三章介绍了一种简单语言的实现并增加了对生成 LLVM IR 的支持。本章介绍了两种新技术:为我们的语言添加优化器支持,以及添加 JIT 编译器支持。这些补充内容将演 ..
348
5 年前
Kaleidoscope 系列第五章:扩展语言—控制流
原文链接: Kaleidoscope 系列第五章:扩展语言---控制流 本文是使用 LLVM 开发新语言 Kaleidoscope 教程系列第五章,主要扩展 Kaleidoscope 语言特性,增加多种控制流处理。 第五章简介 欢迎来到“使用 LLVM 开发新语言 Kaleidoscope 教程”教程的第五章。第 1- ..
311
5 年前
Kaleidoscope 系列第六章:扩展语言—用户自定义运算符
原文链接:[链接] 本文是[链接]系列第六章,继续扩展 Kaleidoscope 语言特性,增加用户自定义运算符处理。 第六章简介 欢迎来到“[链接]”教程的第六章。至此,在本教程中,我们现在有了一种功能齐全的语言,该语言相当少,但也很有用。但是,仍然存在一个大问题。我们的语言没有很多有用的运算符(例如除法,逻辑求反, ..
239
5 年前
Kaleidoscope 系列第七章:扩展语言—可变变量
原文链接: [链接] 本文是[链接]系列第七章,继续扩展 Kaleidoscope 语言特性,增加可变变量处理。 第七章简介 欢迎来到“[链接]”教程的第七章。在第一章至第六章中,我们构建了一种尽管简单的但是非常像样的 [链接]。在我们的开发过程中,我们学习了一些解析技术,包括如何构建和表示 AST,如何构建 LLVM ..
306
5 年前
Kaleidoscope 系列第十章:总结和其他技巧
原文链接: 本文是[链接]系列第十章,对 Kaleidoscope 开发过程进行总结,分析可能使用到的其他技巧。 教程总结 欢迎来到“[链接]”教程的最后一章。在本教程的过程中,我们已经将 Kaleidoscope 这种小语言从一种无用的玩具发展为一种半有趣(但可能仍然无用)的玩具语言。 有趣的是,我们已经走了多远,花 ..
284
5 年前
Kaleidoscope 系列第八章:编译为目标代码
原文链接: 本文是系列第八章,将生成的代码编译为目标机器代码。 第八章简介 欢迎来到“”教程的第八章。本章介绍如何将我们的中间代码编译为目标代码。 选择一个目标 LLVM 支持本地交叉编译。我们可以将代码编译为当前计算机的体系结构,也可以像针对其他体系结构一样轻松地进行编译。在本教程中,我们主要针对当前计算机。 为了指 ..
468
5 年前
Kaleidoscope 系列第九章:增加调试信息
原文链接:[链接] 本文是[链接]系列第九章,将为 Kaleidoscope 添加调试信息,帮助高效开发新语言。 第九章简介 欢迎来到“[链接]”教程的第九章。在第一章至第八章中,我们构建了一种带有函数和变量的体面的小型编程语言。这时会有一个问题,那就是如果出了问题怎么办,如何调试程序? 源代码级调试使用格式化的数据, ..
337
5 年前