2014-12-19 59 views
1

假設我的目標.BC文件有兩個指令,如何從LLVM指令獲取變量的名稱

%3 = load volatile i32* %i, align 4 
%4 = load i32** %sum, align 8 

他們兩人都是加載指令。我想知道如何爲某些條件比較提取不同的變量%i和%sum。 我試圖打印出類似這樣:

errs()<< instruction->getOperand(i)->getName(); // print out the ith operand's name 

但事實證明,返回的東西都是亂碼。 希望有相同經歷的人能幫助我。

+0

打開我們的變量位於指令 - > getOperand(0) - > getName(); – 2014-12-19 05:30:25

+0

你得到的輸出是什麼? – 2014-12-19 10:35:37

+0

操作數的名字我和總和。 – 2014-12-19 18:54:27

回答

1

這通常不起作用 - 尤其是: a)發佈模式可以避免在單獨的指令中放置名稱,它們將只是下一個數字的順序(如您從上面的加載指令中看到的那樣)或 b)優化過程有時也會更改名稱。

要做到這一點的唯一方法是在發佈變量時跟蹤變量,或者執行一些分析,告訴您要執行比較的位置。