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