[llvm-dev] Getting MachineInstr opcode mnemonics as strings
Ethan J. Johnson via llvm-dev
llvm-dev at lists.llvm.org
Wed Feb 17 09:58:36 PST 2016
On 02/17/2016 12:49 AM, Ahmed Bougacha wrote:
>
> On Tue, Feb 16, 2016 at 9:30 PM, Ethan J. Johnson via llvm-dev
> <llvm-dev at lists.llvm.org <mailto: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
That's exactly what I was looking for - thanks!
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160217/8754e827/attachment.html>
More information about the llvm-dev
mailing list