[llvm-dev] Getting MachineInstr opcode mnemonics as strings

Ethan J. Johnson via llvm-dev llvm-dev at lists.llvm.org
Tue Feb 16 21:30:55 PST 2016

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).

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

More information about the llvm-dev mailing list