llvm-ir

    15熱度

    1回答

    我一直在試圖建立和執行LLVM模塊重整混亂。我的代碼生成模塊很長,所以我不會在這裏發佈。相反,我的問題是關於Clang和LLVM如何共同實現名稱修改。我將解釋我的具體問題來激發這個問題。 這裏是我的LLVM模塊之一的源代碼: #include <iostream> int main() { std::cout << "Hello, world. " << std::endl;

    1熱度

    2回答

    爲什麼模板函數在LLVM-IR中不顯示,如果函數未被調用,當從C++代碼發出LLVM IR時, 不像其他類型的函數(int,float ...)會出現在llvm中IR 例如:下面的函數func1犯規秀LLVM IR template <class tmp> tmp func1() { // ... } 但這個功能func2始終顯示在LLVM IR int func2() {

    4熱度

    1回答

    我試圖分析由rustc前端發出的LLVM-IR。該計劃是針對特定語言元素髮布IR。是否有這樣的元素和IR代碼模板映射或列表的列表? 編譯器具有足夠的智能以移除發射的IR中的未使用函數,除非使用println!將某些內容印在控制檯上,否則編譯器將刪除所使用的每個函數。 這不起作用,說x沒有使用任何地方或當x被覆蓋。 let x = function(); Rust中是否存在某種限定符,使發射的I

    1熱度

    2回答

    我想知道什麼是解析和從C源文件中獲取數據結構的最佳解決方案。假設我有: typedef int M_Int; typedef float* P_Float; typedef struct Foo { M_Int a; P_Float p_f; } Foo; 什麼是展開爲了得到這兩個變量a和struct Foo的p_f的元數據結構的最佳方式是什麼? 對於非常簡單的例子

    2熱度

    1回答

    LLVM是否支持帶有變量BasicBlock目標的分支指令? 更具體地說,假設我將所有無條件的br指令轉換爲函數調用f。是否可以提供目標標籤作爲參數f,然後在f內的無條件分支中使用此標籤? 或者是唯一的解決方案使switch在f,將所有的BB's映射到唯一的ID,然後調用f與目標BB對應的ID?

    7熱度

    1回答

    我們正在開發mutation testing system based on LLVM。該系統支持使用GoogleTest的C++項目,並且我試圖支持Rust。爲此,我們需要完成以下步驟: 將語言編譯爲LLVM IR。 Rust支持這一點。 在LLVM IR中查找測試。 運行測試所執行的代碼(「測試者」)。 挑戰在於通過LLVM IR API找到單元測試方法。 考慮the following ex

    1熱度

    1回答

    我想申請一個算法,水印,基本上重新排序編程語言的同義術語: https://books.google.dk/books?id=mig-bH3u0Z0C&pg=PT595&lpg=PT595&dq=obfuscation+renumbering+register&source=bl&ots=b3vMhp-yTq&sig=RERdnDNewRqBi7ZmSNMlsnPy-Hw&hl=da&sa=X&v

    1熱度

    1回答

    我想申請一個算法,採用寄存器R0, R1,...,Rn。 在這種情況下,我想要控制的是這些寄存器被賦值的順序。 在LLVM IR級可以控制寄存器,還是IR屏蔽掉這些低級細節?

    1熱度

    1回答

    我想知道加載/存儲是否在LLVM IR中訪問字節,半字,字或雙字。 這個功能getAlignment()在llvm::LoadInst和llvm:StoreInst類。它的描述表明它返回正在執行的訪問的對齊。我不確定這是否給予內存對齊或它訪問的字節數?

    1熱度

    1回答

    我用鐺編譯此代碼-S -emit-llvm: int sub2(int n) { return n - 2 } ,這是它輸出的代碼: ; Function Attrs: nounwind define i32 @_Z4sub2i(i32) #0 { %2 = alloca i32, align 4 store i32 %0, i32* %2, align 4