<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Tue, Feb 16, 2016 at 9:30 PM, Ethan J. Johnson via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello all,<br>
<br>
Is there an easy way to get the human-readable opcode mnemonic (e.g., "MOV32ri64", "CMP32ri8", "JLE_1") for a MachineInstr? I am writing a backend analysis pass for security research, where the idea is for a researcher to examine the output of my pass and identify instructions from it for use in an attack. Right now I'm representing unique instructions with nondescript numeric symbols, like "i28" for the 28th instruction; but it would be nice to give the reader something more helpful like "i28_MOV32ri64".<br>
<br>
MachineInstr doesn't have a getName() function like many other LLVM IR/MachineIR objects; is there anything roughly equivalent to this? I'm already using MachineInstr::print() for debugging output, but it's far too verbose for this purpose. I thought about trying to parse the opcode mnemonic out of the print() output, until I realized just how nasty that would be (not to mention that it prints to a raw_ostream, not an in-memory string).<br></blockquote><div><br></div><div>The name (as well as some other information) is in MCInstrInfo; if you have any kind of *InstrInfo (as, e.g., X86InstrInfo isa TargetInstrInfo isa MCInstrInfo), you should be able to do:</div><div><br></div><div> TII->getName(MI->getOpcode());</div><div> </div><div>-Ahmed</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Sincerely,<br>
Ethan Johnson<span><font color="#888888"><br>
<br>
-- <br>
Ethan J. Johnson<br>
Computer Science PhD Student, Systems group, University of Rochester<br>
<a href="mailto:ejohns48@cs.rochester.edu" target="_blank">ejohns48@cs.rochester.edu</a><br>
<a href="mailto:ethanjohnson@acm.org" target="_blank">ethanjohnson@acm.org</a><br>
PGP public key available from public directory or on request<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</font></span></blockquote></div><br></div></div>