4 ms·
It depends on what you are looking to achieve. If you take a look to e.g. McSema https://github.com/trailofbits/mcsema https://github.com/trailofbits/mcsema, t
by jbaviat 10y ago
It depends on what you are looking to achieve.
If you take a look to e.g. McSema https://github.com/trailofbits/mcsema https://github.com/trailofbits/mcsema, these guys have been able to use LLVM to transform assembly back to LLVM intermediate representation (IR). The IR is an abstract language used by LLVM during compilation to optimize the generated code. Being abstract basically allows to use optimizers across all LLVM supported architectures.
In these terms, I think LLVM has a clear advantage over competitors.
The following blog post give a nice overview of the McSema achievements: http://blog.trailofbits.com/2014/06/23/a-preview-of-mcsema/ http://blog.trailofbits.com/2014/06/23/a-preview-of-mcsema/
- munin 10y agohi, I'm one of the mcsema authors and the original author who was responsible for mcsema using the LLVM instruction decoder and it was a mistake. if I had a choice between going back in time and assassinating Hitler, or convincing myself to use XED instead of mcinst...
- jbaviat 10y agoHi Munin, What you did with McSema was really impressive and I’m glad discussing with one of the authors! I get the point you regret using LLVM, it seemed to me to be the best choice since LLVM has wide instruction semantics implementations, that more basic tools such as Xed do not offer. If I get it correctly… you would rather re-implement such semantic yourself? Or have you got any other tool / idea I’m not aware of?
- munin 10y agoI don't regret using LLVM at all. I regret using the instruction decoding features in LLVM. if I could do it again (and someone younger, smarter, and better looking than me is) I would combine the LLVM IR with the XED instruction decoder. we would still emit the semantics of the instructions as LLVM, but we would use XED to figure out which instruction we were decoding.