一些 LLVM 教程和文档链接

0,编译 llvm 3.4

Getting Started with the LLVM System — LLVM 3.4 documentation

1,基于LLVM 3.0 的文档主页

Documentation for the LLVM System at SVN head

2,LLVM 作为库的使用方法

Using The LLVM Libraries

3,LLVM C++ 的编程规范

LLVM Coding Standards

4,编译 llvmorg-18.1.0-rc4 的方法

检出 llvm18 的tag:llvmorg-18.1.0-rc4:

git checkout llvmorg-18.1.0-rc4

配置:

cmake -G "Unix Makefiles" ../llvm      -DLLVM_ENABLE_PROJECTS="bolt;clang;clang-tools-extra;compiler-rt;cross-project-tests;libc;libclc;lld;lldb;mlir;openmp;polly;pstl;flang"      -DLLVM_BUILD_EXAMPLES=ON           -DLLVM_TARGETS_TO_BUILD="host"      -DCMAKE_BUILD_TYPE=Debug           -DLLVM_ENABLE_ASSERTIONS=ON           -DLLVM_ENABLE_RUNTIMES=all             -DLLVM_BUILD_LLVM_DYLIB=ON              -DCMAKE_INSTALL_PREFIX=../../local_whole

后台编译:

make -j 34 &

cpu18核36线程,要留两个线程,否则会导致ld命令的拥堵。

5, clang::Stmt 的派生类描述

clang: clang::Stmt Class Reference

6,编译整个llvm 18

编译 llvm-project 全部的 projects 和 runtimes 的方法,配置原则:能放在ENABLE_RUNTIMES中的选项,就不要优先放在 ENABLE_PROJECTS 中描述,而是放在 RUNTIMES中,如下文代码中的openmp项。
但是需要注意 llvm-libgcc ,这个 project 不要配置进cmake选项中,这是给 Linux 发行版开发者使用的一个项目,普通用户用不到。
cmake -G "Unix Makefiles" ../llvm      \
-DLLVM_ENABLE_PROJECTS="bolt;clang;clang-tools-extra;cross-project-tests;lld;lldb;mlir;polly;flang"    \
-DLLVM_BUILD_EXAMPLES=ON           -DLLVM_TARGETS_TO_BUILD="host"      -DCMAKE_BUILD_TYPE=Release           \
-DLLVM_ENABLE_ASSERTIONS=ON        -DLLVM_ENABLE_RUNTIMES="libc;libunwind;libcxxabi;pstl;libcxx;compiler-rt;openmp             \
-DLLVM_BUILD_LLVM_DYLIB=ON              -DCMAKE_INSTALL_PREFIX=../../local_release

段尾有彩蛋,关于llvm-libgcc的选项,

7, libc++ 编译指导文档

8,ABI 和 elf 文档

https://www.man7.org/linux/man-pages/man5/elf.5.html


https://www.akkadia.org/drepper/tls.pdf


https://opensource.com/article/22/12/linux-abi


https://docs.kernel.org/admin-guide/abi.html

https://www.classes.cs.uchicago.edu/archive/2009/spring/22620-1/docs/handout-03.pdf

https://wiki.osdev.org/System_V_ABI


https://refspecs.linuxbase.org/elf/x86_64-abi-0.99.pdf

9,关于 %add = add nsw i32 %1, %2 的nsw

10,《LLVM 编译器实战教程》Getting Started with LLVM Core Libraries

11, LLVM IR spec

12, LLVM 的 一些重要类

Module:
Function:

BasicBlock:

LLVM: llvm::BasicBlock Class Reference

Instruction:

LLVM: llvm::Instruction Class Reference

Value:

LLVM: llvm::Value Class Reference

User:

LLVM: llvm::User Class Reference

13, cmake 构建llvm的配置项

Building LLVM with CMake — LLVM 19.0.0git documentation

14, llvm/example/Kaileidoscope 的教程,设计一个新的语言

原版:

My First Language Frontend with LLVM Tutorial — LLVM 19.0.0git documentation

翻译版:

Kaileidoscope: LLVM Tutorial Chinese version(中文版) — Kaleidoscope: LLVM tutorial Chinese translation 0.0.1 文档

15, 这位兄弟的llvm 笔记博客不更新了

https://www.cnblogs.com/Five100Miles

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LLVM官方文档提供了全面的关于LLVM编译器框架和工具链的信息和指导。它包含了LLVM的基础概念、架构、使用方法、编程语言和优化技术等方面的内容。通过阅读官方文档,可以更好地了解LLVM的原理和设计思想,进而提高编译器开发和优化的能力。 LLVM官方文档的主要内容包括: 1. LLVM架构:介绍了LLVM的模块化设计和组件结构,包括前端、优化器和后端等组成部分,以及LLVM IR(中间表示)的基本原理和使用方法。 2. Clang:详细介绍了Clang编译器前端的功能和使用方法,包括C、C++和Objective-C等语言的支持,以及词法分析、语法分析和语义分析等编译过程。 3. LLVM IR:介绍了LLVM的中间表示语言,包括语法和语义规则,以及如何使用和优化LLVM IR。 4. 优化器:详细介绍了LLVM优化器的基本原理和常用优化技术,包括数据流分析、内联函数、循环优化和逃逸分析等技术。 5. 后端和代码生成:介绍了LLVM后端的功能和使用方法,包括目标平台的选择、指令选择和寄存器分配等内容。 6. 工具链和使用方法:介绍了LLVM工具链的使用方法,包括IR生成、编译、链接和调试等过程,以及如何开发自己的LLVM插件和扩展。 通过阅读官方文档,用户可以全面地了解LLVM编译器框架和工具链的使用方法和内部原理,从而更好地应用LLVM进行编译器开发和优化工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值