原文:LLVM 筆記(二)—— PHI node

ilocker:關注 Android 安全 新手 QQ: 什么是 PHI node 所有 LLVM 指令都使用 SSA Static Single Assignment,靜態一次性賦值 方式表示。意思是所有變量都只能被賦值一次,這樣做主要是便於后期的代碼優化。 假設 v 的值小於 ,變量 a 就要被賦值為 ,但 a 已經被賦值了一次,由於 SSA 性質的約束,只能賦值另外一個 a 。最后在給 b ...

2015-10-21 11:33 0 3492 推薦指數:

查看詳情

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筆記(1) - TableGen

1. 什么是tablegen tablegen是llvm用於開發和維護編譯器中公共特性的條目(e.g. 指令描述, 寄存器描述)的代碼, 使之靈活的描述與構造的自動化工具. 其本質是一個parser, 將輸入的td文件轉化為特定的數據結構后再輸出為易於閱讀的cpp代碼. 更多介紹可見http ...

Mon Apr 08 03:23:00 CST 2019 0 968
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
LLVM筆記(8) - tablegen介紹

之前寫tablegen的介紹寫到一半放棄了, 最近培訓需要再拉出來看看, 順便做個筆記. 1. 語法介紹 官方文檔見這里, 以下是文檔的翻譯. 1.1. 類型系統 tablegen是強類型語言, 其類型系統同時包含low-level(i.e. bit int)與high-level ...

Fri Mar 13 09:47:00 CST 2020 0 1181
LLVM筆記(3) - PASS

1. pass的概念 在LLVM中優化以pass形式實現, 每一個pass代表一種優化. pass分為兩類, 一類是分析(analysis)pass, 負責收集信息共其它pass使用, 輔助調試或使程序可視化; 另一類是變換(transform)pass, 改變程序的dataflow ...

Sat Jun 15 06:05:00 CST 2019 4 1564
LLVM筆記(9) - 指令選擇(一) 概述

本文最初是基於對新員工培訓, 使其快速上手編譯器后端代碼而寫的入門簡介. 為方便閱讀又根據模塊細分為若干章, 內容以分析代碼為主, 偶爾也會穿插一些理論擴展. 什么是指令選擇 指令選擇(instr ...

Sun May 03 23:50:00 CST 2020 1 2764
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM