讀完了LLVM作者的原始thesis論文(博士畢業論文?)
有幾點值得說一下:
1、指令集可以進行型別分析,但不是說單獨做什麼iadd、fadd這樣的低階CPU操作指令抽象(JVM/CLR都是這麼設計的),要點在於,引入了malloc和alloca(堆分配和棧分配)本來是C語言的庫函式,卻做成了虛擬指令(這裡作者沒有管C++裡的new和new[]的區別),然後通過getelementptr可以訪問資料結構的欄位;
實際上,LLVM的alloca指令意味著可以進行棧上的動態分配,當然,alloca是C語言的標準庫函式,不過之前可能很少想到這麼用。因為棧上的動態分配意味著棧空間不足時也要能動態擴充套件大小。
2、把SSA裡的phi函式單獨做成了指令
3、函式呼叫在LLVM裡也真是奇葩了,居然要寫上返回型別,然後其他看上去就像C語言語法了,只不過變數名字有%字首
4、中間用很多的篇幅講解了“資料結構圖”(DSG),而且用它來分析程式碼是線性複雜度。不過我沒有怎麼看明白,這和經典的CFG/DFG有什麼區別聯絡?
這裡作者強調比較多的是LLVM上的IPO(過程間優化)。
簡而言之,LLVM就是特定於C語言架構的一套RISC風格虛擬指令集,內建支援SSA和Type分析。
相關推薦
讀完了LLVM作者的原始thesis論文(博士畢業論文?)
有幾點值得說一下: 1、指令集可以進行型別分析,但不是說單獨做什麼iadd、fadd這樣的低階CPU操作指令抽象(JVM/CLR都是這麼設計的),要點在於,引入了malloc和alloca(堆分配和棧分配)本來是C語言的庫函式,卻做成了虛擬指令(這裡作者沒有管C++裡的ne
React Hooks 完全指南,讀React作者博文感悟(2W字精華)
閱讀 facebook大佬:Dan Abramov 的文章頗有感悟 大佬 github地址 https://github.com/gaearon 重點總結 useEffect 是同步的 狀態是捕獲的當前 props 和 state 可以通過 useRef 獲取改變後的 props 和 state 依
java 按字節讀寫二進制文件(Base64編碼解碼)
h+ lee bean 字節數組 inpu 讀取 write bytearray 轉換工具類 最近在做項目時遇到這樣一個需求:依次讀取本地文件夾裏所有文件的內容,轉為JSON,發送到ActiveMQ的消息隊列, 然後從MQ的消息隊列上獲取文件的信息,依次寫到本地。常見的文
3.5 編寫一個程式,從標準輸入讀入某職員的工作時間(以小時計)和每小時的工資 數,計算並輸出他的工資。若職員月工作時間超過 40 小時,則超過部分按原工資的 1.5 倍 來計算。
/* 3.5 編寫一個程式,從標準輸入讀入某職員的工作時間(以小時計)和每小時的工資 數,計算並輸出他的工資。若職員月工作時間超過 40 小時,則超過部分按原工資的 1.5 倍 來計算。 */ #include <iostream> using namespac
Learning from delayed reward (Q-Learning的提出) (Watkins博士畢業論文)(建立了現在的reinforcement Learning模型)
最近在在學習強化學習方面的東西, 對於現有的很多文章中關於強化學習的知識很是不理解,很多都是一個公式套一個公式,也沒有什麼太多的解釋,感覺像是在看天書一般,經過了較長時間的掙扎最後決定從一些基礎的東西開始入手,於是便有了這篇論文的發現。 Learning from D
MySQL5.7安裝+基於GTID主從複製+並行複製+增強半同步複製+讀寫分離+M-S-S架構(聯級複製)
實驗環境: Centos7.2 角色 主機IP server_id 資料狀態 Proxysql 192.168.148.62 nul
節的原始資料 1(Sections' raw data)
7.輸入符號(imported symbols) ------------------------------ 當編譯器發現一個對別的可執行檔案(大多數是DLL檔案)中的函式呼叫時,在最簡單化的情況下,它會對此情況一無所知,只是簡單地輸出一個對那個符號的正常呼叫指令。連結器不得不修正那個符號的地址,就象它為任
CVPR 2013 錄用論文(目標跟蹤部分)
過段時間CvPaper上面應該會有正文連結 今年有關RGB-D攝像機應用和研究的論文漸多起來了。 當然,自己還是比較關心Tracking方面的Papers。從作者來看,一作大部分為華人,而且有不少在Tracking這個圈子裡相當有名的牛,比如Ming-Hsuan Y
2017年深度學習必讀31篇論文(附下載地址)
2017年即將擦肩而過,Kloud Strife在其部落格上盤點了今年最值得關注的有關深度學習的論文,包括架構/模型、生成模型、強化學習、SGD & 優化及理論等各個方面,有些論文名揚四海,有些論文則非常低調。一如既往,首先,標準免責宣告適用,因為
因為自律,我一年讀完了100本書,30歲時考上研究生——懷才當遇
才會 青年 看書 跑步 pan 單列 由於 工作相關 分享 浵浵的媽媽:“因為自律,我一年讀完了100本書,30歲時考上研究生” 這是前段時間特別火的一個故事。 一名網名叫“浵浵的媽媽”的網友,分享了她2015-2017年的一些故事。 在2015年之前她是一個很普通的女青年
Linux內核模塊編程與內核模塊LICENSE -《具體解釋(第3版)》預讀
dev sdn hack 認識 方式 flags sin arr 整數 Linux內核模塊簡單介紹Linux內核的總體結構已經很龐大,而其包括的組件或許多。我們如何把須要的部分都包括在內核中呢?一種方法是把全部須要的功能都編譯到Linux內核。這會導致兩個問題。一是生成
JavaScript權威指南(第六版) 初讀筆記-對象
avi uid pre class bsp guide ini ole blog 1 var book = { 2 "main title": "JavaScript", // 屬性名字裏有空格,必須用字符串表示 3 "su
C#文件讀寫(txt 簡單方式)
換行 line string txt 不換行 返回 true text empty 1.文件寫入 // 路徑,寫入內容 System.IO.File.WriteAllText(@".\File.txt", string.Empty); 可更換相應的方法 2.文件讀入 /
Python 讀寫操作Excel —— 安裝第三方庫(xlrd、xlwt、xlutils)
保存數據 下載 實用 第三方 直接 install pytho 方法 xls 數據處理是 Python 的一大應用場景,而 Excel 則是最流行的數據處理軟件。因此用 Python 進行數據相關的工作時,難免要和 Excel 打交道。 如果僅僅是要以表單形式保存數據,可
Servlet工作原理(讀許令波《深入分析javaWeb技術內幕》)筆記
container 創建 onf 應用 最重要的 深入分析 conf con 技術內幕 在介紹servlet的工作原理之前首先我們要先了解一下與servlet配套的servlet容器,本文以tomcat為例 1.Tomcat容器的基礎知識 Tomcat的容器是分級管理共分為
讀head first servlet and jsp有感(1)(轉)
上下 first 例如 端口 求和 ftp服務 運行 表單 app 一.web服務器:接收客戶請求,然後向客戶返回一些結果,註意web服務器在硬件上指物理主機,在軟件上指web服務器應用軟件,例如tomcat,jboss那種 web客戶,一般指瀏覽器(b/s模式)
讀《圖解HTTP》有感-(HTTP首部)
斷開 time 範圍 報文 2.3 用戶 private 附加 匹配 寫在前面 該章節是對請求報文及響應報文的首部信息進行解析。通過該章節的學習,相信大家對首部結構,及各個首部字段的作用有個基本的了解 正文 HTTP報文由HTTP報文首部、空行以及HTTP報文主體組
讀入優化~~~(個人學習筆記)
false == 學習 學習筆記 筆記 scanf ios sca tchar 基本模板:inline int read(){ int x=0,w=1; char ch=0; while(ch<‘0‘ || ch>‘9‘){if(ch==‘-‘)w=-1;ch=
速讀《深入理解計算機系統(第三版)》問題及解決
情況 csdn 第六章 填充 以及 函數 順序 時鐘 管理所 第一章 計算機漫遊 P13:用戶棧和運行時堆有什麽區別?數據結構中經常說堆棧,這裏的堆和棧一樣嗎?和操作系統的堆、棧有什麽區別? 參考:堆和棧的區別(內存和數據結構) 操作系統: 棧:由操作系統自動分配釋放
《構建之法(第三版)》速讀提問
運用 其他 class share 漸進 順序 四種 適用於 生命周期 《構建之法(第三版)》速讀提問 1、什麽是軟件工程 軟件工程學科誕生後,人們為軟件工程給出了不同的定義,例如最早的定義是由F.L. Bauer給出的,即“軟件工程是為了經濟地獲得能夠在實際機器上高效運行