原文: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