|
| enum | OperationType {
OP_FUNCTION_CALL
, OP_DESTRUCTOR
, OP_SYMBOL
, OP_WIDEN_SIGNED
,
OP_WIDEN_UNSIGNED
, OP_WIDEN_FLOAT
, OP_ARRAY_INDEX
, OP_DOT
,
OP_LOCAL_DECLARE
, OP_LOCAL_UNDECLARE
, OP_LOCAL_VARIABLE
, OP_LITERAL_CHAR
,
OP_LITERAL_STRING
, OP_LITERAL_INT
, OP_LITERAL_FLOAT
, OP_LITERAL_BOOL
,
OP_LITERAL_NULL
, OP_ANONYMOUS_STRUCTURE
, OP_ADDRESSOF
, OP_DEREFERENCE
,
OP_NEGATE
, OP_BITWISE_NOT
, OP_LOGICAL_NOT
, OP_SIZEOF_TYPE
,
OP_ADD
, OP_SUBTRACT
, OP_MULTIPLY
, OP_DIVIDE
,
OP_MODULO
, OP_LOGICAL_AND
, OP_LOGICAL_OR
, OP_BITWISE_AND
,
OP_BITWISE_OR
, OP_BITWISE_XOR
, OP_SHIFT_LEFT
, OP_SHIFT_RIGHT
,
OP_COMPARE_LESS
, OP_COMPARE_GREATER
, OP_COMPARE_LESS_EQUAL
, OP_COMPARE_GREATER_EQUAL
,
OP_COMPARE_NOT_EQUAL
, OP_COMPARE_EQUAL
, OP_ASSIGN
, OP_JUMP_CONDITIONAL
,
OP_JUMP
, OP_RETURN
, OP_RETURN_VOID
} |
| | Operations of the MIR virtual-machine. More...
|
| |
| | Operation (OperationType _type, const Gyoji::context::SourceReference &_src_ref, size_t _result) |
| |
| | Operation (OperationType _type, const Gyoji::context::SourceReference &_src_ref, size_t _result, size_t _operand) |
| |
| | Operation (OperationType _type, const Gyoji::context::SourceReference &_src_ref, size_t _result, size_t _operand_a, size_t _operand_b) |
| |
| | Operation (OperationType _type, const Gyoji::context::SourceReference &_src_ref, size_t _result, size_t _operand_a, size_t _operand_b, size_t _operand_c) |
| |
| virtual | ~Operation () |
| | Move along, nothing to see here.
|
| |
| void | dump (FILE *out, size_t operation_index) const |
| |
| OperationType | get_type () const |
| | Opcode of this operation.
|
| |
| const std::vector< size_t > & | get_operands () const |
| | Get the operands.
|
| |
| size_t | get_result () const |
| | Get the result of this operation.
|
| |
| bool | is_terminating () const |
| | Returns true if this is a terminating operation for a block.
|
| |
| std::vector< size_t > | get_connections () const |
| | Returns the list of basic blocks we might connect to.
|
| |
| const Gyoji::context::SourceReference & | get_source_ref () const |
| | Get the reference to the source which originated this operation.
|
| |
Method call (invoke) preparation.
This subclass of Operation represents obtaining the necessary information to perform a method call. This consists of a pair of the specific object to call the method on and the function-pointer of the method to call. This does not actually perform the method call. That is left to the OperationFunctionCall which must come afterward. Technically, this isn't necessary in the VM, but modelling the calls this way makes the 'lowering' code simpler.
| virtual std::string Gyoji::mir::OperationGetMethod::get_description |
( |
| ) |
const |
|
protectedvirtual |
Produce a description of the operation.
This method returns a full description of the operation including the return-value, operands, and any other ancilary information about the operation. This is a string that is constructed dynamically when needed and is used almost exclusively by the "dump" method to provide debuginng information.
Reimplemented from Gyoji::mir::Operation.