Emitting machine instructions
The instruction selection creates machine instructions, represented by the MachineInstr
class, from LLVM IR. But this is not the end. An instance of the MachineInstr
class still carries additional information, such as labels or flags. To emit an instruction via the machine code component, we need to lower the instances of MachineInstr
to instances of MCInst
. By doing this, the machine code component provides the functionality to write instructions into object files or print them as assembler text. The M88kAsmPrinter
class is responsible for emitting a whole compilation unit. Lowering an instruction is delegated to the M88kMCInstLower
class.
The assembly printer is the last pass to run in a backend. Its implementation is stored in the M88kAsmPrinter.cpp
file:
- The declaration of the
M88kAsmPrinter
class is in an anonymous namespace. Besides the constructor, we only override thegetPassName()
function, which returns the name of the pass as a human...