<div>Hi all, I am new to LLVM (even the field of compiler) and currently I am engaged in the work of adapting LLVM IR to M5 simulator to observe the enhancement of the novel architecture we design.</div>
<div>Simply speaking if you know little about M5, my aim is to know how LLVM IR is interpreted and encoded, then try to implement it in the framework of M5.</div>
<div>I have read the LLVM documents, yet I still have some questions as follows:</div>
<div> </div>
<div>1. As IR is target-independent, how can we encode them into bit-code executable files without specific targets' information? </div>
<div>2. The "bitstream container format" as the document refers, is XML-like, and I wonder how does LLVM translate it into executable format such as bit-code. </div>
<div> I have made several tests as the document suggests, but I conclude with nothing helpful to my work. <br> The result of my experiment is attached. <br> It is a simple add program, and from the bc file generated by llvm-bcanalyzer I cannot relate it to the original IR.<br>
For example, the expressions of <br> <INST_STORE2 op0=6 op1=1 op2=3 op3=0/><br> <INST_STORE2 op0=5 op1=3 op2=3 op3=0/><br> actually represent those of<br> store i32 1, i32* %a, align 4<br> store i32 2, i32* %b, align 4<br>
in the .ll file.<br> Despite the explicit opcode matches in the two forms, I am confused of the information of op0, op1 etc in the .bc file.<br> What does it mean? This is not very clearly clarified in the document, or may I omit something? <br>
<br>Can anybody please lend me a hand?<br>Thanks very much sincerely!<br></div><div><br>-- <br><i><font color="#330000" face="arial, helvetica, sans-serif">with best regards</font></i></div>
<div><font color="#330000" face="arial, helvetica, sans-serif">Zhang Le</font></div><br>