[llvm-dev] Getting MachineInstr opcode mnemonics as strings

Ahmed Bougacha via llvm-dev llvm-dev at lists.llvm.org
Tue Feb 16 21:49:26 PST 2016


On Tue, Feb 16, 2016 at 9:30 PM, Ethan J. Johnson via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hello all,
>
> 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".
>
> 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).
>

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:

  TII->getName(MI->getOpcode());

-Ahmed


> Sincerely,
> Ethan Johnson
>
> --
> Ethan J. Johnson
> Computer Science PhD Student, Systems group, University of Rochester
> ejohns48 at cs.rochester.edu
> ethanjohnson at acm.org
> PGP public key available from public directory or on request
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160216/02734018/attachment.html>


More information about the llvm-dev mailing list