Translation between MCInst and Binary Executable

Hi, Dear LLVM Dev Group,

I am doing an LLVM project aimed to disassemble an ARM ELF binary executable to the MCInst format, inserting some instructions or doing some modification, and re-assemble the MCInst to an ELF binary.

As I used the llvm-mc, it seems to only have the option “llvm-mc -disassemble”, which reads strings and output strings. Is there any command or function that can take a binary, and translates it to the MCInst format, finally translating back to a binary?

Thanks a million for your help.


Hi Yue,

You may want to have a look to llvm-objdump tool.

You will find some good hints on how to use/build the MCDisassembler to decode the MCInst from a stream of bytes.
More specifically, MCDisassembler::getInstruction does the decode part.


How about:

This is what llvm-objdump does:

It has some steps:

  1. Define the target

  2. Initialize the tables.

  3. Decode binary to MCInst

  4. Print MCInst in ATT or Intel format.

You would need to modify it to use the ARM target.

You just need to skip step (4)