31 #define DEBUG_NAME "compiler2/MachineInstruction"
56 std::size_t
index = 0;
87 ABORT_MSG(
"emit not yet implemented",
"emit for " <<
this <<
" is not yet implemented");
91 ABORT_MSG(
"link not implemented",
"link for "
92 <<
this <<
" is not implemented");
97 return OS <<
"(MachineInstruction) NULL";
107 return OS <<
"(MachineOperandDesc) NULL";
static SetWidth setw(size_t w)
virtual void emit(CodeMemory *CM) const
emit machine code
operand_list::const_iterator const_operand_iterator
MachineOperandDesc result
const char * get_name() const
Descriptor of a MachineOperand.
successor_iterator successor_begin()
virtual VoidOperand * to_VoidOperand()
OStream & print(OStream &OS) const
print instruction
successor_list::const_iterator const_successor_iterator
Simple stream class for formatted output.
successor_iterator successor_end()
OStream & operator<<(OStream &OS, const Conditional::CondID &cond)
virtual OStream & print_operands(OStream &OS) const
print operands
virtual void link(CodeFragment &CF) const
link machine code
Proxy to encode explicit and implicit successors.
static std::size_t id_counter
Operands that can be directly used by the machine (register, memory, stackslot)
const MachineOperandDesc & get_result() const
bool successor_empty() const
virtual OStream & print_successor_label(OStream &OS, std::size_t index) const
print successor label
#define ABORT_MSG(EXPR_SHORT, EXPR_LONG)
virtual OStream & print_result(OStream &OS) const
print result
std::size_t get_id() const