之前寫tablegen的介紹寫到一半放棄了, 最近培訓需要再拉出來看看, 順便做個筆記. 1. 語法介紹 官方文檔見這里, 以下是文檔的翻譯. 1.1. 類型系統 tablegen是強類型語言, 其類型系統同時包含low-level(i.e. bit int)與high-level ...
. 什么是tablegen tablegen是llvm用於開發和維護編譯器中公共特性的條目 e.g. 指令描述, 寄存器描述 的代碼, 使之靈活的描述與構造的自動化工具. 其本質是一個parser, 將輸入的td文件轉化為特定的數據結構后再輸出為易於閱讀的cpp代碼. 更多介紹可見http: llvm.org docs TableGen index.html或參見docs TableGen 下文 ...
2019-04-07 19:23 0 968 推薦指數:
之前寫tablegen的介紹寫到一半放棄了, 最近培訓需要再拉出來看看, 順便做個筆記. 1. 語法介紹 官方文檔見這里, 以下是文檔的翻譯. 1.1. 類型系統 tablegen是強類型語言, 其類型系統同時包含low-level(i.e. bit int)與high-level ...
ilocker:關注 Android 安全(新手) QQ: 2597294287 LLVM 的 IR (Intermediate Representation) 是其設計中的最重要的部分。優化器在進行代碼優化時所進行的分析和轉換都是針對 IR 的。 在設計 IR 時,考慮到了很多明確的目標 ...
1. 什么是IR IR(intermediate representation)是LLVM獨創的中間表達式. 經典的compiler架構由前端frontend(讀入源代碼, 通過詞法, 語法與語義分析建立AST), 中端optimizer(優化模塊)與backend(通過指令選擇, 寄存器分配 ...
ilocker:關注 Android 安全(新手) QQ: 2597294287 什么是 PHI node? 所有 LLVM 指令都使用 SSA (Static Single Assignment,靜態一次性賦值) 方式表示。意思是所有變量都只能被賦值一次,這樣做主要是便於后期的代碼優化 ...
好久沒更新博客了, 最近調研安全編譯選項(各類sanitizer), 抽空做個筆記. 本來想系統的分析一下compiler-rt代碼, 但是最近實在太懶了, 所以先介紹最簡單的安全棧safestack, 之后有空再補上compiler-rt框架以及其它sanitizer工具. 1. ...
自從年初手斷了以后好久不寫文字了, 說好的筆耕不輟也忘了(=.=), 今天正好有同學問AntiDepBreaker, 就花點時間看了下代碼(順便水一篇). 背景概述 1. 什么是Anti Depe ...
1. pass的概念 在LLVM中優化以pass形式實現, 每一個pass代表一種優化. pass分為兩類, 一類是分析(analysis)pass, 負責收集信息共其它pass使用, 輔助調試或使程序可視化; 另一類是變換(transform)pass, 改變程序的dataflow ...
本文最初是基於對新員工培訓, 使其快速上手編譯器后端代碼而寫的入門簡介. 為方便閱讀又根據模塊細分為若干章, 內容以分析代碼為主, 偶爾也會穿插一些理論擴展. 什么是指令選擇 指令選擇(instr ...