原文:LLVM笔记(8) - tablegen介绍

之前写tablegen的介绍写到一半放弃了, 最近培训需要再拉出来看看, 顺便做个笔记. . 语法介绍 官方文档见这里, 以下是文档的翻译. . . 类型系统 tablegen是强类型语言, 其类型系统同时包含low level i.e. bit int 与high level i.e. dag . 以下是tablegen支持的内建类型. bit: 布尔值, 或 . int: 表示 bit整型. ...

2020-03-13 01:47 0 1181 推荐指数:

查看详情

LLVM笔记(1) - TableGen

1. 什么是tablegen tablegenllvm用于开发和维护编译器中公共特性的条目(e.g. 指令描述, 寄存器描述)的代码, 使之灵活的描述与构造的自动化工具. 其本质是一个parser, 将输入的td文件转化为特定的数据结构后再输出为易于阅读的cpp代码. 更多介绍可见http ...

Mon Apr 08 03:23:00 CST 2019 0 968
LLVM笔记(17) - ADT介绍(一) ilist

ADT(advanced data type)是LLVM针对其业务逻辑自定义的高性能抽象类型, 其定义见include/llvm/ADT目录. ADT目录下既包含了DenseMap/SmallVector这类容器封装, 也包含了APInt等大数运算支持, 还有triple这类从编译器业务抽象 ...

Fri Dec 25 09:44:00 CST 2020 0 456
LLVM笔记(19) - ADT介绍(二) DenseMap

这周定位一个与DenseMap有关的问题, 正好趁机过一下它的实现. DenseMap(稠密映射)是LLVM自定义的关系类的容器, 我们可以像std::map一样使用它, 但要注意两者之间稍稍有些区别. 概述 类似于unorderd_map, DenseMap也是通过哈希实现, 区别 ...

Mon Jan 04 04:16:00 CST 2021 0 833
LLVM 笔记(五)—— LLVM IR

ilocker:关注 Android 安全(新手) QQ: 2597294287 LLVM 的 IR (Intermediate Representation) 是其设计中的最重要的部分。优化器在进行代码优化时所进行的分析和转换都是针对 IR 的。 在设计 IR 时,考虑到了很多明确的目标 ...

Sun Oct 25 22:29:00 CST 2015 0 2166
LLVM笔记(2) - IR

1. 什么是IR IR(intermediate representation)是LLVM独创的中间表达式. 经典的compiler架构由前端frontend(读入源代码, 通过词法, 语法与语义分析建立AST), 中端optimizer(优化模块)与backend(通过指令选择, 寄存器分配 ...

Thu Apr 11 06:44:00 CST 2019 0 1000
LLVM 笔记(二)—— PHI node

ilocker:关注 Android 安全(新手) QQ: 2597294287 什么是 PHI node? 所有 LLVM 指令都使用 SSA (Static Single Assignment,静态一次性赋值) 方式表示。意思是所有变量都只能被赋值一次,这样做主要是便于后期的代码优化 ...

Wed Oct 21 19:33:00 CST 2015 0 3492
LLVM笔记(6) - CompilerRT之safestack

好久没更新博客了, 最近调研安全编译选项(各类sanitizer), 抽空做个笔记. 本来想系统的分析一下compiler-rt代码, 但是最近实在太懒了, 所以先介绍最简单的安全栈safestack, 之后有空再补上compiler-rt框架以及其它sanitizer工具. 1. ...

Thu Dec 05 09:11:00 CST 2019 1 398
LLVM笔记(20) - AntiDepBreaker

自从年初手断了以后好久不写文字了, 说好的笔耕不辍也忘了(=.=), 今天正好有同学问AntiDepBreaker, 就花点时间看了下代码(顺便水一篇). 背景概述 1. 什么是Anti Depe ...

Wed Jun 30 09:40:00 CST 2021 0 225
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM