#include <visitor_ge_operand2asm.g.hh>
Inheritance diagram for lestes::backend_v2::intercode::visitor_ge_operand2asm:

Public Member Functions | |
| ptr< ::lestes::backend_v2::intercode::ge_pi > | instruction_get () const |
| The method instruction_get returns the value of the field visitor_ge_operand2asm::instruction. | |
| void | instruction_set (const ptr< ::lestes::backend_v2::intercode::ge_pi > &) |
| The method instruction_set sets the field visitor_ge_operand2asm::instruction to the given value. | |
| virtual lstring | visit_ge_operand_reg (ptr< ::lestes::backend_v2::intercode::ge_operand_reg >) |
| virtual lstring | visit_ge_operand_mem (ptr< ::lestes::backend_v2::intercode::ge_operand_mem >) |
| virtual lstring | visit_ge_operand_imm (ptr< ::lestes::backend_v2::intercode::ge_operand_imm >) |
| virtual ptr< reflection_list > | reflection_get () const |
| for purposes of dumping | |
| virtual ptr< field_list_list > | field_values_get () const |
| for purposes of dumping | |
Static Public Member Functions | |
| static ptr< visitor_ge_operand2asm > | create (ptr< ::lestes::backend_v2::intercode::ge_pi > a__visitor_ge_operand2asm__instruction) |
| First generated factory method for class visitor_ge_operand2asm. | |
| static ptr< visitor_ge_operand2asm > | create () |
| Second generated factory method for class visitor_ge_operand2asm. | |
Protected Member Functions | |
| visitor_ge_operand2asm (ptr< ::lestes::backend_v2::intercode::ge_pi > a__visitor_ge_operand2asm__instruction) | |
| Generated constructor for class visitor_ge_operand2asm. | |
| virtual void | gc_mark () |
| Marking routine for class visitor_ge_operand2asm. | |
Private Attributes | |
| srp< ::lestes::backend_v2::intercode::ge_pi > | instruction |
| A pseudoinstruction that uses the operand. | |
Static Private Attributes | |
| static ptr< reflection_list > | reflection = reflection |
Definition at line 32 of file visitor_ge_operand2asm.g.hh.
| lestes::backend_v2::intercode::visitor_ge_operand2asm::visitor_ge_operand2asm | ( | ptr< ::lestes::backend_v2::intercode::ge_pi > | a__visitor_ge_operand2asm__instruction | ) | [protected] |
Generated constructor for class visitor_ge_operand2asm.
Generated constructor for class visitor_ge_operand2asm.
Definition at line 63 of file visitor_ge_operand2asm.g.cc.
Referenced by create().
00064 : visitor_ge_operand2lstring_gen_base(), instruction(a__visitor_ge_operand2asm__instruction) 00065 {}
| ptr<::lestes::backend_v2::intercode::ge_pi > lestes::backend_v2::intercode::visitor_ge_operand2asm::instruction_get | ( | ) | const |
The method instruction_get returns the value of the field visitor_ge_operand2asm::instruction.
Definition at line 27 of file visitor_ge_operand2asm.g.cc.
References instruction.
00028 { 00029 return instruction; 00030 }
| void lestes::backend_v2::intercode::visitor_ge_operand2asm::instruction_set | ( | const ptr< ::lestes::backend_v2::intercode::ge_pi > & | x | ) |
The method instruction_set sets the field visitor_ge_operand2asm::instruction to the given value.
| [in] | x | The new value to set visitor_ge_operand2asm::instruction to. |
Definition at line 36 of file visitor_ge_operand2asm.g.cc.
References instruction.
00037 { 00038 visitor_ge_operand2asm::instruction = x; 00039 }
| lstring lestes::backend_v2::intercode::visitor_ge_operand2asm::visit_ge_operand_reg | ( | ptr< ::lestes::backend_v2::intercode::ge_operand_reg > | ) | [virtual] |
Implements lestes::backend_v2::intercode::visitor_ge_operand2lstring_gen_base.
Definition at line 31 of file visitor_ge_operand2asm.cc.
References lestes::ui::code, and instruction.
00031 { 00032 lstring code; 00033 00034 ge_pi2reg__type::iterator it = ge->assigned_registers_get()->find(instruction); 00035 00036 if ( it!=ge->assigned_registers_get()->end() ) { 00037 code = tm_register::instance((tm_register_base::id_type)it->second)->asm_output_get(); 00038 } else { 00039 ::std::ostringstream oss; 00040 oss << ge->uid_get(); 00041 code = "!NO_REG(ge_operand_reg=" + oss.str() + ")"; 00042 } 00043 00044 return code; 00045 }
| lstring lestes::backend_v2::intercode::visitor_ge_operand2asm::visit_ge_operand_mem | ( | ptr< ::lestes::backend_v2::intercode::ge_operand_mem > | ) | [virtual] |
Implements lestes::backend_v2::intercode::visitor_ge_operand2lstring_gen_base.
Definition at line 47 of file visitor_ge_operand2asm.cc.
References lestes::ui::code, lassert, lestes::backend_v2::intercode::pi_mem_factory::MF_DECL, lestes::backend_v2::intercode::pi_mem_factory::MF_LIT, lestes::backend_v2::intercode::pi_mem_factory::MF_PTR_DEREF, lestes::backend_v2::intercode::pi_mem_factory::MF_STACK, and lestes::md::string_replace().
00047 { 00048 ptr<pi_mem_factory> factory = ge->factory_get(); 00049 00050 lstring code; 00051 00052 switch (factory->kind_get()) { 00053 case pi_mem_factory::MF_DECL: { 00054 ptr<pi_mf_decl> mf = factory.dncast<pi_mf_decl>(); 00055 00056 //Get id of the global declaration. 00057 lstring id = name_mangler::instance()->mangle(mf->decl_get()); 00058 00059 code = tm_asm::ent_global_mem_address_get(); 00060 code = string_replace(code, "$address", id); 00061 } break; 00062 00063 case pi_mem_factory::MF_LIT: { 00064 ptr<pi_lit> lit = factory.dncast<pi_mf_lit>()->lit_get(); 00065 00066 ptr<literal_loader> loader = literal_loader::instance(); 00067 00068 //Get id of literal. 00069 lstring id = loader->get_id_for_managed_literal(lit); 00070 lassert(!id.empty()); 00071 00072 code = tm_asm::ent_global_mem_address_get(); 00073 code = string_replace(code, "$address", id); 00074 } break; 00075 00076 case pi_mem_factory::MF_STACK: { 00077 ptr<pi_mf_stack> mf =factory.dncast<pi_mf_stack>(); 00078 00079 //Get stack offset. 00080 t_ssize offset = mf->offset_get(); 00081 lassert(!(offset%32)); 00082 00083 code = tm_asm::ent_stack_address_get(); 00084 00085 ::std::ostringstream oss; 00086 if ( offset >= 0 ) { 00087 oss << "+"; 00088 } 00089 00090 oss << offset/8; 00091 00092 code = string_replace(code, "$offset", oss.str()); 00093 } break; 00094 00095 case pi_mem_factory::MF_PTR_DEREF: { 00096 ptr<pi_mf_ptr_deref> mf = factory.dncast<pi_mf_ptr_deref>(); 00097 00098 //Get id of register holding address to be dereferenced. 00099 lstring reg_id = mf->ge_addr_get()->accept_visitor_ge_operand2lstring_gen_base(this); 00100 00101 code = reg_id; 00102 } break; 00103 00104 default: lassert(false); 00105 } 00106 00107 return " [" + code + "]"; 00108 }
| lstring lestes::backend_v2::intercode::visitor_ge_operand2asm::visit_ge_operand_imm | ( | ptr< ::lestes::backend_v2::intercode::ge_operand_imm > | ) | [virtual] |
Implements lestes::backend_v2::intercode::visitor_ge_operand2lstring_gen_base.
Definition at line 110 of file visitor_ge_operand2asm.cc.
| ptr< visitor_ge_operand2asm > lestes::backend_v2::intercode::visitor_ge_operand2asm::create | ( | ptr< ::lestes::backend_v2::intercode::ge_pi > | a__visitor_ge_operand2asm__instruction | ) | [static] |
First generated factory method for class visitor_ge_operand2asm.
This factory method for class visitor_ge_operand2asm takes values of all fields as arguments.
Definition at line 45 of file visitor_ge_operand2asm.g.cc.
References visitor_ge_operand2asm().
00046 { 00047 return ptr< visitor_ge_operand2asm > ( new visitor_ge_operand2asm(a__visitor_ge_operand2asm__instruction) ); 00048 }
| ptr< visitor_ge_operand2asm > lestes::backend_v2::intercode::visitor_ge_operand2asm::create | ( | ) | [static] |
Second generated factory method for class visitor_ge_operand2asm.
This factory method for class visitor_ge_operand2asm uses initializers.
Definition at line 54 of file visitor_ge_operand2asm.g.cc.
References visitor_ge_operand2asm().
00055 { 00056 return ptr< visitor_ge_operand2asm > ( new visitor_ge_operand2asm(NULL) ); 00057 }
| ptr< object::reflection_list > lestes::backend_v2::intercode::visitor_ge_operand2asm::reflection_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::backend_v2::intercode::visitor_ge_operand2lstring_gen_base.
Definition at line 67 of file visitor_ge_operand2asm.g.cc.
References lestes::std::list< T >::create(), reflection, and lestes::backend_v2::intercode::visitor_ge_operand2lstring_gen_base::reflection_get().
00068 { 00069 if (!reflection) { 00070 typedef class_reflection::field_metadata md; 00071 typedef class_reflection::field_metadata_list mdlist; 00072 ptr<mdlist> mdl = mdlist::create(); 00073 mdl->push_back( md::create( "instruction", "ge_pi" ) ); 00074 reflection = reflection_list::create( visitor_ge_operand2lstring_gen_base::reflection_get() ); 00075 reflection->push_back( class_reflection::create( "visitor_ge_operand2asm", mdl ) ); 00076 } 00077 return reflection; 00078 }
| ptr< object::field_list_list > lestes::backend_v2::intercode::visitor_ge_operand2asm::field_values_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::backend_v2::intercode::visitor_ge_operand2lstring_gen_base.
Definition at line 80 of file visitor_ge_operand2asm.g.cc.
References lestes::std::list< T >::create(), and lestes::backend_v2::intercode::visitor_ge_operand2lstring_gen_base::field_values_get().
00081 { 00082 ptr < field_list_list > result = visitor_ge_operand2lstring_gen_base::field_values_get(); 00083 result->push_back( value_list::create() ); 00084 result->back()->push_back( this->instruction ); 00085 return result; 00086 }
| void lestes::backend_v2::intercode::visitor_ge_operand2asm::gc_mark | ( | void | ) | [protected, virtual] |
Marking routine for class visitor_ge_operand2asm.
Marking routine is used for garbage collection.
Reimplemented from lestes::backend_v2::intercode::visitor_ge_operand2lstring_gen_base.
Definition at line 93 of file visitor_ge_operand2asm.g.cc.
References lestes::backend_v2::intercode::visitor_ge_operand2lstring_gen_base::gc_mark().
00094 { 00095 visitor_ge_operand2lstring_gen_base::gc_mark(); 00096 }
srp< ::lestes::backend_v2::intercode::ge_pi > lestes::backend_v2::intercode::visitor_ge_operand2asm::instruction [private] |
A pseudoinstruction that uses the operand.
Definition at line 72 of file visitor_ge_operand2asm.g.hh.
Referenced by instruction_get(), instruction_set(), and visit_ge_operand_reg().
ptr< object::reflection_list > lestes::backend_v2::intercode::visitor_ge_operand2asm::reflection = reflection [static, private] |
Reimplemented from lestes::backend_v2::intercode::visitor_ge_operand2lstring_gen_base.
Definition at line 73 of file visitor_ge_operand2asm.g.hh.
Referenced by reflection_get().
1.5.1-20070107