Interesting problem! Two suggestions that may be part of your solution:<div><br></div><div>1. Using profile information to compose basic blocks out of the stream of assembly instructions (or does llvm-mc provide you with basic block information already?) </div>
<div><br></div><div>2. Map assembly instructions of your target back into LLVM IR opcodes. This will not be precise I think, but probably enough for further analysis. However I'm not sure how to handle memory locations (i.e. you would need a way to associate accessed memory locations and used registers to pre-register-allocator labels, and keep track of this association as it changes along the code).<br>
<div><br></div><div>The problem is of my interest and if I have ideas about the memory location handling I will let you know.</div><div><br><div class="gmail_quote">On Mon, Oct 17, 2011 at 3:39 PM, Beng Heng, Ng <span dir="ltr"><<a href="mailto:bengheng@eecs.umich.edu">bengheng@eecs.umich.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi,<br>
<br>
I'm thinking of using LLVM for translating x86 binaries into LLVM IR and<br>
performing further analysis based on the IR. The tool llvm-mc works<br>
great for disassembling hex values. However, is there any way to<br>
translate the disassembled machine code into LLVM IR and analyze them?<br>
Any suggestion/help is greatly appreciated. Thanks!<br>
<br>
- Beng<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>[Carolina Simões Gomes]<br>M.Sc. Student in Computing Science<br>University of Alberta, Canada<div>CAS Partner - IBM Toronto<br>+1 (780) 863-0155<br><br></div>
<br>
</div></div>